<?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>63797</bug_id>
          
          <creation_ts>2011-07-01 02:27:05 -0700</creation_ts>
          <short_desc>Add a possibility to retrieve the associated SVGAnimatedProperty object for a certain XML attribute</short_desc>
          <delta_ts>2011-07-09 07:35:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>41761</blocked>
    
    <blocked>12437</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>krit</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>431067</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-07-01 02:27:05 -0700</bug_when>
    <thetext>Add a possibility to retrieve the associated SVGAnimatedProperty object for a certain XML attribute.
Take SVGRectElement as example. I want a method that returns &quot;widthAnimated()&quot; when given the SVGNames::widthAttr. That&apos;s needed for our animVal support.

Unfortunately that would mean having to hand-write a lot of code, that looks similar to the existing fillAttributeToPropertyTypeMap/synchronizeProperty.
While looking for a better approach I found a possibility to remove all occurrences of synchronizeProperty/fillAttributeToPropertyTypeMap in the SVG*Element subclasses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432765</commentid>
    <comment_count>1</comment_count>
      <attachid>99828</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-07-06 07:30:36 -0700</bug_when>
    <thetext>Created attachment 99828
Patch

Jeez, 500k pure code changes. Yes, I&apos;m taking the brown paper bag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432767</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-06 07:33:36 -0700</bug_when>
    <thetext>Attachment 99828 did not pass style-queue:

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

Last 3072 characters of output:
whitespace/tab] [1]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:69:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:70:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:70:  Missing space before {  [whitespace/braces] [5]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:71:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:72:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:73:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:74:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:76:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:77:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:78:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:79:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:79:  Missing space before {  [whitespace/braces] [5]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:80:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:81:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:82:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:83:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:84:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:85:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:86:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:87:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:88:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:89:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/properties/SVGAnimatedProperty.h:94:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/SVGUseElement.h:108:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/SVGUseElement.h:109:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/SVGUseElement.h:110:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/SVGUseElement.h:111:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/SVGUseElement.h:112:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 47 in 168 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432768</commentid>
    <comment_count>3</comment_count>
      <attachid>99828</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-07-06 07:37:20 -0700</bug_when>
    <thetext>Comment on attachment 99828
Patch

Attachment 99828 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/8986772</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432770</commentid>
    <comment_count>4</comment_count>
      <attachid>99828</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-06 07:40:23 -0700</bug_when>
    <thetext>Comment on attachment 99828
Patch

Attachment 99828 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8986773</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432771</commentid>
    <comment_count>5</comment_count>
      <attachid>99828</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-06 07:41:10 -0700</bug_when>
    <thetext>Comment on attachment 99828
Patch

Attachment 99828 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/8986774</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432773</commentid>
    <comment_count>6</comment_count>
      <attachid>99831</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-07-06 07:53:30 -0700</bug_when>
    <thetext>Created attachment 99831
Patch v2

Fix merging problems due recent SVGAnimateElement.cpp changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432777</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-06 08:01:12 -0700</bug_when>
    <thetext>Attachment 99831 did not pass style-queue:

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

Source/WebCore/svg/SVGViewSpec.h:60:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/SVGFEDiffuseLightingElement.h:53:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/SVGFEDiffuseLightingElement.h:54:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/SVGFEDiffuseLightingElement.h:55:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/SVGFEDiffuseLightingElement.h:56:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/SVGTests.cpp:187:  Missing space after ,  [whitespace/comma] [3]
Source/WebCore/svg/properties/SVGAttributeToPropertyMap.cpp:23:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Source/WebCore/svg/SVGFELightElement.h:49:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/SVGFELightElement.h:50:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/SVGFELightElement.h:51:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/SVGFELightElement.h:52:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/SVGFELightElement.h:53:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/SVGFELightElement.h:54:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/SVGFELightElement.h:55:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/SVGFELightElement.h:56:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/svg/SVGFELightElement.h:57:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 16 in 168 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432797</commentid>
    <comment_count>8</comment_count>
      <attachid>99835</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-07-06 08:30:06 -0700</bug_when>
    <thetext>Created attachment 99835
Patch v3

Fix last style issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432815</commentid>
    <comment_count>9</comment_count>
      <attachid>99835</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-06 08:59:05 -0700</bug_when>
    <thetext>Comment on attachment 99835
Patch v3

Attachment 99835 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8988760</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432886</commentid>
    <comment_count>10</comment_count>
      <attachid>99835</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2011-07-06 11:21:28 -0700</bug_when>
    <thetext>Comment on attachment 99835
Patch v3

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

Just a first quick review, I think the ChangeLog can be improved a lot, especially the enum addition/changes.

&gt; Source/WebCore/ChangeLog:46
&gt; +        These lookups are all performed dynamically. Each synchronizeProperty() call does a lot of comparisions.

comparisions -&gt; comparisons

&gt; Source/WebCore/ChangeLog:58
&gt; +        Using these information, we can replace all the various synchronizeProperty/fillAttributeToPropertyMap implementations, with a single one in SVGElement.

Using this information

&gt; Source/WebCore/ChangeLog:102
&gt; +            This is the main piece of the logic that replaces the manual synchronizeProperty/fillAttributeToPropertyMap implementation. It expans to following:

expans -&gt; expands

&gt; Source/WebCore/ChangeLog:137
&gt; +                A generic way to synchronize a SVGAnimatedProperty with its XML DOM attribute. Any SVG DOM change to eg. &lt;rects&gt; x property will now trigger

&lt;rects&gt; -&gt; &lt;rect&gt;s

&gt; Source/WebCore/ChangeLog:147
&gt; +                This method is not used yet, but allows us to collect all SVGAnimatedProperies for a QualifiedName -- the initial goal for this patch.

SVGAnimatedProperies -&gt; SVGAnimatedProperties

&gt; Source/WebCore/ChangeLog:562
&gt; +        (WebCore::SVGPropertyTearOff::updateAnimVal):

These may need more in detail explanations. The one big thing I couldn&apos;t find in the ChangeLog is why the enums like SVG_TEXTPATH_SPACINGTYPE_AUTO &lt;-&gt; TextPathSpacingAuto change was done? You hint at it in the comments but I think it should be in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432978</commentid>
    <comment_count>11</comment_count>
      <attachid>99835</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2011-07-06 13:28:24 -0700</bug_when>
    <thetext>Comment on attachment 99835
Patch v3

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

Just a first quick review, I think the ChangeLog can be improved a lot, especially the enum addition/changes. r- because of my enum request and build failures mac-ews.

&gt;&gt; Source/WebCore/ChangeLog:46
&gt;&gt; +        These lookups are all performed dynamically. Each synchronizeProperty() call does a lot of comparisions.
&gt; 
&gt; comparisions -&gt; comparisons

comparisions -&gt; comparisons

&gt;&gt; Source/WebCore/ChangeLog:58
&gt;&gt; +        Using these information, we can replace all the various synchronizeProperty/fillAttributeToPropertyMap implementations, with a single one in SVGElement.
&gt; 
&gt; Using this information

Using this information

&gt;&gt; Source/WebCore/ChangeLog:102
&gt;&gt; +            This is the main piece of the logic that replaces the manual synchronizeProperty/fillAttributeToPropertyMap implementation. It expans to following:
&gt; 
&gt; expans -&gt; expands

expans -&gt; expands

&gt;&gt; Source/WebCore/ChangeLog:137
&gt;&gt; +                A generic way to synchronize a SVGAnimatedProperty with its XML DOM attribute. Any SVG DOM change to eg. &lt;rects&gt; x property will now trigger
&gt; 
&gt; &lt;rects&gt; -&gt; &lt;rect&gt;s

&lt;rects&gt; -&gt; &lt;rect&gt;s

&gt;&gt; Source/WebCore/ChangeLog:147
&gt;&gt; +                This method is not used yet, but allows us to collect all SVGAnimatedProperies for a QualifiedName -- the initial goal for this patch.
&gt; 
&gt; SVGAnimatedProperies -&gt; SVGAnimatedProperties

SVGAnimatedProperies -&gt; SVGAnimatedProperties

&gt;&gt; Source/WebCore/ChangeLog:562
&gt;&gt; +        (WebCore::SVGPropertyTearOff::updateAnimVal):
&gt; 
&gt; These may need more in detail explanations. The one big thing I couldn&apos;t find in the ChangeLog is why the enums like SVG_TEXTPATH_SPACINGTYPE_AUTO &lt;-&gt; TextPathSpacingAuto change was done? You hint at it in the comments but I think it should be in the ChangeLog.

These may need more in detail explanations. The one big thing I couldn&apos;t find in the ChangeLog is why the enums like SVG_TEXTPATH_SPACINGTYPE_AUTO &lt;-&gt; TextPathSpacingAuto change was done? You hint at it in the comments but I think it should be in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433333</commentid>
    <comment_count>12</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-07-07 00:54:55 -0700</bug_when>
    <thetext>Thanks for the first review Rob, I&apos;ll split this up into more pieces!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433445</commentid>
    <comment_count>13</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-07-07 07:51:28 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 99835 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=99835&amp;action=review
&gt; 
&gt; Just a first quick review, I think the ChangeLog can be improved a lot, especially the enum addition/changes.
Ok. I&apos;ve splitted out the enum parts into a seperated patch, it already landed, thanks to Dirks review.
Fixed all typos you mentioned as well.

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:562
&gt; &gt; +        (WebCore::SVGPropertyTearOff::updateAnimVal):
&gt; 
&gt; These may need more in detail explanations. The one big thing I couldn&apos;t find in the ChangeLog is why the enums like SVG_TEXTPATH_SPACINGTYPE_AUTO &lt;-&gt; TextPathSpacingAuto change was done? You hint at it in the comments but I think it should be in the ChangeLog.

Oops, the whole updateAnimVal changes, the isAnimating methods etc all don&apos;t belong in this patch, I&apos;ve removed all of that -- it belongs in the follow-up patch which actually implements animVal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433470</commentid>
    <comment_count>14</comment_count>
      <attachid>99986</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-07-07 08:33:55 -0700</bug_when>
    <thetext>Created attachment 99986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433483</commentid>
    <comment_count>15</comment_count>
      <attachid>99986</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-07 09:00:32 -0700</bug_when>
    <thetext>Comment on attachment 99986
Patch

Attachment 99986 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8995431</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433519</commentid>
    <comment_count>16</comment_count>
      <attachid>99999</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-07-07 09:40:45 -0700</bug_when>
    <thetext>Created attachment 99999
Patch v5

Fix release builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433521</commentid>
    <comment_count>17</comment_count>
      <attachid>99986</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-07-07 09:43:07 -0700</bug_when>
    <thetext>Comment on attachment 99986
Patch

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

I have general concerns about our new naming schema (not only in your patch). Properties should be CSS properties and attributes every XML attribute IMO. Not sure if it is a good idea to name it all properties. But it is indeed difficult, since we have attributes that are properties as well and some that are just attributes.

I&apos;d like Rob to look at the makros as well.

&gt; Source/WebCore/svg/SVGAElement.h:72
&gt; -    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
&gt; +     BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGAElement)
&gt; +          // This declaration used to define a non-virtual &quot;String&amp; target() const&quot; method, that clashes with &quot;virtual String Element::target() const&quot;.
&gt; +          // That&apos;s why it has been renamed to &quot;svgTarget&quot;, the CodeGenerators take care of calling svgTargetAnimated() instead of targetAnimated(), see CodeGenerator.pm.
&gt; +          DECLARE_ANIMATED_STRING(SVGTarget, svgTarget)
&gt; +          DECLARE_ANIMATED_STRING(Href, href)
&gt; +          DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
&gt; +     END_DECLARE_ANIMATED_PROPERTIES

Indentation wrong.

&gt; Source/WebCore/svg/SVGAnimateTransformElement.cpp:79
&gt; +    Vector&lt;AnimatedPropertyType&gt; propertyTypes;
&gt; +    targetElement-&gt;animatedPropertyTypeForAttribute(attributeName(), propertyTypes);

Why is this a vector? Is AnimatedPropertyType a SVGTransform here?

&gt; Source/WebCore/svg/SVGAnimateTransformElement.cpp:80
&gt; +    if (propertyTypes.isEmpty() || propertyTypes[0] != AnimatedTransformList)

Why do we just care about the first item?

&gt; Source/WebCore/svg/SVGElement.h:130
&gt; +    virtual bool haveLoadedRequiredResources();    

extra spaces are superfluous

&gt; Source/WebCore/svg/SVGMarkerElement.cpp:38
&gt; +// Define custom animated property &apos;orientType&apos;.
&gt; +const SVGPropertyInfo* SVGMarkerElement::orientTypePropertyInfo()
&gt; +{

Is this done because of value &apos;auto&apos;? Can you comment about this problem? IIRC we had problems with &apos;auto&apos; and the different types that are mapped to SVGAngle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434012</commentid>
    <comment_count>18</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-07-08 05:20:59 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 99986 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=99986&amp;action=review
&gt; 
&gt; I have general concerns about our new naming schema (not only in your patch). Properties should be CSS properties and attributes every XML attribute IMO.

In CSS everything is called a &quot;property&quot;. In SVG there&apos;s a clear distinction vs.
&quot;readonly SVGAnimatedLength x&quot; which is a SVG property, and &quot;&lt;rect x=...&gt;&quot; where x is an attribute.
When I speak of SVG properties, I mean those reachable through SVG DOM, everything else is an attribute (xAttr, etc..)

&gt; Not sure if it is a good idea to name it all properties. But it is indeed difficult, since we have attributes that are properties as well and some that are just attributes.
Aha, this I think is the source of confusion. We don&apos;t have attributes that are properties, etc. This is the wrong way to think about it.
We have CSS properties, SVG properties and XML DOM attributes.
Some SVG properties are _mapped_ to XML DOM attributes and vice-versa.
That&apos;s the idea behind the REGISTER_ANIMATED macros. We use it to map a SVG property to a XML DOM attribute or more than one SVG property to a single DOM attribute (eg. orientAttr).

&gt; 
&gt; I&apos;d like Rob to look at the makros as well.
Sure.

&gt; 
&gt; &gt; Source/WebCore/svg/SVGAElement.h:72
&gt; &gt; -    DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
&gt; &gt; +     BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGAElement)
&gt; &gt; +          // This declaration used to define a non-virtual &quot;String&amp; target() const&quot; method, that clashes with &quot;virtual String Element::target() const&quot;.
&gt; &gt; +          // That&apos;s why it has been renamed to &quot;svgTarget&quot;, the CodeGenerators take care of calling svgTargetAnimated() instead of targetAnimated(), see CodeGenerator.pm.
&gt; &gt; +          DECLARE_ANIMATED_STRING(SVGTarget, svgTarget)
&gt; &gt; +          DECLARE_ANIMATED_STRING(Href, href)
&gt; &gt; +          DECLARE_ANIMATED_BOOLEAN(ExternalResourcesRequired, externalResourcesRequired)
&gt; &gt; +     END_DECLARE_ANIMATED_PROPERTIES
&gt; 
&gt; Indentation wrong.
Fixed.

&gt; &gt; Source/WebCore/svg/SVGAnimateTransformElement.cpp:79
&gt; &gt; +    Vector&lt;AnimatedPropertyType&gt; propertyTypes;
&gt; &gt; +    targetElement-&gt;animatedPropertyTypeForAttribute(attributeName(), propertyTypes);
&gt; 
&gt; Why is this a vector? Is AnimatedPropertyType a SVGTransform here?
Because a single DOM attribute may map to multiple SVG properties.
orientAttr (DOM Attribute) -&gt; orientAngle/orientType (SVG properties)

&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimateTransformElement.cpp:80
&gt; &gt; +    if (propertyTypes.isEmpty() || propertyTypes[0] != AnimatedTransformList)
&gt; 
&gt; Why do we just care about the first item?
Because there&apos;s a 1:1 mapping between transformAttr and the transform property.

&gt; 
&gt; &gt; Source/WebCore/svg/SVGElement.h:130
&gt; &gt; +    virtual bool haveLoadedRequiredResources();    
&gt; 
&gt; extra spaces are superfluous
Fixed.

&gt; 
&gt; &gt; Source/WebCore/svg/SVGMarkerElement.cpp:38
&gt; &gt; +// Define custom animated property &apos;orientType&apos;.
&gt; &gt; +const SVGPropertyInfo* SVGMarkerElement::orientTypePropertyInfo()
&gt; &gt; +{
&gt; 
&gt; Is this done because of value &apos;auto&apos;? Can you comment about this problem? IIRC we had problems with &apos;auto&apos; and the different types that are mapped to SVGAngle.
It&apos;s an optimization to NOT use DECLARE_ANIMATED_ENUMERATION for orientType.

Say I&apos;m using:
myMarker.orientAngle.baseVal = someAngleWith10deg;
myMarker.orientType.baseVal = MARKER_ORIENT_AUTO;

Then I&apos;ll do alert(myMarker.getAttribute(&apos;orient&apos;)) in order to synchronize the SVG DOM with the XML DOM. First a call to  &quot;synchronizeOrientAngle&quot; would be triggered and then a call to &quot;synchronizeOrientType&quot;.

The first call to syncOrientAngle would set &quot;orient&quot; to &quot;10deg&quot;. The next call to synchronizeOrientAngle would set &quot;orient&quot; to &quot;auto&quot;. In general, this would work, but in order to save the extra work I&apos;m implementing synchronizeOrientType this way:

void SVGMarkerElement::synchronizeOrientType(void* contextElement)
{
    ASSERT(contextElement);
    SVGMarkerElement* ownerType = static_cast&lt;SVGMarkerElement*&gt;(contextElement);
    if (!ownerType-&gt;m_orientType.shouldSynchronize)
        return;

    // If orient is not auto, the previous call to synchronizeOrientAngle already set the orientAttr to the right angle.
    if (ownerType-&gt;m_orientType.value != SVGMarkerOrientAuto)
        return;

    DEFINE_STATIC_LOCAL(AtomicString, autoString, (&quot;auto&quot;));
    SVGAnimatedPropertySynchronizer&lt;true&gt;::synchronize(ownerType, orientTypePropertyInfo()-&gt;attributeName, autoString);
}

Note, that this was slightly different in the patch I uploaded - but I just realized, I did it wrong, this is the right version which avoids the extra work (as synchronizeOrientAngle is guaranteed to be called before synchronizeOrientType). Uploading a new patch that addresses all your comments.

Good that you brought this up again!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434021</commentid>
    <comment_count>19</comment_count>
      <attachid>100111</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-07-08 05:59:46 -0700</bug_when>
    <thetext>Created attachment 100111
Patch v6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434083</commentid>
    <comment_count>20</comment_count>
      <attachid>100111</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-07-08 08:58:09 -0700</bug_when>
    <thetext>Comment on attachment 100111
Patch v6

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

Looks great in general, just some questions.

&gt; Source/WebCore/ChangeLog:1182
&gt;  2011-07-07  Nikolas Zimmermann  &lt;nzimmermann@rim.com&gt;
&gt;  
&gt; +        Add a possibility to retrieve the associated SVGAnimatedProperty object for a certain XML attribute
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=63797
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        In order to prepare animVal support we need a way to map a given SVG DOM attribute to a SVGAnimatedProperty.
&gt; +        eg. SVGNames::xAttr -&gt; SVGRectElement::xAnimated(), etc. This will be needed to update the animVal of the
&gt; +        SVGAnimatedProperty, if an animation is running. It would required adding a new method to all SVG* classes
&gt; +        that define animated properties. Unfortunately we already have lots of repeated code in methods like
&gt; +        synchronizeProperty / fillAttributeToPropertyTypeMap. Look at SVGRectElement for example:
&gt; +
&gt; +        void SVGRectElement::synchronizeProperty(const QualifiedName&amp; attrName)
&gt; +        {

remove the double post please.

&gt; Source/WebCore/svg/SVGTests.cpp:49
&gt; +}
&gt; +
&gt; +

Omit one new line here.

&gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:103
&gt; +#define BEGIN_REGISTER_ANIMATED_PROPERTIES(OwnerType) \

You are creating the Map and the caller. BEGIN seems not to be the best choice. Together with the END_REGISTER makro it looks more like a class or namespace that surrounds the other content of the REGISTER_* makros. What about CREATE_ANIMATED_PROPERTIES_MAP or something similar?

&gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:123
&gt; +#define END_REGISTER_ANIMATED_PROPERTIES }

Ah you are really surrounding code. Now I see. Hm. I still think that BEGIN_REGISTER_ANIMATED_PROPERTIES does not tell enough about what it is doing. Leave the END_REGISTER and rename the other makro.

&gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:126
&gt; +#define BEGIN_DEFINE_ANIMATED_PROPERTIES

I may miss something, why do you define empty Makros? I guess they are just placeholders for the upcoming animation patches? If so please add a comment here. I&apos;d still like to know how they should look like. Otherwise I don&apos;t know if the naming is correct.

&gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:132
&gt; +        s_propertyInfo = new SVGPropertyInfo(AnimatedPropertyTypeEnum, \

do you free the static variable somewhere?

&gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:141
&gt; +#define END_DEFINE_ANIMATED_PROPERTIES

See comment above.

&gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:144
&gt; +#define BEGIN_DECLARE_ANIMATED_PROPERTIES(OwnerType) \

naming sounds ok here.

&gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:160
&gt; +    \

Can you omit the white space please?

&gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:165
&gt; +    \

Ditto.

&gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:170
&gt; +    \

Ditto.

&gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:176
&gt; +    \

continues. I&apos;ll stop here.

&gt; Source/WebCore/svg/properties/SVGAttributeToPropertyMap.h:44
&gt; +    void addProperties(SVGAttributeToPropertyMap&amp; map)
&gt; +    {
&gt; +        AttributeToPropertiesMap::iterator end = map.m_map.end();
&gt; +        for (AttributeToPropertiesMap::iterator it = map.m_map.begin(); it != end; ++it) {

I think this should be moved into a cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434263</commentid>
    <comment_count>21</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-07-08 13:16:19 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 100111 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=100111&amp;action=review
&gt; 
&gt; Looks great in general, just some questions.
Sure!

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:1182
&gt; remove the double post please.
Fixed.

&gt; 
&gt; &gt; Source/WebCore/svg/SVGTests.cpp:49
&gt; Omit one new line here.
Fixed.

&gt; &gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:103
&gt; &gt; +#define BEGIN_REGISTER_ANIMATED_PROPERTIES(OwnerType) \
&gt; 
&gt; You are creating the Map and the caller. BEGIN seems not to be the best choice. Together with the END_REGISTER makro it looks more like a class or namespace that surrounds the other content of the REGISTER_* makros. What about CREATE_ANIMATED_PROPERTIES_MAP or something similar?
&gt; 
&gt; &gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:123
&gt; &gt; +#define END_REGISTER_ANIMATED_PROPERTIES }
&gt; 
&gt; Ah you are really surrounding code. Now I see. Hm. I still think that BEGIN_REGISTER_ANIMATED_PROPERTIES does not tell enough about what it is doing. Leave the END_REGISTER and rename the other makro.

I chose BEGIN / END for consistency, I think it should stay this way.

&gt; 
&gt; &gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:126
&gt; &gt; +#define BEGIN_DEFINE_ANIMATED_PROPERTIES
&gt; 
&gt; I may miss something, why do you define empty Makros? I guess they are just placeholders for the upcoming animation patches? If so please add a comment here. I&apos;d still like to know how they should look like. Otherwise I don&apos;t know if the naming is correct.

It&apos;s intentionally empty, I added it to have consistent wrapping around the various DECLARE/DEFINE/REGISTER_ANIMATED_PROPERTY macros.

&gt; 
&gt; &gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:132
&gt; &gt; +        s_propertyInfo = new SVGPropertyInfo(AnimatedPropertyTypeEnum, \
&gt; 
&gt; do you free the static variable somewhere?
Nope, this is the same as using DEFINE_STATIC_LOCAL. I&apos;ll switch to use DEFINE_STATIC_LOCAL to hide this detail.

&gt; 
&gt; &gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:141
&gt; &gt; +#define END_DEFINE_ANIMATED_PROPERTIES
&gt; 
&gt; See comment above.
As I said, I only added those to have a consistent style:
BEGIN_FOO
   FOO_PROPERTY
...
END_FOO

In my initial version of this patch, I didn&apos;t have these empty macros, but I really like it now! :-)


&gt; &gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:144
&gt; &gt; +#define BEGIN_DECLARE_ANIMATED_PROPERTIES(OwnerType) \
&gt; 
&gt; naming sounds ok here.
&gt; 
&gt; &gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:160
&gt; &gt; +    \
&gt; 
&gt; Can you omit the white space please?
...
&gt; &gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:176
...
&gt; continues. I&apos;ll stop here.

Why? This makes the macros more readable, as the whole stuff is not so compact? At least I find it this way.

&gt; 
&gt; &gt; Source/WebCore/svg/properties/SVGAttributeToPropertyMap.h:44
&gt; &gt; +    void addProperties(SVGAttributeToPropertyMap&amp; map)
&gt; &gt; +    {
&gt; &gt; +        AttributeToPropertiesMap::iterator end = map.m_map.end();
&gt; &gt; +        for (AttributeToPropertiesMap::iterator it = map.m_map.begin(); it != end; ++it) {
&gt; 
&gt; I think this should be moved into a cpp.
Okay, will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434277</commentid>
    <comment_count>22</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-07-08 13:38:39 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; You are creating the Map and the caller. BEGIN seems not to be the best choice. Together with the END_REGISTER makro it looks more like a class or namespace that surrounds the other content of the REGISTER_* makros. What about CREATE_ANIMATED_PROPERTIES_MAP or something similar?
...
&gt; &gt; Ah you are really surrounding code. Now I see. Hm. I still think that BEGIN_REGISTER_ANIMATED_PROPERTIES does not tell enough about what it is doing. Leave the END_REGISTER and rename the other makro.
&gt; 
&gt; I chose BEGIN / END for consistency, I think it should stay this way.
Independent of consistency, Makros already hide a lot of code. So at  least the names should say what they are good for.

&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:126
&gt; &gt; &gt; +#define BEGIN_DEFINE_ANIMATED_PROPERTIES
&gt; &gt; 
&gt; &gt; I may miss something, why do you define empty Makros? I guess they are just placeholders for the upcoming animation patches? If so please add a comment here. I&apos;d still like to know how they should look like. Otherwise I don&apos;t know if the naming is correct.
&gt; 
&gt; It&apos;s intentionally empty, I added it to have consistent wrapping around the various DECLARE/DEFINE/REGISTER_ANIMATED_PROPERTY macros.
I think that is a bad idea. Every developer thinks about logic behind makros. It just doesn&apos;t make sense to add empty makros just because they look nice IMO.

&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:132
&gt; &gt; &gt; +        s_propertyInfo = new SVGPropertyInfo(AnimatedPropertyTypeEnum, \
&gt; &gt; 
&gt; &gt; do you free the static variable somewhere?
&gt; Nope, this is the same as using DEFINE_STATIC_LOCAL. I&apos;ll switch to use DEFINE_STATIC_LOCAL to hide this detail.
Ah ok, great.

&gt; BEGIN_FOO
&gt;    FOO_PROPERTY
&gt; ...
&gt; END_FOO
&gt; 
&gt; In my initial version of this patch, I didn&apos;t have these empty macros, but I really like it now! :-)
See comment above.

&gt; 
&gt; 
&gt; &gt; &gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:144
&gt; &gt; &gt; +#define BEGIN_DECLARE_ANIMATED_PROPERTIES(OwnerType) \
&gt; &gt; 
&gt; &gt; naming sounds ok here.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:160
&gt; &gt; &gt; +    \
&gt; &gt; 
&gt; &gt; Can you omit the white space please?
&gt; ...
&gt; &gt; &gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:176
&gt; ...
&gt; &gt; continues. I&apos;ll stop here.
&gt; 
&gt; Why? This makes the macros more readable, as the whole stuff is not so compact? At least I find it this way.
We avoid that on every file. We have dozens of cleanup patches removing whitespaces. So why should we do it on generated code? Nevertheless, I don&apos;t care that much about it, just think it is not a clean style. You can leave it if you want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434365</commentid>
    <comment_count>23</comment_count>
      <attachid>100180</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-07-08 16:11:40 -0700</bug_when>
    <thetext>Created attachment 100180
Patch v7

Removed the empty macros and the now unnecessary GetOwnerElementForType helper struct -- adapt CodeGenerators*.pm which were the last users of it.
This should fix all comments Dirk raised.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434459</commentid>
    <comment_count>24</comment_count>
      <attachid>100180</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-07-08 21:41:19 -0700</bug_when>
    <thetext>Comment on attachment 100180
Patch v7

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

Looks great. r=me. Just:

&gt; Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h:78
&gt; +#define BEGIN_REGISTER_ANIMATED_PROPERTIES(OwnerType) \

think about if you don&apos;t want to rename it like I mentioned in a previous comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434479</commentid>
    <comment_count>25</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-07-09 04:27:13 -0700</bug_when>
    <thetext>Landed in r90680. Thanks Dirk for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434494</commentid>
    <comment_count>26</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-07-09 07:35:57 -0700</bug_when>
    <thetext>Landed WinCE build fix in r90681.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99828</attachid>
            <date>2011-07-06 07:30:36 -0700</date>
            <delta_ts>2011-07-06 07:53:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>AnimValPrep.diff</filename>
            <type>text/plain</type>
            <size>490369</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwNDU2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTY0IEBACisyMDExLTA3LTA2ICBOaWtvbGFz
IFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIEFkZCBhIHBvc3Np
YmlsaXR5IHRvIHJldHJpZXZlIHRoZSBhc3NvY2lhdGVkIFNWR0FuaW1hdGVkUHJvcGVydHkgb2Jq
ZWN0IGZvciBhIGNlcnRhaW4gWE1MIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM3OTcKKworICAgICAgICBJbiBvcmRlciB0byBwcmVw
YXJlIGFuaW1WYWwgc3VwcG9ydCB3ZSBuZWVkIGEgd2F5IHRvIG1hcCBhIGdpdmVuIFNWRyBET00g
YXR0cmlidXRlIHRvIGEgU1ZHQW5pbWF0ZWRQcm9wZXJ0eS4KKyAgICAgICAgZWcuIFNWR05hbWVz
Ojp4QXR0ciAtPiBTVkdSZWN0RWxlbWVudDo6eEFuaW1hdGVkKCksIGV0Yy4gVGhpcyB3aWxsIGJl
IG5lZWRlZCB0byB1cGRhdGUgdGhlIGFuaW1WYWwgb2YgdGhlCisgICAgICAgIFNWR0FuaW1hdGVk
UHJvcGVydHksIGlmIGFuIGFuaW1hdGlvbiBpcyBydW5uaW5nLiBJdCB3b3VsZCByZXF1aXJlZCBh
ZGRpbmcgYSBuZXcgbWV0aG9kIHRvIGFsbCBTVkcqIGNsYXNzZXMKKyAgICAgICAgdGhhdCBkZWZp
bmUgYW5pbWF0ZWQgcHJvcGVydGllcy4gVW5mb3J0dW5hdGVseSB3ZSBhbHJlYWR5IGhhdmUgbG90
cyBvZiByZXBlYXRlZCBjb2RlIGluIG1ldGhvZHMgbGlrZQorICAgICAgICBzeW5jaHJvbml6ZVBy
b3BlcnR5IC8gZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLiBMb29rIGF0IFNWR1JlY3RF
bGVtZW50IGZvciBleGFtcGxlOgorCisgICAgICAgIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7CisgICAgICAgICAgICAg
ICAgc3luY2hyb25pemVYKCk7CisgICAgICAgICAgICAgICAgc3luY2hyb25pemVZKCk7CisgICAg
ICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpIHsKKyAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZVgo
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKKyAgICAgICAgICAgICAgICBzeW5j
aHJvbml6ZVkoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAuLi4KKyAgICAgICAgfQorCisgICAgICAgIG9yCisKKyAgICAgICAgdm9pZCBTVkdS
ZWN0RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAgICAg
CisgICAgICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKKyAg
ICAgICAgICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIs
IEFuaW1hdGVkTGVuZ3RoKTsKKyAgICAgICAgICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICAgICAgICAgIC4uLgor
ICAgICAgICB9CisKKyAgICAgICAgVGhlc2UgbG9va3VwcyBhcmUgYWxsIHBlcmZvcm1lZCBkeW5h
bWljYWxseS4gRWFjaCBzeW5jaHJvbml6ZVByb3BlcnR5KCkgY2FsbCBkb2VzIGEgbG90IG9mIGNv
bXBhcmlzaW9ucy4KKyAgICAgICAgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkgaXNu
J3QgdGhhdCBiYWQgYXMgdGhlIHJlc3VsdCBpcyBjYWNoZWQgaW4gYSBzdGF0aWMgSGFzaE1hcCBw
ZXItU1ZHUmVjdEVsZW1lbnQuCisgICAgICAgIFRoZXJlJ3Mgbm8gcmVhc29uIHRvIGRvIHRoZXNl
IHRoaW5ncyBkeW5hbWljYWxseSEKKworICAgICAgICBJbnNwaXJlZCBieSBKU0MsIEknbSBhZGRp
bmcgYSAic3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyBzX2Zvb1Byb3BlcnR5SW5mbyIgb2Jq
ZWN0IGZvciBlYWNoIGFuaW1hdGVkIFNWRyBwcm9wZXJ0eS4KKyAgICAgICAgRm9yIGV4YW1wbGUs
IGZvciBTVkdSZWN0RWxlbWVudHMgU1ZHQW5pbWF0ZWRMZW5ndGggeCBwcm9wZXJ0eSB3ZSdyZSBz
dG9yaW5nOgorICAgICAgICAtICJBbmltYXRlZFByb3BlcnR5VHlwZSB0eXBlIiAoQW5pbWF0ZWRM
ZW5ndGgpCisgICAgICAgIC0gImNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUiIChT
VkdOYW1lczo6eEF0dHIpCisgICAgICAgIC0gImNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlJ
ZGVudGlmaWVyIiAoU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpIC0tIG9ubHkgZGlmZmVyZW50
IGlmIE4td3JhcHBlcnMgbWFwIHRvIGEgc2luZ2xlIFhNTCBET00gYXR0cmlidXRlLCBlZy4gb3Jp
ZW50QXR0cikKKyAgICAgICAgLSAiU3luY2hyb25pemVQcm9wZXJ0eSBzeW5jaHJvbml6ZVByb3Bl
cnR5IiAoY2FsbGJhY2sgdG8gU1ZHUmVjdEVsZW1lbnQ6OnN5bmNocm9uaXplWCkKKyAgICAgICAg
LSAiTG9va3VwT3JDcmVhdGVXcmFwcGVyRm9yQW5pbWF0ZWRQcm9wZXJ0eSBsb29rdXBPckNyZWF0
ZVdyYXBwZXJGb3JBbmltYXRlZFByb3BlcnR5IiAoY2FsbGJhY2sgdG8gU1ZHUmVjdEVsZW1lbnQ6
OnhBbmltYXRlZCkKKworICAgICAgICBVc2luZyB0aGVzZSBpbmZvcm1hdGlvbiwgd2UgY2FuIHJl
cGxhY2UgYWxsIHRoZSB2YXJpb3VzIHN5bmNocm9uaXplUHJvcGVydHkvZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlNYXAgaW1wbGVtZW50YXRpb25zLCB3aXRoIGEgc2luZ2xlIG9uZSBpbiBTVkdFbGVt
ZW50LgorICAgICAgICBBbGwgdGhlc2UgYXJlIGF1dG8tZ2VuZXJhdGVkLCB1c2luZyB0aGUgc3Rh
bmRhcmQgbWFjcm9zIHVzZWQgdG8gZGVmaW5lL2RlY2xhcmUgU1ZHIGFuaW1hdGVkIHByb3BlcnRp
ZXMuIFRoaXMgcmVxdWlyZWQgc2V2ZXJhbCBjaGFuZ2VzIHRvIHRoZSBtYWNyb3MuCisgICAgICAg
IEhlcmUncyBhIHN1bW1hcnk6CisgICAgCisgICAgICAgICMxKSBJbiBhbGwgaGVhZGVycywgd3Jh
cCBERUNMQVJFX0FOSU1BVEVEXyogY2FsbHMsIGluIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVElFUyhDbGFzc05hbWUpIC8gRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyBibG9j
a3MuCisgICAgICAgIAorICAgICAgICAgICAgU2FtcGxlIGNoYW5nZSBmb3IgU1ZHUmVjdEVsZW1l
bnQ6CisgICAgICAgICAgICAtICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCisgICAg
ICAgICAgICAtICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCisgICAgICAgICAgICAt
ICAgIC4uLgorCisgICAgICAgICAgICArICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdSZWN0RWxlbWVudCkKKyAgICAgICAgICAgICsgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfTEVOR1RIKFgsIHgpCisgICAgICAgICAgICArICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSChZLCB5KQorICAgICAgICAgICAgKyAgICAgICAgIC4uLgorICAgICAgICAgICAgKyAgICBF
TkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAgICAgIzIpIEluIGFsbCBjcHAg
ZmlsZXMsIHdyYXAgREVGSU5FX0FOSU1BVEVEXyogY2FsbHMsIGluIEJFR0lOX0RFRklORV9BTklN
QVRFRF9QUk9QRVJUSUVTIC8gRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTIGJsb2Nrcy4K
KyAgICAKKyAgICAgICAgICAgIFNhbXBsZSBjaGFuZ2UgZm9yIFNWR1JlY3RFbGVtZW50OgorICAg
ICAgICAgICAgLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVz
Ojp4QXR0ciwgWCwgeCkKKyAgICAgICAgICAgIC1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1Jl
Y3RFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCisgICAgICAgICAgICAtLi4uCisKKyAg
ICAgICAgICAgICtCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgICAgICAgICAg
KyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6eEF0
dHIsIFgsIHgpCisgICAgICAgICAgICArICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVj
dEVsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKKyAgICAgICAgICAgICsgICAgLi4uCisg
ICAgICAgICAgICArRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAgICAgCisg
ICAgICAgICAgICBUaGlzIG5vdyBnZW5lcmF0ZXMgdGhlICJzdGF0aWMgY29uc3QgU1ZHUHJvcGVy
dHlJbmZvIiBvYmplY3RzIGZvciBlYWNoIGFuaW1hdGVkIFNWRyBwcm9wZXJ0eS4KKworICAgICAg
ICAjMykgSW4gYWxsIGNwcCBmaWxlcywgYWRkIGEgbmV3IHNlY3Rpb24gd3JhcHBlZCBpbiBCRUdJ
Tl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKENsYXNzTmFtZSAvIEVORF9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTIGJsb2NrczoKKyAgICAgICAgCisgICAgICAgICAgICBTYW1wbGUg
Y2hhbmdlIGZvciBTVkdSZWN0RWxlbWVudDoKKyAgICAgICAgICAgICtCRUdJTl9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR1JlY3RFbGVtZW50KQorICAgICAgICAgICAgKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh4KQorICAgICAgICAgICAgKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5KQorICAgICAgICAgICAgKyAgICAuLi4KKyAgICAg
ICAgICAgICsgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAgICAgICAgICArICAgIFJFR0lTVEVSX1BBUkVOVF9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorICAgICAgICAgICAgK0VORF9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAgICAgICAgIFRoaXMgaXMgdGhlIG1haW4gcGllY2Ug
b2YgdGhlIGxvZ2ljIHRoYXQgcmVwbGFjZXMgdGhlIG1hbnVhbCBzeW5jaHJvbml6ZVByb3BlcnR5
L2ZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwIGltcGxlbWVudGF0aW9uLiBJdCBleHBhbnMgdG8g
Zm9sbG93aW5nOgorCisgICAgICAgICAgICBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBTVkdS
ZWN0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFw
LCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlNYXAsICgpKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdSZWN0RWxl
bWVudCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgU1ZHQXR0cmlidXRlVG9Qcm9w
ZXJ0eU1hcCYgbWFwID0gU1ZHUmVjdEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKTsK
KyAgICAgICAgICAgICAgICBpZiAoIW1hcC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICBtYXAuYWRkUHJvcGVydHkoU1ZHUmVjdEVsZW1lbnQ6
OnhQcm9wZXJ0eUluZm8oKSk7CisgICAgICAgICAgICAgICAgbWFwLmFkZFByb3BlcnR5KFNWR1Jl
Y3RFbGVtZW50Ojp5UHJvcGVydHlJbmZvKCkpOworICAgICAgICAgICAgICAgIG1hcC5hZGRQcm9w
ZXJ0eShTVkdSZWN0RWxlbWVudDo6d2lkdGhQcm9wZXJ0eUluZm8oKSk7CisgICAgICAgICAgICAg
ICAgbWFwLmFkZFByb3BlcnR5KFNWR1JlY3RFbGVtZW50OjpoZWlnaHRQcm9wZXJ0eUluZm8oKSk7
CisgICAgICAgICAgICAgICAgbWFwLmFkZFByb3BlcnR5KFNWR1JlY3RFbGVtZW50OjpyeFByb3Bl
cnR5SW5mbygpKTsKKyAgICAgICAgICAgICAgICBtYXAuYWRkUHJvcGVydHkoU1ZHUmVjdEVsZW1l
bnQ6OnJ5UHJvcGVydHlJbmZvKCkpOworICAgICAgICAgICAgICAgIG1hcC5hZGRQcm9wZXJ0eShT
VkdSZWN0RWxlbWVudDo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFByb3BlcnR5SW5mbygpKTsK
KyAgICAgICAgICAgICAgICBtYXAuYWRkUHJvcGVydGllcyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpKTsKKyAgICAgICAgICAgICAgICBtYXAu
YWRkUHJvcGVydGllcyhTVkdUZXN0czo6YXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgQSBzaW5nbGUtaW5zdGFuY2Ugb2YgU1ZHQXR0cmlidXRl
VG9Qcm9wZXJ0eU1hcCBpcyBjcmVhdGVkIGZvciBlYWNoIFNWRypFbGVtZW50LiBUaGUgY29uc3Ry
dWN0b3Igb2YgU1ZHUmVjdEVsZW1lbnQgaXMgc3VwcG9zZWQgdG8gY2FsbAorICAgICAgICAgICAg
cmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdSZWN0RWxlbWVudCgpLCB3aGljaCBjb2xs
ZWN0cyBhbGwgcHJvcGVydGllcyBvZiBTVkdSZWN0RWxlbWVudCBhbmQgYWxsIGl0cyBwYXJlbnQg
Y2xhc3NlcyBhbmQgc3RvcmVzIHRoZW0KKyAgICAgICAgICAgIGluIGEgVmVjdG9yPGNvbnN0IFNW
R1Byb3BlcnR5SW5mbyo+LiBUaGlzIFZlY3RvciBpcyBzdG9yZWQgaW4gYSBIYXNoTWFwPFF1YWxp
ZmllZE5hbWUsIFZlY3Rvcjxjb25zdCBTVkdQcm9wZXJ0eUluZm8qPiA+IHdoZXJlIHRoZSBrZXkK
KyAgICAgICAgICAgIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSAoZWcuIFNWR05hbWVzOjp4QXR0ciAt
PiBTVkdSZWN0RWxlbWVudDo6eFByb3BlcnR5SW5mbykuIFRoaXMgaXMgb25seSBkb25lIF9vbmNl
XyBwZXIgU1ZHUmVjdEVsZW1lbnQuCisKKyAgICAgICAgICAgIFNWR0VsZW1lbnQgY29udGFpbnMg
YSAidmlydHVhbCBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBsb2NhbEF0dHJpYnV0ZVRvUHJv
cGVydHlNYXAoKSIgbWV0aG9kLCBhbmQgU1ZHUmVjdEVsZW1lbnQgb3ZlcnJpZGVzIGl0CisgICAg
ICAgICAgICBhbmQgcmV0dXJucyBTVkdSZWN0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eU1h
cCgpICh3aGljaCBpcyBzdGF0aWMhKSAtLSB0aGlzIGlzIGhpZGRlbiBhZ2FpbiBpbiB0aGUgbWFj
cm9zLCBubyBuZWVkIHRvIHdyaXRlIGFueSBjb2RlLgorCisgICAgICAgICAgICBTVkdBdHRyaWJ1
dGVUb1Byb3BlcnR5TWFwIHByb3ZpZGVzIGZvbGxvd2luZyBBUEk6CisgICAgICAgICAgICAtIGJv
b2wgc3luY2hyb25pemVQcm9wZXJ0eShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICAgICAgICAgIC0gdm9pZCBzeW5jaHJv
bml6ZVByb3BlcnRpZXMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCisgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBBIGdlbmVyaWMgd2F5IHRvIHN5bmNocm9uaXplIGEgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eSB3aXRoIGl0cyBYTUwgRE9NIGF0dHJpYnV0ZS4gQW55IFNWRyBET00gY2hhbmdl
IHRvIGVnLiA8cmVjdHM+IHggcHJvcGVydHkgd2lsbCBub3cgdHJpZ2dlcgorICAgICAgICAgICAg
ICAgIGNvbnRleHRFbGVtZW50LT5sb2NhbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKS5zeW5jaHJv
bml6ZVByb3BlcnR5KHRoaXMsIFNWR05hbWVzOjp4QXR0cikKKyAgICAgICAgICAgICAgICBUaGUg
U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCB3aWxsIGFzayBpdHMgSGFzaE1hcCBmb3IgdGhlIFZl
Y3RvciBjb250YWluaW5nIHRoZSBwcm9wZXJ0aWVzIGZvciBTVkdOYW1lczo6eEF0dHIgKGluIHRo
YXQgY2FzZSwganVzdCBvbmUgeEFuaW1hdGVkKCkpLgorCisgICAgICAgICAgICAtIHZvaWQgYW5p
bWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSwgVmVjdG9yPEFuaW1hdGVkUHJvcGVydHlUeXBlPiYgcHJvcGVydHlUeXBlcykKKwor
ICAgICAgICAgICAgICAgIFRoaXMgbWV0aG9kIHJlcGxhY2VzIHRoZSBmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eU1hcCBpbXBsZW1lbnRhdGlvbnMgZXZlcnl3aGVyZS4KKyAgICAgICAgCisgICAgICAg
ICAgICAtIHZvaWQgYW5pbWF0ZWRQcm9wZXJ0aWVzRm9yQXR0cmlidXRlKFNWR0VsZW1lbnQqIGNv
bnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBWZWN0b3I8
UmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+ID4mIHByb3BlcnRpZXMpOworCisgICAgICAgICAg
ICAgICAgVGhpcyBtZXRob2QgaXMgbm90IHVzZWQgeWV0LCBidXQgYWxsb3dzIHVzIHRvIGNvbGxl
Y3QgYWxsIFNWR0FuaW1hdGVkUHJvcGVyaWVzIGZvciBhIFF1YWxpZmllZE5hbWUgLS0gdGhlIGlu
aXRpYWwgZ29hbCBmb3IgdGhpcyBwYXRjaC4KKworICAgICAgICAjNCkgSW4gYWxsIGNwcCBmaWxl
cywgYWRkIGEgY2FsbCB0byAicmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JDbGFzc05hbWUo
KSIgaW4gdGhlIGNvbnN0cnVjdG9yLiBGb3JnZXR0aW5nIHRoaXMgd2lsbCByZXN1bHQgaW4gYSBj
b21waWxlIGVycm9yLgorCisgICAgICAgIERvZXNuJ3QgYWZmZWN0IGFueSB0ZXN0cywgb25seSBn
aXZlcyBwZXJmb3JtYW5jZSBiZW5lZml0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBB
ZGQgc3ZnL3Byb3BlcnRpZXMvKFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuKnxTVkdQcm9wZXJ0
eUluZm8uaCkgdG8gYnVpbGQuCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogRGl0dG8u
CisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnBybzog
RGl0dG8uCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpdHRvLgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OmFuZ2xlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFya2VyOjptYXJrZXJUcmFuc2Zvcm1hdGlvbik6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6Om1hcmtlclVuaXRzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR1RleHRQYXRoOjpSZW5kZXJTVkdUZXh0UGF0aCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdUZXh0UGF0aDo6ZXhhY3RBbGlnbm1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHVGV4dFBhdGg6OnN0cmV0Y2hNZXRob2QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRv
cjw8KToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlQ29tbW9uR3JhZGllbnRQcm9wZXJ0aWVzKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRDaHVua0J1aWxkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGV4dENodW5rQnVpbGRlcjo6YWRkVGV4dENodW5rKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVGV4dExheW91dEVuZ2luZTo6cGFyZW50RGVmaW5lc1RleHRMZW5ndGgpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGV4dExheW91dEVuZ2luZTo6YmVnaW5UZXh0UGF0aExheW91dCk6Cisg
ICAgICAgICogc3ZnL0dyYWRpZW50QXR0cmlidXRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
ZGllbnRBdHRyaWJ1dGVzOjpHcmFkaWVudEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhZGllbnRBdHRyaWJ1dGVzOjpzcHJlYWRNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
ZGllbnRBdHRyaWJ1dGVzOjpzZXRTcHJlYWRNZXRob2QpOgorICAgICAgICAqIHN2Zy9TVkdBRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBRWxlbWVudDo6U1ZHQUVsZW1lbnQpOgor
ICAgICAgICAqIHN2Zy9TVkdBRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1l
bnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
RWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQUVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2
Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQWx0R2x5cGhF
bGVtZW50OjpTVkdBbHRHbHlwaEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdBbHRHbHlwaEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OlNWR0FuaW1hdGVFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpoYXNWYWxpZEF0dHJpYnV0ZVR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmRldGVybWluZUFuaW1hdGVkUHJvcGVy
dHlUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVB
bmltYXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpkZXRl
cm1pbmVQcm9wZXJ0eVZhbHVlVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVs
ZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGVFbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmVuc3VyZUFuaW1hdG9yKToKKyAgICAgICAgKiBz
dmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZVRyYW5zZm9y
bUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1l
bnQ6Omhhc1ZhbGlkQXR0cmlidXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
VHJhbnNmb3JtRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmNhbGN1bGF0
ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVs
ZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZVRy
YW5zZm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRBbmdsZS5oOgorICAg
ICAgICAqIHN2Zy9TVkdBbmltYXRlZEJvb2xlYW4uaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbi5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEludGVnZXIuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0
ZWRMZW5ndGhMaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmg6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRSZWN0
Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmg6CisgICAgICAgICogc3ZnL1NW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpTVkdBbmltYXRlZFR5cGUp
OgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVkVHlwZTo6dHlwZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1h
dG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGVBbmltYXRvcjo6U1ZHQW5p
bWF0ZWRUeXBlQW5pbWF0b3IpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OlNWR0FuaW1hdGlvbkVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6Y3VycmVudFZh
bHVlc0ZvclZhbHVlc0FuaW1hdGlvbik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlvbkVsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OnN5bmNocm9uaXpl
UmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50
OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRpb25FbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBz
dmcvU1ZHQW5pbWF0b3JGYWN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRvckZh
Y3Rvcnk6OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVudDo6U1ZHQ2lyY2xlRWxlbWVudCk6CisgICAg
ICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NpcmNs
ZUVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdDaXJjbGVFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdl
KToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6U1ZHQ2xpcFBhdGhFbGVtZW50KToKKyAgICAgICAgKiBz
dmcvU1ZHQ2xpcFBhdGhFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVs
ZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdDbGlwUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFn
ZSk6CisgICAgICAgICogc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50
OjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0N1
cnNvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ3Vyc29yRWxlbWVudDo6U1ZH
Q3Vyc29yRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0N1cnNvckVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJl
cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVp
cmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JFbGVtZW50OjpzeW5j
aHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHRGVmc0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRGVmc0VsZW1lbnQ6OlNWR0RlZnNFbGVtZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHRGVmc0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RlZnNF
bGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRGVmc0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0RlZnNFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAg
ICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50
OjphbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdFbGVtZW50Ojp1cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdFbGVtZW50Ojpsb2NhbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXApOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgor
ICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN5
bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50
OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHRWxs
aXBzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OlNW
R0VsbGlwc2VFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVh
dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnN5bmNocm9uaXpl
UmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50
OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OlNWR0ZFQmxl
bmRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25l
bnRUcmFuc2ZlckVsZW1lbnQ6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9z
aXRlRWxlbWVudDo6U1ZHRkVDb21wb3NpdGVFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVD
b21wb3NpdGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpT
VkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OlNW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpT
VkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpTVkdGRURyb3BT
aGFkb3dFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZF
Rmxvb2RFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OlNWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUltYWdlRWxlbWVudDo6U1ZHRkVJbWFnZUVsZW1lbnQpOgorICAgICAgICAqIHN2
Zy9TVkdGRUltYWdlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6U1ZHRkVMaWdodEVsZW1l
bnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdGRU1lcmdlRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU1v
cnBob2xvZ3lFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQ6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBo
b2xvZ3lFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRU9mZnNldEVsZW1lbnQ6OlNWR0ZFT2Zmc2V0RWxlbWVudCk6
CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQ6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQpOgorICAg
ICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0ZFVGlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxlbWVu
dDo6U1ZHRkVUaWxlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdG
aWx0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6OlNW
R0ZpbHRlckVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OlNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAgICAgICAqIHN2Zy9TVkdGaXRUb1Zp
ZXdCb3guY3BwOgorICAgICAgICAqIHN2Zy9TVkdGaXRUb1ZpZXdCb3guaDoKKyAgICAgICAgKiBz
dmcvU1ZHRm9udEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEVsZW1lbnQ6
OlNWR0ZvbnRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEVsZW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZvbnRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAg
KiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQ6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zv
cmVpZ25PYmplY3RFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRF
eHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50Ojpz
eW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHR0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1lbnQ6OlNWR0dFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHR0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dFbGVtZW50OjpzeW5j
aHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1lbnQ6
OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dF
bGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHR2x5
cGhFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHR2x5cGhFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFk
aWVudEVsZW1lbnQ6OlNWR0dyYWRpZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdH
cmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdH
cmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6
bmVlZHNQZW5kaW5nUmVzb3VyY2VIYW5kbGluZyk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OlNWR0ltYWdlRWxl
bWVudCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVt
TGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6U1ZHTGluZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9T
VkdMaW5lRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZUVsZW1lbnQ6OnN5bmNo
cm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lRWxlbWVu
dDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGluZUVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9T
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50OjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQpOgorICAgICAgICAqIHN2
Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTVBhdGhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01QYXRoRWxlbWVudDo6U1ZHTVBhdGhFbGVt
ZW50KToKKyAgICAgICAgKiBzdmcvU1ZHTVBhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R01hcmtlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6
b3JpZW50VHlwZVByb3BlcnR5SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVt
ZW50OjpTVkdNYXJrZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVs
ZW1lbnQ6OnNldE9yaWVudFRvQXV0byk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVt
ZW50OjpzZXRPcmllbnRUb0FuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1l
bnQ6OnN5bmNocm9uaXplT3JpZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJF
bGVtZW50Ojpsb29rdXBPckNyZWF0ZU9yaWVudFR5cGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR01hcmtlckVsZW1lbnQ6Om9yaWVudFR5cGVBbmltYXRlZCk6CisgICAgICAgICogc3Zn
L1NWR01hcmtlckVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6
Om9yaWVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6b3JpZW50
VHlwZUJhc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpzZXRP
cmllbnRUeXBlQmFzZVZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHTWFza0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6OlNWR01hc2tFbGVtZW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHTWFza0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVt
ZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TWFza0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR01hc2tFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAg
ICAgKiBzdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR01p
c3NpbmdHbHlwaEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OmRQcm9wZXJ0eUluZm8pOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OlNWR1BhdGhFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhFbGVtZW50Ojpsb29rdXBPckNyZWF0ZURXcmFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpzeW5jaHJvbml6ZUQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0aEVsZW1lbnQ6OnBhdGhTZWdMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dGhFbGVtZW50OjphbmltYXRlZFBhdGhTZWdMaXN0KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpwYXRoQnl0ZVN0cmVh
bSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJl
ZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpzeW5jaHJvbml6
ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6
c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdXaXRo
Q29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ1dpdGhDb250ZXh0Ojphbmlt
YXRlZFByb3BlcnR5KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OlNWR1BhdHRlcm5FbGVtZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dHRlcm5FbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxh
bmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHUG9seUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUG9seUVsZW1lbnQ6OnBvaW50c1Byb3BlcnR5SW5mbyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQb2x5RWxlbWVudDo6U1ZHUG9seUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUG9seUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVBvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQb2x5RWxlbWVudDo6bG9va3VwT3JDcmVhdGVQb2ludHNXcmFwcGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BvbHlFbGVtZW50Ojpwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9s
eUVsZW1lbnQ6OmFuaW1hdGVkUG9pbnRzKToKKyAgICAgICAgKiBzdmcvU1ZHUG9seUVsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVk
RmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OnN5bmNocm9uaXpl
UmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50Ojpz
eW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dDo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3Jh
ZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50OjpTVkdSZWN0RWxlbWVudCk6CisgICAgICAgICog
c3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6
c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RF
bGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZWN0RWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICog
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6
U1ZHU1ZHRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5z
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3Rl
bUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTY3JpcHRFbGVtZW50OjpTVkdTY3JpcHRFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6U1ZHU3RvcEVsZW1lbnQpOgor
ICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6OlNWR1N0eWxl
ZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVydHlUb1R5cGVNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JB
dHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
U3dpdGNoRWxlbWVudDo6U1ZHU3dpdGNoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1N3aXRj
aEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N3aXRjaEVsZW1lbnQ6OnN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTd2l0Y2hFbGVtZW50
OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
d2l0Y2hFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcv
U1ZHU3ltYm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTeW1ib2xFbGVtZW50
OjpTVkdTeW1ib2xFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHU3ltYm9sRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdUUmVmRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
UmVmRWxlbWVudDo6U1ZHVFJlZkVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdUUmVmRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9T
VkdUU3BhbkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGVzdHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGVzdHM6OnJlcXVpcmVkRmVhdHVyZXNQcm9wZXJ0eUluZm8pOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnJlcXVpcmVkRXh0ZW5zaW9uc1Byb3BlcnR5SW5mbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6c3lzdGVtTGFuZ3VhZ2VQcm9wZXJ0eUluZm8pOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OmF0dHJpYnV0ZVRvUHJvcGVydHlNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2Up
OgorICAgICAgICAqIHN2Zy9TVkdUZXN0cy5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVu
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50Ojp0
ZXh0TGVuZ3RoUHJvcGVydHlJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50
RWxlbWVudDo6U1ZHVGV4dENvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
eHRDb250ZW50RWxlbWVudDo6c3luY2hyb25pemVUZXh0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6bG9va3VwT3JDcmVhdGVUZXh0TGVuZ3RoV3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnRleHRMZW5ndGhB
bmltYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN5bmNocm9uaXplUmVx
dWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6
OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
eHRDb250ZW50RWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICog
c3ZnL1NWR1RleHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRFbGVtZW50
OjpTVkdUZXh0RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1RleHRFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
ZXh0UGF0aEVsZW1lbnQ6OlNWR1RleHRQYXRoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1Rl
eHRQYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OlNWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHA6CisgICAgICAgICog
c3ZnL1NWR1RpdGxlRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGl0bGVFbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpTVkdVc2VFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6
c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVs
ZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1VzZUVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2
Zy9TVkdWaWV3RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3RWxlbWVudDo6
U1ZHVmlld0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdWaWV3U3BlYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6
U1ZHVmlld1NwZWMpOgorICAgICAgICAqIHN2Zy9TVkdWaWV3U3BlYy5oOgorICAgICAgICAqIHN2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY6OnJh
d0FuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlz
dFByb3BlcnR5VGVhck9mZi5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRMaXN0UHJv
cGVydHlUZWFyT2ZmOjppc0FuaW1hdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
ZExpc3RQcm9wZXJ0eVRlYXJPZmY6OnJhd0FuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVkUHJvcGVydHk6OnVwZGF0ZUFuaW1WYWwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cFdyYXBwZXIpOgorICAgICAgICAqIHN2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlNYWNyb3MuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZi5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY6OmlzQW5pbWF0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmOjpyYXdBbmltYXRlZFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmOjp1cGRhdGVBbmltVmFsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmOjpTVkdBbmltYXRlZFBy
b3BlcnR5VGVhck9mZik6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRTdGF0
aWNQcm9wZXJ0eVRlYXJPZmYuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkU3RhdGlj
UHJvcGVydHlUZWFyT2ZmOjppc0FuaW1hdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZjo6cmF3QW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICog
c3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YW5pbWF0ZWRQcm9wZXJ0
aWVzRm9yQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVU
b1Byb3BlcnR5TWFwLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Q
cm9wZXJ0eU1hcDo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwOjp+U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwOjppc0VtcHR5KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA6OmFkZFByb3BlcnRp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YWRkUHJv
cGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YW5p
bWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0
cmlidXRlVG9Qcm9wZXJ0eU1hcDo6c3luY2hyb25pemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA6OnN5bmNocm9uaXplUHJvcGVydHkpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YW5pbWF0ZWRQcm9w
ZXJ0eSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlJbmZvOjpTVkdQcm9wZXJ0eUluZm8pOgor
ICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUHJvcGVydHlUZWFyT2ZmOjp1cGRhdGVBbmltVmFsKToKKwogMjAxMS0wNy0w
NiAgQW5kcmFzIEJlY3NpICA8YWJlY3NpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4ICJ3YXJu
aW5nOiBhIGA7JyBtaWdodCBiZSBuZWVkZWQgYXQgdGhlIGVuZCBvZiBhY3Rpb24gY29kZSIKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xODA2LDYgKzE4MDYsNyBAQCBJRiAo
RU5BQkxFX1NWRykKICAgICAgICAgc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAK
ICAgICAgICAgc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcAogICAgICAgICBzdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAorICAgICAgICBzdmcvcHJvcGVy
dGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcAogICAgICAgICBzdmcvcHJvcGVydGll
cy9TVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAKICAgICApCiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zMzkzLDYgKzMzOTMsOCBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9QYXR0ZXJuQXR0cmlidXRlcy5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZEVudW1lcmF0aW9uUHJv
cGVydHlUZWFyT2ZmLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmggXApAQCAtMzQwOCw2ICsz
NDEwLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmggXAorCVNvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5SW5mby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdQcm9wZXJ0eVRlYXJPZmYuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oIFwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDc3LDYgKzEwNzcsNyBAQAogICAgICAgICAgICAgJ3N2Zy9TVkdUcmFu
c2Zvcm1MaXN0LmgnLAogICAgICAgICAgICAgJ3N2Zy9hbmltYXRpb24vU01JTFRpbWUuaCcsCiAg
ICAgICAgICAgICAnc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oJywKKyAgICAgICAgICAg
ICdzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmgnLAogICAgICAgICAg
ICAgJ3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYu
aCcsCiAgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlU
ZWFyT2ZmLmgnLAogICAgICAgICAgICAgJ3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHkuaCcsCkBAIC0xMDkwLDYgKzEwOTEsNyBAQAogICAgICAgICAgICAgJ3N2Zy9wcm9wZXJ0aWVz
L1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCcsCiAgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMv
U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCcsCiAgICAgICAgICAgICAnc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJvcGVydHkuaCcsCisgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHUHJv
cGVydHlJbmZvLmgnLAogICAgICAgICAgICAgJ3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVh
ck9mZi5oJywKICAgICAgICAgICAgICdzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5o
JywKICAgICAgICAgICAgICdzdmcvcHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFy
T2ZmLmgnLApAQCAtNjAwMCw2ICs2MDAyLDcgQEAKICAgICAgICAgICAgICdzdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXIuaCcsCiAgICAgICAgICAgICAnc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyQnVpbGRlci5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZpbHRlckJ1aWxkZXIuaCcsCisgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0
cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCcsCiAgICAgICAgICAgICAnc3Zn
L3Byb3BlcnRpZXMvU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwJywKICAgICAgICAg
ICAgICd3ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAnLApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5wcm8JKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHdv
cmtpbmcgY29weSkKQEAgLTIyOTgsNiArMjI5OCw3IEBAIEhFQURFUlMgKz0gXAogICAgIHN2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaCBcCiAgICAgc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyLmggXAogICAgIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIFwKKyAgICBz
dmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmggXAogICAgIHN2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCBcCiAgICAgc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmggXAogICAgIHN2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCBcCkBAIC0y
MzEyLDYgKzIzMTMsNyBAQCBIRUFERVJTICs9IFwKICAgICBzdmcvcHJvcGVydGllcy9TVkdMaXN0
UHJvcGVydHlUZWFyT2ZmLmggXAogICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR1BhdGhTZWdMaXN0UHJv
cGVydHlUZWFyT2ZmLmggXAogICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmggXAorICAg
IHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5SW5mby5oIFwKICAgICBzdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eVRlYXJPZmYuaCBcCiAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFp
dHMuaCBcCiAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5o
IFwKQEAgLTMyNjEsNiArMzI2Myw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9MSkg
ewogICAgICAgICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwIFwKICAgICAgICAg
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAgXAogICAgICAgICBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIFwKKyAgICAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmli
dXRlVG9Qcm9wZXJ0eU1hcC5jcHAgXAogICAgICAgICBzdmcvcHJvcGVydGllcy9TVkdQYXRoU2Vn
TGlzdFByb3BlcnR5VGVhck9mZi5jcHAKIAogICAgIGxpbnV4LWcrKyo6Q09ORklHKGRlYnVnLCBk
ZWJ1Z3xyZWxlYXNlKTppc0VxdWFsKFFUX0FSQ0gsaTM4NikgewpJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDkwNDU0KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTY2NDczLDYgKzY2NDczLDE0IEBACiAJCQkJTmFtZT0icHJvcGVydGllcyIKIAkJCQk+
CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdccHJvcGVydGllc1xTVkdBdHRy
aWJ1dGVUb1Byb3BlcnR5TWFwLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xwcm9wZXJ0aWVzXFNWR0F0dHJpYnV0ZVRvUHJvcGVy
dHlNYXAuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHN2Z1xwcm9wZXJ0aWVzXFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJP
ZmYuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTY2NTMzLDYgKzY2NTQxLDEwIEBACiAJCQkJ
CT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdccHJv
cGVydGllc1xTVkdQcm9wZXJ0eUluZm8uaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xwcm9wZXJ0aWVzXFNWR1Byb3BlcnR5VGVhck9m
Zi5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTA0NTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTg2LDYgKzg2LDcgQEAKIAkJMDgxNjY4REExMjU2MDNENTAwNkYyNURFIC8qIFNWR1Rl
eHRMYXlvdXRFbmdpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA4MTY2OEQ4MTI1NjAzRDUwMDZGMjVERSAvKiBTVkdUZXh0TGF5b3V0RW5naW5lLmgg
Ki87IH07CiAJCTA4MUFBOERBMTExMTIzN0UwMDJBQjA2RSAvKiBTVkdFbGVtZW50UmFyZURhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MUFBOEQ5
MTExMTIzN0UwMDJBQjA2RSAvKiBTVkdFbGVtZW50UmFyZURhdGEuaCAqLzsgfTsKIAkJMDgxQ0RG
QkYxMjZFQ0ZFODAwRDIxNUNBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MUNERkJFMTI2
RUNGRTgwMEQyMTVDQSAvKiBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDgxREQ0OUMxM0JB
MUE2MDAwREM3NjI3IC8qIFNWR1Byb3BlcnR5SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxREQ0OUIxM0JBMUE2MDAwREM3NjI3IC8qIFNWR1By
b3BlcnR5SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTA4MUVCRjNBMEZEMzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MUVCRjM4MEZE
MzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmNwcCAqLzsgfTsKIAkJMDgxRUJGM0Iw
RkQzNEY0MTAwREE3NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MUVCRjM5MEZEMzRGNDEwMERBNzU1OSAvKiBT
VkdGaWx0ZXJCdWlsZGVyLmggKi87IH07CiAJCTA4MjNEMTU5MTI3QUQ2QUMwMDBFQkM5NSAvKiBT
VkdBbmltYXRlZEludGVnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4MjNEMTU4MTI3QUQ2QUMwMDBFQkM5NSAvKiBTVkdBbmltYXRlZEludGVnZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTY4
LDYgKzE2OSw4IEBACiAJCTA4RjBCRkM2MTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0TWV0cmlj
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMEJG
QzExMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRNZXRyaWNzLmggKi87IH07CiAJCTA4RjJGMDA5
MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RjJGMDA3MTIxM0U2MTcwMERDRUM0
OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmNwcCAqLzsgfTsKIAkJMDhGMkYwMEExMjEzRTYxNzAw
RENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RjJGMDA4MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJ
bWFnZVJlc291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMDhGQjE3QzExM0JDN0U5MTAwMDQwMDg2IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVy
dHlNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDhGQjE3QzAxM0JDN0U5MTAwMDQwMDg2IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3Bw
ICovOyB9OworCQkwOEZCM0Y4NDEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmlidXRlVG9Qcm9w
ZXJ0eU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDhGQjNGODMxM0JDNzU0QzAwOTlGQzE4IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwOEZFMEJD
NTEyN0UyQUMxMDAwQzRGQjUgLyogU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEZFMEJDNDEyN0Uy
QUMxMDAwQzRGQjUgLyogU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhGRjEwMjAxMjk1MEY1
QTAwRjAwMjc2IC8qIFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RkYxMDFGMTI5NTBGNTkwMEYw
MDI3NiAvKiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAgKi87IH07CiAJCTBBNDg0
NDk5MENBNDRDQjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEE0ODQ0OTgwQ0E0NENCMjAwQjdCRDQ4IC8qIFNv
ZnRMaW5raW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTY0NTEsNiArNjQ1NCw3IEBACiAJCTA4MTY2OEQ4MTI1NjAzRDUwMDZGMjVERSAvKiBT
VkdUZXh0TGF5b3V0RW5naW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R1RleHRMYXlvdXRFbmdpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgxQUE4
RDkxMTExMjM3RTAwMkFCMDZFIC8qIFNWR0VsZW1lbnRSYXJlRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdFbGVtZW50UmFyZURhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDgxQ0RGQkUxMjZFQ0ZFODAwRDIxNUNBIC8qIFNWR0FuaW1hdGVkUHJv
cGVydHlTeW5jaHJvbml6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwODFERDQ5QjEzQkExQTYwMDBEQzc2MjcgLyogU1ZHUHJvcGVydHlJbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Byb3BlcnR5SW5mby5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwODFFQkYzODBGRDM0RjQxMDBEQTc1NTkgLyogU1ZHRmlsdGVy
QnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdGaWx0
ZXJCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgxRUJGMzkwRkQz
NEY0MTAwREE3NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHRmlsdGVyQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwODIzRDE1ODEyN0FENkFDMDAwRUJDOTUgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkSW50ZWdlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjU0NSw2ICs2NTQ5LDggQEAKIAkJMDhGMEJGQzEx
MjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRNZXRyaWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR1RleHRNZXRyaWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA4RjJGMDA3MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckltYWdlUmVzb3VyY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEYyRjAwODEyMTNFNjE3MDBEQ0VD
NDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW5kZXJJbWFnZVJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA4RkIxN0MwMTNCQzdFOTEwMDA0MDA4NiAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0F0dHJpYnV0ZVRvUHJv
cGVydHlNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEZCM0Y4MzEzQkM3
NTRDMDA5OUZDMTggLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RkUwQkM0MTI3RTJBQzEwMDBDNEZCNSAvKiBTVkdBbmlt
YXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA4RkYxMDFGMTI5NTBGNTkwMEYwMDI3NiAvKiBTVkdQYXRoU2VnTGlzdFByb3Bl
cnR5VGVhck9mZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQ
YXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBBNDg0NDk4MENBNDRDQjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTI3NDQsMTEgKzEyNzUwLDE0IEBACiAJCQkJMDg4QTBERkYxMjZFRjFEQjAw
OTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkJMDg1MjVFNjIx
Mjc4QzAwMTAwQTg0Nzc4IC8qIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmLmggKi8s
CiAJCQkJMDg1QTE1OTIxMjg5QThERDAwMjcxMEUzIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dFByb3BlcnR5VGVhck9mZi5oICovLAorCQkJCTA4RkIxN0MwMTNCQzdFOTEwMDA0MDA4NiAvKiBT
VkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcCAqLywKKwkJCQkwOEZCM0Y4MzEzQkM3NTRDMDA5
OUZDMTggLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oICovLAogCQkJCTA4MTA3NjQzMTI4
Mjg1NTYwMDdDNjNCQSAvKiBTVkdMaXN0UHJvcGVydHkuaCAqLywKIAkJCQkwODhBMEUwMDEyNkVG
MURCMDA5NzhGN0EgLyogU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oICovLAogCQkJCTA4RkYxMDFG
MTI5NTBGNTkwMEYwMDI3NiAvKiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAgKi8s
CiAJCQkJMDg0QTA4MjgxMjhENzg2NzAwMkRCMUYxIC8qIFNWR1BhdGhTZWdMaXN0UHJvcGVydHlU
ZWFyT2ZmLmggKi8sCiAJCQkJMDg4QTBFMDExMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5
LmggKi8sCisJCQkJMDgxREQ0OUIxM0JBMUE2MDAwREM3NjI3IC8qIFNWR1Byb3BlcnR5SW5mby5o
ICovLAogCQkJCTA4OEEwRTAyMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRlYXJPZmYu
aCAqLywKIAkJCQkwODhBMEUwMzEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUcmFpdHMu
aCAqLywKIAkJCQkwODgwRjcwRDEyODJCNDZEMDA5NDg1MDUgLyogU1ZHU3RhdGljTGlzdFByb3Bl
cnR5VGVhck9mZi5oICovLApAQCAtMjMwODgsNiArMjMwOTcsOCBAQAogCQkJCTA4NjM5NTE2MTNC
NUZFNTcwMEJCMzQ0RCAvKiBTVkdBbmltYXRlZFBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCTQz
MUEyRjlDMTNCNkYyQjAwMDc3OTFFNCAvKiBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUFCQjc4NzEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJy
ZWFrSXRlcmF0b3JQb29sSUNVLmggaW4gSGVhZGVycyAqLywKKwkJCQkwODFERDQ5QzEzQkExQTYw
MDBEQzc2MjcgLyogU1ZHUHJvcGVydHlJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQkwOEZCM0Y4
NDEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0yNTg1NCw2ICsyNTg2NSw3IEBACiAJCQkJNDMxQTJGRDcxM0I3NzA3QTAwNzc5
MUU0IC8qIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzFB
MzAyMTEzQjg5RENDMDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQzMUEzMDg4MTNCOEY5NzgwMDc3OTFFNCAvKiBTVkdBbmlt
YXRlZEJvb2xlYW4uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDhGQjE3QzExM0JDN0U5MTAwMDQw
MDg2IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDNGNkZEOTYxM0JDRDBCMTAwMjI0MDUyIC8qIFNWR0FuaW1hdGVkSW50ZWdlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VH
cmFkaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzgsMTUgKzI3OCwxNSBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlR3Jh
ZGllbnQ6OmFkZFN0b3BzCiAgICAgICAgIGdyYWRpZW50RGF0YS0+Z3JhZGllbnQtPmFkZENvbG9y
U3RvcCgqaXQpOwogfQogCi1HcmFkaWVudFNwcmVhZE1ldGhvZCBSZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50OjpwbGF0Zm9ybVNwcmVhZE1ldGhvZEZyb21TVkdUeXBlKFNWR0dyYWRpZW50RWxlbWVu
dDo6U1ZHU3ByZWFkTWV0aG9kVHlwZSBtZXRob2QpIGNvbnN0CitHcmFkaWVudFNwcmVhZE1ldGhv
ZCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjpwbGF0Zm9ybVNwcmVhZE1ldGhvZEZyb21TVkdU
eXBlKFNWR1NwcmVhZE1ldGhvZFR5cGUgbWV0aG9kKSBjb25zdAogewogICAgIHN3aXRjaCAobWV0
aG9kKSB7Ci0gICAgY2FzZSBTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR19TUFJFQURNRVRIT0RfVU5L
Tk9XTjoKLSAgICBjYXNlIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHX1NQUkVBRE1FVEhPRF9QQUQ6
CisgICAgY2FzZSBTVkdTcHJlYWRNZXRob2RVbmtub3duOgorICAgIGNhc2UgU1ZHU3ByZWFkTWV0
aG9kUGFkOgogICAgICAgICByZXR1cm4gU3ByZWFkTWV0aG9kUGFkOwotICAgIGNhc2UgU1ZHR3Jh
ZGllbnRFbGVtZW50OjpTVkdfU1BSRUFETUVUSE9EX1JFRkxFQ1Q6CisgICAgY2FzZSBTVkdTcHJl
YWRNZXRob2RSZWZsZWN0OgogICAgICAgICByZXR1cm4gU3ByZWFkTWV0aG9kUmVmbGVjdDsKLSAg
ICBjYXNlIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHX1NQUkVBRE1FVEhPRF9SRVBFQVQ6CisgICAg
Y2FzZSBTVkdTcHJlYWRNZXRob2RSZXBlYXQ6CiAgICAgICAgIHJldHVybiBTcHJlYWRNZXRob2RS
ZXBlYXQ7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaAkocmV2aXNpb24gOTA0NTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCBib29sIGNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoU1ZHR3JhZGllbnRFbGVtZW50KikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBidWlsZEdyYWRpZW50KEdyYWRpZW50RGF0YSosIFNWR0dyYWRp
ZW50RWxlbWVudCopIGNvbnN0ID0gMDsKIAotICAgIEdyYWRpZW50U3ByZWFkTWV0aG9kIHBsYXRm
b3JtU3ByZWFkTWV0aG9kRnJvbVNWR1R5cGUoU1ZHR3JhZGllbnRFbGVtZW50OjpTVkdTcHJlYWRN
ZXRob2RUeXBlKSBjb25zdDsKKyAgICBHcmFkaWVudFNwcmVhZE1ldGhvZCBwbGF0Zm9ybVNwcmVh
ZE1ldGhvZEZyb21TVkdUeXBlKFNWR1NwcmVhZE1ldGhvZFR5cGUpIGNvbnN0OwogCiBwcml2YXRl
OgogICAgIGJvb2wgbV9zaG91bGRDb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzIDogMTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VNYXJrZXIuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDYsNyArMTA2LDcgQEAgZmxvYXQgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OmFuZ2xlKCkgYwog
ICAgIEFTU0VSVChtYXJrZXIpOwogCiAgICAgZmxvYXQgYW5nbGUgPSAtMTsKLSAgICBpZiAobWFy
a2VyLT5vcmllbnRUeXBlKCkgPT0gU1ZHTWFya2VyRWxlbWVudDo6U1ZHX01BUktFUl9PUklFTlRf
QU5HTEUpCisgICAgaWYgKG1hcmtlci0+b3JpZW50VHlwZSgpID09IE1hcmtlck9yaWVudEFuZ2xl
KQogICAgICAgICBhbmdsZSA9IG1hcmtlci0+b3JpZW50QW5nbGUoKS52YWx1ZSgpOwogCiAgICAg
cmV0dXJuIGFuZ2xlOwpAQCAtMTE4LDcgKzExOCw3IEBAIEFmZmluZVRyYW5zZm9ybSBSZW5kZXJT
VkdSZXNvdXJjZU1hcmtlcjoKICAgICBBU1NFUlQobWFya2VyKTsKIAogICAgIGZsb2F0IG1hcmtl
ckFuZ2xlID0gYW5nbGUoKTsKLSAgICBib29sIHVzZVN0cm9rZVdpZHRoID0gKG1hcmtlci0+bWFy
a2VyVW5pdHMoKSA9PSBTVkdNYXJrZXJFbGVtZW50OjpTVkdfTUFSS0VSVU5JVFNfU1RST0tFV0lE
VEgpOworICAgIGJvb2wgdXNlU3Ryb2tlV2lkdGggPSBtYXJrZXItPm1hcmtlclVuaXRzKCkgPT0g
TWFya2VyVW5pdHNTdHJva2VXaWR0aDsKIAogICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07
CiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShvcmlnaW4ueCgpLCBvcmlnaW4ueSgpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTWFya2VyLmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2
MCw3IEBAIHB1YmxpYzoKIAogICAgIEZsb2F0UG9pbnQgcmVmZXJlbmNlUG9pbnQoKSBjb25zdDsK
ICAgICBmbG9hdCBhbmdsZSgpIGNvbnN0OwotICAgIFNWR01hcmtlckVsZW1lbnQ6OlNWR01hcmtl
clVuaXRzVHlwZSBtYXJrZXJVbml0cygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNWR01h
cmtlckVsZW1lbnQqPihub2RlKCkpLT5tYXJrZXJVbml0cygpOyB9CisgICAgU1ZHTWFya2VyVW5p
dHNUeXBlIG1hcmtlclVuaXRzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHTWFya2Vy
RWxlbWVudCo+KG5vZGUoKSktPm1hcmtlclVuaXRzKCk7IH0KIAogICAgIHZpcnR1YWwgUmVuZGVy
U1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHNfcmVzb3VyY2VU
eXBlOyB9CiAgICAgc3RhdGljIFJlbmRlclNWR1Jlc291cmNlVHlwZSBzX3Jlc291cmNlVHlwZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4
dFBhdGguY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVGV4dFBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyU1ZHVGV4dFBhdGg6OlJlbmRlclNWR1RleHRQ
YXRoKE5vZGUqIG4pCiAgICAgOiBSZW5kZXJTVkdJbmxpbmUobikKLSAgICAsIG1fc3RhcnRPZmZz
ZXQoMC4wZikKKyAgICAsIG1fc3RhcnRPZmZzZXQoMCkKICAgICAsIG1fZXhhY3RBbGlnbm1lbnQo
dHJ1ZSkKICAgICAsIG1fc3RyZXRjaE1ldGhvZChmYWxzZSkKIHsKQEAgLTY5LDEyICs2OSwxMiBA
QCBmbG9hdCBSZW5kZXJTVkdUZXh0UGF0aDo6c3RhcnRPZmZzZXQoKSBjCiAKIGJvb2wgUmVuZGVy
U1ZHVGV4dFBhdGg6OmV4YWN0QWxpZ25tZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8U1ZHVGV4dFBhdGhFbGVtZW50Kj4obm9kZSgpKS0+c3BhY2luZygpID09IFNWR19URVhU
UEFUSF9TUEFDSU5HVFlQRV9FWEFDVDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHVGV4dFBh
dGhFbGVtZW50Kj4obm9kZSgpKS0+c3BhY2luZygpID09IFRleHRQYXRoU3BhY2luZ0V4YWN0Owog
fQogCiBib29sIFJlbmRlclNWR1RleHRQYXRoOjpzdHJldGNoTWV0aG9kKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHVGV4dFBhdGhFbGVtZW50Kj4obm9kZSgpKS0+bWV0aG9k
KCkgPT0gU1ZHX1RFWFRQQVRIX01FVEhPRFRZUEVfU1RSRVRDSDsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8U1ZHVGV4dFBhdGhFbGVtZW50Kj4obm9kZSgpKS0+bWV0aG9kKCkgPT0gVGV4dFBhdGhN
ZXRob2RTdHJldGNoOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTkyLDkgKzE5Miw5IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0KICAgICByZXR1cm4gdHM7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJr
ZXJVbml0c1R5cGUmIG1hcmtlclVuaXQpCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgU1ZHTWFya2VyVW5pdHNUeXBlJiBtYXJrZXJVbml0KQogewot
ICAgIHRzIDw8IFNWR1Byb3BlcnR5VHJhaXRzPFNWR01hcmtlckVsZW1lbnQ6OlNWR01hcmtlclVu
aXRzVHlwZT46OnRvU3RyaW5nKG1hcmtlclVuaXQpOworICAgIHRzIDw8IFNWR1Byb3BlcnR5VHJh
aXRzPFNWR01hcmtlclVuaXRzVHlwZT46OnRvU3RyaW5nKG1hcmtlclVuaXQpOwogICAgIHJldHVy
biB0czsKIH0KIApAQCAtMjUxLDkgKzI1MSw5IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0KICAgICByZXR1cm4gdHM7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR1Nw
cmVhZE1ldGhvZFR5cGUmIHR5cGUpCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgU1ZHU3ByZWFkTWV0aG9kVHlwZSYgdHlwZSkKIHsKLSAgICB0cyA8
PCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR1NwcmVhZE1ldGhvZFR5
cGU+Ojp0b1N0cmluZyh0eXBlKS51cHBlcigpOworICAgIHRzIDw8IFNWR1Byb3BlcnR5VHJhaXRz
PFNWR1NwcmVhZE1ldGhvZFR5cGU+Ojp0b1N0cmluZyh0eXBlKS51cHBlcigpOwogICAgIHJldHVy
biB0czsKIH0KIApAQCAtNTAwLDExICs1MDAsMTEgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgYm91
bmRpbmdCb3hNb2RlU3RyaQogICAgIHJldHVybiBib3VuZGluZ0JveE1vZGUgPyAib2JqZWN0Qm91
bmRpbmdCb3giIDogInVzZXJTcGFjZU9uVXNlIjsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHdy
aXRlQ29tbW9uR3JhZGllbnRQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBTVkdHcmFkaWVudEVs
ZW1lbnQ6OlNWR1NwcmVhZE1ldGhvZFR5cGUgc3ByZWFkTWV0aG9kLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIGdyYWRpZW50VHJhbnNmb3JtLCBib29sIGJvdW5kaW5nQm94TW9kZSkKK3N0YXRpYyBp
bmxpbmUgdm9pZCB3cml0ZUNvbW1vbkdyYWRpZW50UHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywg
U1ZHU3ByZWFkTWV0aG9kVHlwZSBzcHJlYWRNZXRob2QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
Z3JhZGllbnRUcmFuc2Zvcm0sIGJvb2wgYm91bmRpbmdCb3hNb2RlKQogewogICAgIHdyaXRlTmFt
ZVZhbHVlUGFpcih0cywgImdyYWRpZW50VW5pdHMiLCBib3VuZGluZ0JveE1vZGVTdHJpbmcoYm91
bmRpbmdCb3hNb2RlKSk7CiAKLSAgICBpZiAoc3ByZWFkTWV0aG9kICE9IFNWR0dyYWRpZW50RWxl
bWVudDo6U1ZHX1NQUkVBRE1FVEhPRF9QQUQpCisgICAgaWYgKHNwcmVhZE1ldGhvZCAhPSBTVkdT
cHJlYWRNZXRob2RQYWQpCiAgICAgICAgIHRzIDw8ICIgW3NwcmVhZE1ldGhvZD0iIDw8IHNwcmVh
ZE1ldGhvZCA8PCAiXSI7CiAKICAgICBpZiAoIWdyYWRpZW50VHJhbnNmb3JtLmlzSWRlbnRpdHko
KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dENodW5rQnVpbGRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
Q2h1bmtCdWlsZGVyLmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRDaHVua0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAs
MTIgKzEzMCwxMiBAQCB2b2lkIFNWR1RleHRDaHVua0J1aWxkZXI6OmFkZFRleHRDaHVuayhWCiAg
ICAgICAgIGRlc2lyZWRUZXh0TGVuZ3RoID0gdGV4dENvbnRlbnRFbGVtZW50LT5zcGVjaWZpZWRU
ZXh0TGVuZ3RoKCkudmFsdWUodGV4dENvbnRlbnRFbGVtZW50KTsKIAogICAgICAgICBzd2l0Y2gg
KHRleHRDb250ZW50RWxlbWVudC0+bGVuZ3RoQWRqdXN0KCkpIHsKLSAgICAgICAgY2FzZSBTVkdU
ZXh0Q29udGVudEVsZW1lbnQ6OkxFTkdUSEFESlVTVF9VTktOT1dOOgorICAgICAgICBjYXNlIExl
bmd0aEFkanVzdFVua25vd246CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdU
ZXh0Q29udGVudEVsZW1lbnQ6OkxFTkdUSEFESlVTVF9TUEFDSU5HOgorICAgICAgICBjYXNlIExl
bmd0aEFkanVzdFNwYWNpbmc6CiAgICAgICAgICAgICBjaHVua1N0eWxlIHw9IFNWR1RleHRDaHVu
azo6TGVuZ3RoQWRqdXN0U3BhY2luZzsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFNWR1RleHRDb250ZW50RWxlbWVudDo6TEVOR1RIQURKVVNUX1NQQUNJTkdBTkRHTFlQSFM6Cisg
ICAgICAgIGNhc2UgTGVuZ3RoQWRqdXN0U3BhY2luZ0FuZEdseXBoczoKICAgICAgICAgICAgIGNo
dW5rU3R5bGUgfD0gU1ZHVGV4dENodW5rOjpMZW5ndGhBZGp1c3RTcGFjaW5nQW5kR2x5cGhzOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZS5jcHAJKHJldmlzaW9uIDkw
NDU0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5l
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDEwICsxNTQsOCBAQCBib29sIFNWR1RleHRMYXlv
dXRFbmdpbmU6OnBhcmVudERlZmluZXNUCiB7CiAgICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50UGFy
ZW50ID0gcGFyZW50OwogICAgIHdoaWxlIChjdXJyZW50UGFyZW50KSB7Ci0gICAgICAgIFNWR1Rl
eHRDb250ZW50RWxlbWVudCogdGV4dENvbnRlbnRFbGVtZW50ID0gU1ZHVGV4dENvbnRlbnRFbGVt
ZW50OjplbGVtZW50RnJvbVJlbmRlcmVyKGN1cnJlbnRQYXJlbnQpOwotICAgICAgICBpZiAodGV4
dENvbnRlbnRFbGVtZW50KSB7Ci0gICAgICAgICAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OlNW
R0xlbmd0aEFkanVzdFR5cGUgbGVuZ3RoQWRqdXN0ID0gdGV4dENvbnRlbnRFbGVtZW50LT5sZW5n
dGhBZGp1c3QoKTsKLSAgICAgICAgICAgIGlmIChsZW5ndGhBZGp1c3QgPT0gU1ZHVGV4dENvbnRl
bnRFbGVtZW50OjpMRU5HVEhBREpVU1RfU1BBQ0lORyAmJiB0ZXh0Q29udGVudEVsZW1lbnQtPnNw
ZWNpZmllZFRleHRMZW5ndGgoKS52YWx1ZSh0ZXh0Q29udGVudEVsZW1lbnQpID4gMCkKKyAgICAg
ICAgaWYgKFNWR1RleHRDb250ZW50RWxlbWVudCogdGV4dENvbnRlbnRFbGVtZW50ID0gU1ZHVGV4
dENvbnRlbnRFbGVtZW50OjplbGVtZW50RnJvbVJlbmRlcmVyKGN1cnJlbnRQYXJlbnQpKSB7Cisg
ICAgICAgICAgICBpZiAodGV4dENvbnRlbnRFbGVtZW50LT5sZW5ndGhBZGp1c3QoKSA9PSBMZW5n
dGhBZGp1c3RTcGFjaW5nICYmIHRleHRDb250ZW50RWxlbWVudC0+c3BlY2lmaWVkVGV4dExlbmd0
aCgpLnZhbHVlKHRleHRDb250ZW50RWxlbWVudCkgPiAwKQogICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAKQEAgLTIwOCw3ICsyMDYsNyBAQCB2b2lkIFNWR1RleHRMYXlv
dXRFbmdpbmU6OmJlZ2luVGV4dFBhdGhMCiAgICAgbV90ZXh0UGF0aEN1cnJlbnRPZmZzZXQgPSBt
X3RleHRQYXRoU3RhcnRPZmZzZXQ7CiAKICAgICAvLyBFdmVudHVhbGx5IGhhbmRsZSB0ZXh0TGVu
Z3RoIGFkanVzdG1lbnRzLgotICAgIFNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHTGVuZ3RoQWRq
dXN0VHlwZSBsZW5ndGhBZGp1c3QgPSBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OkxFTkdUSEFESlVT
VF9VTktOT1dOOworICAgIExlbmd0aEFkanVzdFR5cGUgbGVuZ3RoQWRqdXN0ID0gTGVuZ3RoQWRq
dXN0VW5rbm93bjsKICAgICBmbG9hdCBkZXNpcmVkVGV4dExlbmd0aCA9IDA7CiAKICAgICBpZiAo
U1ZHVGV4dENvbnRlbnRFbGVtZW50KiB0ZXh0Q29udGVudEVsZW1lbnQgPSBTVkdUZXh0Q29udGVu
dEVsZW1lbnQ6OmVsZW1lbnRGcm9tUmVuZGVyZXIodGV4dFBhdGgpKSB7CkBAIC0yMTksNyArMjE3
LDcgQEAgdm9pZCBTVkdUZXh0TGF5b3V0RW5naW5lOjpiZWdpblRleHRQYXRoTAogICAgIGlmICgh
ZGVzaXJlZFRleHRMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChsZW5ndGhBZGp1
c3QgPT0gU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpMRU5HVEhBREpVU1RfU1BBQ0lORykKKyAgICBp
ZiAobGVuZ3RoQWRqdXN0ID09IExlbmd0aEFkanVzdFNwYWNpbmcpCiAgICAgICAgIG1fdGV4dFBh
dGhTcGFjaW5nID0gKGRlc2lyZWRUZXh0TGVuZ3RoIC0gdG90YWxMZW5ndGgpIC8gdG90YWxDaGFy
YWN0ZXJzOwogICAgIGVsc2UKICAgICAgICAgbV90ZXh0UGF0aFNjYWxpbmcgPSBkZXNpcmVkVGV4
dExlbmd0aCAvIHRvdGFsTGVuZ3RoOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL0dyYWRpZW50
QXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9HcmFkaWVudEF0
dHJpYnV0ZXMuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvR3JhZGll
bnRBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdHJ1Y3QgR3JhZGllbnRBdHRyaWJ1dGVzIHsKICAgICBHcmFkaWVudEF0
dHJpYnV0ZXMoKQotICAgICAgICA6IG1fc3ByZWFkTWV0aG9kKFNWR0dyYWRpZW50RWxlbWVudDo6
U1ZHX1NQUkVBRE1FVEhPRF9QQUQpCisgICAgICAgIDogbV9zcHJlYWRNZXRob2QoU1ZHU3ByZWFk
TWV0aG9kUGFkKQogICAgICAgICAsIG1fYm91bmRpbmdCb3hNb2RlKHRydWUpCiAgICAgICAgICwg
bV9zcHJlYWRNZXRob2RTZXQoZmFsc2UpCiAgICAgICAgICwgbV9ib3VuZGluZ0JveE1vZGVTZXQo
ZmFsc2UpCkBAIC0zNywxMiArMzcsMTIgQEAgc3RydWN0IEdyYWRpZW50QXR0cmlidXRlcyB7CiAg
ICAgewogICAgIH0KIAotICAgIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHU3ByZWFkTWV0aG9kVHlw
ZSBzcHJlYWRNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX3NwcmVhZE1ldGhvZDsgfQorICAgIFNW
R1NwcmVhZE1ldGhvZFR5cGUgc3ByZWFkTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9zcHJlYWRN
ZXRob2Q7IH0KICAgICBib29sIGJvdW5kaW5nQm94TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91
bmRpbmdCb3hNb2RlOyB9CiAgICAgQWZmaW5lVHJhbnNmb3JtIGdyYWRpZW50VHJhbnNmb3JtKCkg
Y29uc3QgeyByZXR1cm4gbV9ncmFkaWVudFRyYW5zZm9ybTsgfQogICAgIGNvbnN0IFZlY3RvcjxH
cmFkaWVudDo6Q29sb3JTdG9wPiYgc3RvcHMoKSBjb25zdCB7IHJldHVybiBtX3N0b3BzOyB9CiAK
LSAgICB2b2lkIHNldFNwcmVhZE1ldGhvZChTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR1NwcmVhZE1l
dGhvZFR5cGUgdmFsdWUpCisgICAgdm9pZCBzZXRTcHJlYWRNZXRob2QoU1ZHU3ByZWFkTWV0aG9k
VHlwZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIG1fc3ByZWFkTWV0aG9kID0gdmFsdWU7CiAgICAg
ICAgIG1fc3ByZWFkTWV0aG9kU2V0ID0gdHJ1ZTsKQEAgLTczLDcgKzczLDcgQEAgc3RydWN0IEdy
YWRpZW50QXR0cmlidXRlcyB7CiAKIHByaXZhdGU6CiAgICAgLy8gUHJvcGVydGllcwotICAgIFNW
R0dyYWRpZW50RWxlbWVudDo6U1ZHU3ByZWFkTWV0aG9kVHlwZSBtX3NwcmVhZE1ldGhvZDsKKyAg
ICBTVkdTcHJlYWRNZXRob2RUeXBlIG1fc3ByZWFkTWV0aG9kOwogICAgIGJvb2wgbV9ib3VuZGlu
Z0JveE1vZGU7CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fZ3JhZGllbnRUcmFuc2Zvcm07CiAgICAg
VmVjdG9yPEdyYWRpZW50OjpDb2xvclN0b3A+IG1fc3RvcHM7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTUgKzQ4LDI1IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklO
RV9BTklNQVRFRF9TVFJJTkcoU1ZHQUVsZW1lbnQsIFNWR05hbWVzOjp0YXJnZXRBdHRyLCBTVkdU
YXJnZXQsIHN2Z1RhcmdldCkKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHQUVsZW1lbnQsIFhM
aW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4o
U1ZHQUVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lO
X0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhT
VkdBRWxlbWVudCwgU1ZHTmFtZXM6OnRhcmdldEF0dHIsIFNWR1RhcmdldCwgc3ZnVGFyZ2V0KQor
ICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHQUVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZB
dHRyLCBIcmVmLCBocmVmKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0FFbGVtZW50
LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1B
VEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdB
RWxlbWVudCkKKyAgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc3ZnVGFyZ2V0
KQorICAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShocmVmKQorICAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQor
ICAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudCkKKyAgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZH
QUVsZW1lbnQ6OlNWR0FFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjphVGFnKSk7
CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdBRWxlbWVudCgpOwogfQogCiBQ
YXNzUmVmUHRyPFNWR0FFbGVtZW50PiBTVkdBRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTEzMiw2MCArMTQyLDYgQEAg
dm9pZCBTVkdBRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjbwogICAgIH0KIH0KIAotQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0FFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBz
X2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0FFbGVtZW50OjpmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Zmls
bFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRhcmdl
dEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQotdm9pZCBTVkdB
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJv
bml6ZVNWR1RhcmdldCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpz
eW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJO
YW1lKSkgewotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25p
emVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRhcmdldEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVT
VkdUYXJnZXQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdVUklSZWZl
cmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
SHJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewot
ICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQot
CiBSZW5kZXJPYmplY3QqIFNWR0FFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICBpZiAoc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+
KHBhcmVudE5vZGUoKSktPmlzVGV4dENvbnRlbnQoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxl
bWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMCArNTEsNiBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotCi0gICAgdmly
dHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwg
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopOwogCkBAIC02NywxNyArNjMsMTggQEAgcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKIAotICAg
IC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotCi0gICAgLy8gVGhpcyBkZWNsYXJh
dGlvbiB1c2VkIHRvIGRlZmluZSBhIG5vbi12aXJ0dWFsICJTdHJpbmcmIHRhcmdldCgpIGNvbnN0
IiBtZXRob2QsIHRoYXQgY2xhc2hlcyB3aXRoICJ2aXJ0dWFsIFN0cmluZyBFbGVtZW50Ojp0YXJn
ZXQoKSBjb25zdCIuCi0gICAgLy8gVGhhdCdzIHdoeSBpdCBoYXMgYmVlbiByZW5hbWVkIHRvICJz
dmdUYXJnZXQiLCB0aGUgQ29kZUdlbmVyYXRvcnMgdGFrZSBjYXJlIG9mIGNhbGxpbmcgc3ZnVGFy
Z2V0QW5pbWF0ZWQoKSBpbnN0ZWFkIG9mIHRhcmdldEFuaW1hdGVkKCksIHNlZSBDb2RlR2VuZXJh
dG9yLnBtLgotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKFNWR1RhcmdldCwgc3ZnVGFyZ2V0
KQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkco
SHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR0FFbGVtZW50KQorICAgICAgICAgIC8vIFRoaXMgZGVjbGFyYXRpb24gdXNlZCB0byBk
ZWZpbmUgYSBub24tdmlydHVhbCAiU3RyaW5nJiB0YXJnZXQoKSBjb25zdCIgbWV0aG9kLCB0aGF0
IGNsYXNoZXMgd2l0aCAidmlydHVhbCBTdHJpbmcgRWxlbWVudDo6dGFyZ2V0KCkgY29uc3QiLgor
ICAgICAgICAgIC8vIFRoYXQncyB3aHkgaXQgaGFzIGJlZW4gcmVuYW1lZCB0byAic3ZnVGFyZ2V0
IiwgdGhlIENvZGVHZW5lcmF0b3JzIHRha2UgY2FyZSBvZiBjYWxsaW5nIHN2Z1RhcmdldEFuaW1h
dGVkKCkgaW5zdGVhZCBvZiB0YXJnZXRBbmltYXRlZCgpLCBzZWUgQ29kZUdlbmVyYXRvci5wbS4K
KyAgICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhTVkdUYXJnZXQsIHN2Z1RhcmdldCkK
KyAgICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVp
cmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhp
cyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hy
b25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAJKHJldmlz
aW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDEzICszMywyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NU
UklORyhTVkdBbHRHbHlwaEVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVm
KQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURf
U1RSSU5HKFNWR0FsdEdseXBoRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhy
ZWYpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdBbHRHbHlwaEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJP
UEVSVElFUyhTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVE
X1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0FsdEdseXBoRWxlbWVudDo6U1ZHQWx0R2x5cGhFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICA6IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFsdEdseXBoVGFnKSk7CisgICAgcmVnaXN0ZXJB
bmltYXRlZFByb3BlcnRpZXNGb3JTVkdBbHRHbHlwaEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0
cjxTVkdBbHRHbHlwaEVsZW1lbnQ+IFNWR0FsdEdseXBoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTQ3LDI4ICs1NCw2
IEBAIFBhc3NSZWZQdHI8U1ZHQWx0R2x5cGhFbGVtZW50PiBTVkdBbHRHbHkKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNWR0FsdEdseXBoRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQog
Ci12b2lkIFNWR0FsdEdseXBoRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Ojpz
eW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLQotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlR
TmFtZSgpIHx8IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCi0g
ICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgU1ZHQWx0R2x5cGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0FsdEdseXBoRWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwotCi0gICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1h
dGVkU3RyaW5nKTsKLX0KLQogdm9pZCBTVkdBbHRHbHlwaEVsZW1lbnQ6OnNldEdseXBoUmVmKGNv
bnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gTk9fTU9E
SUZJQ0FUSU9OX0FMTE9XRURfRVJSOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEds
eXBoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlw
aEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0
R2x5cGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE4ICs0NSwxMiBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIFNWR0FsdEdseXBoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFs
IGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CiAKLSAgICAvLyBB
bmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQot
ICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCisgICAgQkVHSU5fREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0FsdEdseXBoRWxlbWVudCkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNWR0FuaW1hdGVFbGVtZW50OjpTVkdB
bmltYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgOiBTVkdBbmltYXRpb25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAg
ICwgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUoQW5pbWF0ZWRTdHJpbmcpCisgICAgLCBtX2FuaW1h
dGVkUHJvcGVydHlUeXBlKEFuaW1hdGVkU3RyaW5nKQogICAgICwgbV9mcm9tUHJvcGVydHlWYWx1
ZVR5cGUoUmVndWxhclByb3BlcnR5VmFsdWUpCiAgICAgLCBtX3RvUHJvcGVydHlWYWx1ZVR5cGUo
UmVndWxhclByb3BlcnR5VmFsdWUpCiB7CkBAIC05MywxNyArOTMsMzIgQEAgYm9vbCBTVkdBbmlt
YXRlRWxlbWVudDo6aGFzVmFsaWRBdHRyaWJ1dAogICAgIGlmICghdGFyZ2V0RWxlbWVudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBkZXRlcm1pbmVBbmltYXRlZEF0
dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVudCkgIT0gQW5pbWF0ZWRVbmtub3duOworICAgIHJldHVy
biBkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0YXJnZXRFbGVtZW50KSAhPSBBbmltYXRl
ZFVua25vd247CiB9CiAKLUFuaW1hdGVkQXR0cmlidXRlVHlwZSBTVkdBbmltYXRlRWxlbWVudDo6
ZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQp
IGNvbnN0CitBbmltYXRlZFByb3BlcnR5VHlwZSBTVkdBbmltYXRlRWxlbWVudDo6ZGV0ZXJtaW5l
QW5pbWF0ZWRQcm9wZXJ0eVR5cGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgY29uc3QKIHsK
ICAgICBBU1NFUlQodGFyZ2V0RWxlbWVudCk7CiAKLSAgICBBbmltYXRlZEF0dHJpYnV0ZVR5cGUg
dHlwZSA9IHRhcmdldEVsZW1lbnQtPmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUoKSk7Ci0gICAgaWYgKHR5cGUgPT0gQW5pbWF0ZWRVbmtub3duIHx8IChoYXNU
YWdOYW1lKFNWR05hbWVzOjphbmltYXRlQ29sb3JUYWcpICYmIHR5cGUgIT0gQW5pbWF0ZWRDb2xv
cikpCisgICAgVmVjdG9yPEFuaW1hdGVkUHJvcGVydHlUeXBlPiBwcm9wZXJ0eVR5cGVzOworICAg
IHRhcmdldEVsZW1lbnQtPmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUoKSwgcHJvcGVydHlUeXBlcyk7CisgICAgaWYgKHByb3BlcnR5VHlwZXMuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gQW5pbWF0ZWRVbmtub3duOwogCisgICAgQW5pbWF0ZWRQcm9wZXJ0
eVR5cGUgdHlwZSA9IHByb3BlcnR5VHlwZXNbMF07CisgICAgaWYgKGhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OmFuaW1hdGVDb2xvclRhZykgJiYgdHlwZSAhPSBBbmltYXRlZENvbG9yKQorICAgICAgICBy
ZXR1cm4gQW5pbWF0ZWRVbmtub3duOworCisgICAgQVNTRVJUKHByb3BlcnR5VHlwZXMuc2l6ZSgp
IDw9IDIpOworICAgIGlmIChwcm9wZXJ0eVR5cGVzLnNpemUoKSA9PSAyKSB7CisgICAgICAgIGlm
IChhdHRyaWJ1dGVOYW1lKCkgPT0gU1ZHTmFtZXM6Om9yaWVudEF0dHIpIHsKKyAgICAgICAgICAg
IC8vIFNWR01hcmtlckVsZW1lbnQgb3JpZW50QXR0ciBuZWVkcyBzcGVjaWFsIHRyZWF0bWVudC4g
V2UncmUgYWx3YXlzIGFuaW1hdGluZyAnb3JpZW50QW5nbGUnIG5ldmVyICdvcmllbnRUeXBlJy4K
KyAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eVR5cGVzWzBdICE9IHByb3BlcnR5VHlwZXNbMV0p
OworICAgICAgICAgICAgdHlwZSA9IEFuaW1hdGVkQW5nbGU7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgQVNTRVJUKHByb3BlcnR5VHlwZXNbMF0gPT0gcHJvcGVydHlUeXBlc1sxXSk7Cisg
ICAgfQorCiAgICAgLy8gRklYTUU6IEFuaW1hdG9yIGZvciBBbmltYXRlZEVudW1lcmF0aW9uIG1p
c3NpbmcuCiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgpAQCAt
MTYxLDkgKzE3Niw5IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGUK
ICAgICAgICAgcmV0dXJuOwogICAgIFNWR0FuaW1hdGVFbGVtZW50KiByZXN1bHRzID0gc3RhdGlj
X2Nhc3Q8U1ZHQW5pbWF0ZUVsZW1lbnQqPihyZXN1bHRFbGVtZW50KTsKICAgICAvLyBDYW4ndCBh
Y2N1bXVsYXRlIG92ZXIgYSBzdHJpbmcgcHJvcGVydHkuCi0gICAgaWYgKHJlc3VsdHMtPm1fYW5p
bWF0ZWRBdHRyaWJ1dGVUeXBlID09IEFuaW1hdGVkU3RyaW5nICYmIG1fYW5pbWF0ZWRBdHRyaWJ1
dGVUeXBlICE9IEFuaW1hdGVkU3RyaW5nKQorICAgIGlmIChyZXN1bHRzLT5tX2FuaW1hdGVkUHJv
cGVydHlUeXBlID09IEFuaW1hdGVkU3RyaW5nICYmIG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgIT0g
QW5pbWF0ZWRTdHJpbmcpCiAgICAgICAgIHJldHVybjsKLSAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRB
dHRyaWJ1dGVUeXBlKSB7CisgICAgc3dpdGNoIChtX2FuaW1hdGVkUHJvcGVydHlUeXBlKSB7CiAg
ICAgY2FzZSBBbmltYXRlZEFuZ2xlOgogICAgIGNhc2UgQW5pbWF0ZWRCb29sZWFuOgogICAgIGNh
c2UgQW5pbWF0ZWRDb2xvcjoKQEAgLTIxNyw3ICsyMzIsNyBAQCB2b2lkIFNWR0FuaW1hdGVFbGVt
ZW50OjpkZXRlcm1pbmVQcm9wZXJ0CiAgICAgaWYgKGluaGVyaXRzRnJvbVByb3BlcnR5KHRhcmdl
dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUoKSwgdG8pKQogICAgICAgICBtX3RvUHJvcGVydHlWYWx1
ZVR5cGUgPSBJbmhlcml0VmFsdWU7CiAKLSAgICBpZiAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUg
IT0gQW5pbWF0ZWRDb2xvcikKKyAgICBpZiAobV9hbmltYXRlZFByb3BlcnR5VHlwZSAhPSBBbmlt
YXRlZENvbG9yKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKGF0dHJpYnV0ZVZhbHVl
SXNDdXJyZW50Q29sb3IoZnJvbSkpCkBAIC0yMzMsOCArMjQ4LDggQEAgYm9vbCBTVkdBbmltYXRl
RWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAv
LyBGSVhNRTogTmVlZHMgbW9yZSBzb2xpZCB3YXkgZGV0ZXJtaW5lIHRhcmdldCBhdHRyaWJ1dGUg
dHlwZS4KLSAgICBtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSA9IGRldGVybWluZUFuaW1hdGVkQXR0
cmlidXRlVHlwZSh0YXJnZXRFbGVtZW50KTsKLSAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRBdHRyaWJ1
dGVUeXBlKSB7CisgICAgbV9hbmltYXRlZFByb3BlcnR5VHlwZSA9IGRldGVybWluZUFuaW1hdGVk
UHJvcGVydHlUeXBlKHRhcmdldEVsZW1lbnQpOworICAgIHN3aXRjaCAobV9hbmltYXRlZFByb3Bl
cnR5VHlwZSkgewogICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKICAgICBjYXNlIEFuaW1hdGVkQm9v
bGVhbjoKICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CkBAIC0yNjUsOCArMjgwLDggQEAgYm9vbCBT
VkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZAogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBBU1NFUlQoIWhhc1RhZ05hbWUoU1ZHTmFtZXM6OnNldFRhZykpOwotICAgIG1fYW5p
bWF0ZWRBdHRyaWJ1dGVUeXBlID0gZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKHRhcmdl
dEVsZW1lbnQpOwotICAgIHN3aXRjaCAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUpIHsKKyAgICBt
X2FuaW1hdGVkUHJvcGVydHlUeXBlID0gZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUodGFy
Z2V0RWxlbWVudCk7CisgICAgc3dpdGNoIChtX2FuaW1hdGVkUHJvcGVydHlUeXBlKSB7CiAgICAg
Y2FzZSBBbmltYXRlZEFuZ2xlOgogICAgIGNhc2UgQW5pbWF0ZWRCb29sZWFuOgogICAgIGNhc2Ug
QW5pbWF0ZWRDb2xvcjoKQEAgLTI5Niw4ICszMTEsMTAgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVu
dDo6cmVzZXRUb0Jhc2VWYWx1ZQogewogICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0
aGlzLT50YXJnZXRFbGVtZW50KCk7CiAgICAgQVNTRVJUKHRhcmdldEVsZW1lbnQpOwotICAgIG1f
YW5pbWF0ZWRBdHRyaWJ1dGVUeXBlID0gZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKHRh
cmdldEVsZW1lbnQpOwotICAgIHN3aXRjaCAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUpIHsKKwor
ICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgPSBkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlw
ZSh0YXJnZXRFbGVtZW50KTsKKyAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUpIHsK
KyAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgogICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKICAgICBj
YXNlIEFuaW1hdGVkQm9vbGVhbjoKICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CkBAIC0zMjMsMTEg
KzM0MCwxNSBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlCiAgICAg
fQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQotICAgIAorCiB2b2lkIFNWR0FuaW1hdGVF
bGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCgpCiB7CisgICAgU1ZHRWxlbWVudCogdGFyZ2V0
RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKKyAgICBBU1NFUlQodGFyZ2V0RWxlbWVu
dCk7CisKICAgICBTdHJpbmcgdmFsdWVUb0FwcGx5OwotICAgIHN3aXRjaCAobV9hbmltYXRlZEF0
dHJpYnV0ZVR5cGUpIHsKKyAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUpIHsKKyAg
ICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgogICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKICAgICBjYXNl
IEFuaW1hdGVkQm9vbGVhbjoKICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CkBAIC0zNTYsOCArMzc3
LDggQEAgZmxvYXQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZURpc3RhbgogICAgIFNWR0Vs
ZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CiAgICAgaWYgKCF0
YXJnZXRFbGVtZW50KQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgbV9hbmltYXRlZEF0dHJpYnV0
ZVR5cGUgPSBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVudCk7Ci0g
ICAgc3dpdGNoIChtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSkgeworICAgIG1fYW5pbWF0ZWRQcm9w
ZXJ0eVR5cGUgPSBkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0YXJnZXRFbGVtZW50KTsK
KyAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUpIHsKICAgICBjYXNlIEFuaW1hdGVk
QW5nbGU6CiAgICAgY2FzZSBBbmltYXRlZEJvb2xlYW46CiAgICAgY2FzZSBBbmltYXRlZENvbG9y
OgpAQCAtMzgzLDcgKzQwNCw3IEBAIGZsb2F0IFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVE
aXN0YW4KIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yKiBTVkdBbmltYXRlRWxlbWVudDo6ZW5zdXJl
QW5pbWF0b3IoKQogewogICAgIGlmICghbV9hbmltYXRvcikKLSAgICAgICAgbV9hbmltYXRvciA9
IFNWR0FuaW1hdG9yRmFjdG9yeTo6Y3JlYXRlKHRoaXMsIHRhcmdldEVsZW1lbnQoKSwgbV9hbmlt
YXRlZEF0dHJpYnV0ZVR5cGUpOworICAgICAgICBtX2FuaW1hdG9yID0gU1ZHQW5pbWF0b3JGYWN0
b3J5OjpjcmVhdGUodGhpcywgdGFyZ2V0RWxlbWVudCgpLCBtX2FuaW1hdGVkUHJvcGVydHlUeXBl
KTsKICAgICByZXR1cm4gbV9hbmltYXRvci5nZXQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGFkanVzdEZvckN1cnJlbnRDb2xvcihTVkdFbGVt
ZW50KiB0YXJnZXRFbGVtZW50LCBDb2xvciYpOwogICAgIHZvaWQgYWRqdXN0Rm9ySW5oZXJpdGFu
Y2UoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIFN0cmlu
ZyYgdmFsdWUpOwogICAgIAotICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBkZXRlcm1pbmVBbmlt
YXRlZEF0dHJpYnV0ZVR5cGUoU1ZHRWxlbWVudCopIGNvbnN0OworICAgIEFuaW1hdGVkUHJvcGVy
dHlUeXBlIGRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKFNWR0VsZW1lbnQqKSBjb25zdDsK
ICAgICB2b2lkIGRldGVybWluZVByb3BlcnR5VmFsdWVUeXBlcyhjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmKTsKICAgICAKICAgICBBbmltYXRlZFByb3BlcnR5VmFsdWVUeXBlIGZyb21Qcm9w
ZXJ0eVZhbHVlVHlwZSgpIHsgcmV0dXJuIG1fZnJvbVByb3BlcnR5VmFsdWVUeXBlOyB9CkBAIC02
OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IqIGVuc3Vy
ZUFuaW1hdG9yKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGhhc1ZhbGlkQXR0cmlidXRlVHlw
ZSgpIGNvbnN0OwotICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBtX2FuaW1hdGVkQXR0cmlidXRl
VHlwZTsKKyAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBtX2FuaW1hdGVkUHJvcGVydHlUeXBlOwog
CiAgICAgQW5pbWF0ZWRQcm9wZXJ0eVZhbHVlVHlwZSBtX2Zyb21Qcm9wZXJ0eVZhbHVlVHlwZTsK
ICAgICBBbmltYXRlZFByb3BlcnR5VmFsdWVUeXBlIG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50
LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRy
YW5zZm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxOCArNjYsMjEgQEAgYm9v
bCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aGFzVmFsaQogICAgIGlmICghdGFyZ2V0RWxl
bWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBkZXRlcm1pbmVB
bmltYXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVudCkgPT0gQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0OworICAgIHJldHVybiBkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0YXJnZXRFbGVt
ZW50KSA9PSBBbmltYXRlZFRyYW5zZm9ybUxpc3Q7CiB9CiAKLUFuaW1hdGVkQXR0cmlidXRlVHlw
ZSBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVU
eXBlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIGNvbnN0CitBbmltYXRlZFByb3BlcnR5VHlw
ZSBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5
cGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgY29uc3QKIHsKICAgICBBU1NFUlQodGFyZ2V0
RWxlbWVudCk7CiAgICAgCiAgICAgLy8gSnVzdCB0cmFuc2Zvcm0gbGlzdHMgY2FuIGJlIGFuaW1h
dGVkIHdpdGggPGFuaW1hdGVUcmFuc2Zvcm0+CiAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIv
U1ZHL2FuaW1hdGUuaHRtbCNBbmltYXRpb25BdHRyaWJ1dGVzQW5kUHJvcGVydGllcwotICAgIGlm
ICh0YXJnZXRFbGVtZW50LT5hbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lKCkpICE9IEFuaW1hdGVkVHJhbnNmb3JtTGlzdCkKKyAgICBWZWN0b3I8QW5pbWF0ZWRQ
cm9wZXJ0eVR5cGU+IHByb3BlcnR5VHlwZXM7CisgICAgdGFyZ2V0RWxlbWVudC0+YW5pbWF0ZWRQ
cm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSgpLCBwcm9wZXJ0eVR5cGVzKTsK
KyAgICBpZiAocHJvcGVydHlUeXBlcy5pc0VtcHR5KCkgfHwgcHJvcGVydHlUeXBlc1swXSAhPSBB
bmltYXRlZFRyYW5zZm9ybUxpc3QpCiAgICAgICAgIHJldHVybiBBbmltYXRlZFVua25vd247CiAK
KyAgICBBU1NFUlQocHJvcGVydHlUeXBlcy5zaXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIEFuaW1h
dGVkVHJhbnNmb3JtTGlzdDsKIH0KIApAQCAtMTMxLDcgKzEzNCw3IEBAIHN0YXRpYyBTVkdUcmFu
c2Zvcm1MaXN0KiB0cmFuc2Zvcm1MaXN0Rm8KIHZvaWQgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1l
bnQ6OnJlc2V0VG9CYXNlVmFsdWUoY29uc3QgU3RyaW5nJiBiYXNlVmFsdWUpCiB7CiAgICAgU1ZH
RWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKLSAgICBpZiAo
IXRhcmdldEVsZW1lbnQgfHwgZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKHRhcmdldEVs
ZW1lbnQpID09IEFuaW1hdGVkVW5rbm93bikKKyAgICBpZiAoIXRhcmdldEVsZW1lbnQgfHwgZGV0
ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUodGFyZ2V0RWxlbWVudCkgPT0gQW5pbWF0ZWRVbmtu
b3duKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBub3QgYmUg
Y29ycmVjdCBmb3IgYWNjdW11bGF0ZWQgc3VtLiBOZWVkcyBjaGVja2luZy4KQEAgLTE1NCw3ICsx
NTcsNyBAQCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpyZXNldFRvCiB2b2lkIFNW
R0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBl
cmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdCwgU1ZHU01JTEVsZW1lbnQqKQogewogICAgIFNWR0Vs
ZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7Ci0gICAgaWYgKCF0
YXJnZXRFbGVtZW50IHx8IGRldGVybWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZSh0YXJnZXRFbGVt
ZW50KSA9PSBBbmltYXRlZFVua25vd24pCisgICAgaWYgKCF0YXJnZXRFbGVtZW50IHx8IGRldGVy
bWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKHRhcmdldEVsZW1lbnQpID09IEFuaW1hdGVkVW5rbm93
bikKICAgICAgICAgcmV0dXJuOwogICAgIFNWR1RyYW5zZm9ybUxpc3QqIHRyYW5zZm9ybUxpc3Qg
PSB0cmFuc2Zvcm1MaXN0Rm9yKHRhcmdldEVsZW1lbnQpOwogICAgIEFTU0VSVCh0cmFuc2Zvcm1M
aXN0KTsKQEAgLTIwMCw3ICsyMDMsNyBAQCBTVkdUcmFuc2Zvcm0gU1ZHQW5pbWF0ZVRyYW5zZm9y
bUVsZW1lbnQ6CiB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjphcHBseVJlc3VsdHNU
b1RhcmdldCgpCiB7CiAgICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdl
dEVsZW1lbnQoKTsKLSAgICBpZiAoIXRhcmdldEVsZW1lbnQgfHwgZGV0ZXJtaW5lQW5pbWF0ZWRB
dHRyaWJ1dGVUeXBlKHRhcmdldEVsZW1lbnQpID09IEFuaW1hdGVkVW5rbm93bikKKyAgICBpZiAo
IXRhcmdldEVsZW1lbnQgfHwgZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUodGFyZ2V0RWxl
bWVudCkgPT0gQW5pbWF0ZWRVbmtub3duKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBh
Y2N1bXVsYXRlIHRvIHRoZSB0YXJnZXQgZWxlbWVudCB0cmFuc2Zvcm0gbGlzdCBzbyB0aGVyZSBp
cyBub3QgbXVjaCB0byBkbyBoZXJlLgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVUcmFuc2Zvcm1FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDcgKzQwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wg
aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKCkgY29uc3Q7Ci0gICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBl
IGRldGVybWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZShTVkdFbGVtZW50KikgY29uc3Q7CisgICAg
QW5pbWF0ZWRQcm9wZXJ0eVR5cGUgZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUoU1ZHRWxl
bWVudCopIGNvbnN0OwogCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5oCShyZXZpc2lv
biA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgdHlwZWRlZiBTVkdBbmltYXRlZFByb3BlcnR5VGVh
ck9mZjxTVkdBbgogREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdBbmltYXRlZEFuZ2xlLCBT
VkdBbmdsZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVf
QU5JTUFURURfQU5HTEVfTVVMVElQTEVfV1JBUFBFUlMoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUs
IFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkp
IFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZH
RE9NQXR0cmlidXRlSWRlbnRpZmllciwgU1ZHQW5pbWF0ZWRBbmdsZSwgU1ZHQW5nbGUsIFVwcGVy
UHJvcGVydHksIExvd2VyUHJvcGVydHkpCitERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0
ZWRBbmdsZSwgT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZp
ZXIsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNpZiBFTkFCTEUoU1ZHX0FOSU1B
VElPTikKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkQm9vbGVhbi5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOCBA
QCB0eXBlZGVmIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmCiBERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkQm9vbGVhbiwgYm9vbCwgVXBwZXJQcm9wZXJ0eSwgTG93
ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfQk9PTEVBTihPd25lclR5cGUs
IERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FO
SU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9j
YWxOYW1lKCksIFNWR0FuaW1hdGVkQm9vbGVhbiwgYm9vbCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQ
cm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZEJvb2xlYW4sIE93bmVy
VHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVy
dHksIExvd2VyUHJvcGVydHkpCiAKLSAgICAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIGNs
YXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZEVudW1lcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkRW51bWVyYXRpb24uaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCAr
MzMsNyBAQCB0eXBlZGVmIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmCiBERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY8
RW51bVR5cGU+LCBFbnVtVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2Rl
ZmluZSBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oT3duZXJUeXBlLCBET01BdHRyaWJ1dGUs
IFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHksIEVudW1UeXBlKSBcCi1ERUZJTkVfQU5JTUFU
RURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5h
bWUoKSwgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZjxFbnVtVHlwZT4sIEVu
dW1UeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQotCi0jZGVmaW5lIERFRklORV9B
TklNQVRFRF9FTlVNRVJBVElPTl9NVUxUSVBMRV9XUkFQUEVSUyhPd25lclR5cGUsIERPTUF0dHJp
YnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9w
ZXJ0eSwgRW51bVR5cGUpIFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERP
TUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgU1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvblByb3BlcnR5VGVhck9mZjxFbnVtVHlwZT4sIEVudW1UeXBlLCBVcHBlclByb3BlcnR5LCBM
b3dlclByb3BlcnR5KQorREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkRW51bWVyYXRp
b24sIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuaAkocmV2aXNpb24gOTA0
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDEwICszNCwxMSBAQCB0eXBlZGVmIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVy
dHlUZWFyT2ZmCiBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkSW50ZWdlciwg
bG9uZywgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5J
TUFURURfSU5URUdFUihPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93
ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0
cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVkSW50ZWdlciwgbG9u
ZywgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJU
WShBbmltYXRlZEludGVnZXIsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUu
bG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKKy8vIEZJWE1FOiBU
aGlzIGN1cnJlbnRseSBhbmltYXRlcyBhcyBudW1iZXItb3B0aW9uYWwtbnVtYmVyLCBpbnN0ZWFk
IG9mIGludGVnZXItb3B0aW9uYWwtaW50ZWdlciwgd2hpY2ggaXMgbWlzc2luZy4KICNkZWZpbmUg
REVGSU5FX0FOSU1BVEVEX0lOVEVHRVJfTVVMVElQTEVfV1JBUFBFUlMoT3duZXJUeXBlLCBET01B
dHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFVwcGVyUHJvcGVydHksIExvd2Vy
UHJvcGVydHkpIFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJp
YnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgU1ZHQW5pbWF0ZWRJbnRlZ2VyLCBsb25n
LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZ
KEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBT
VkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQog
CiAjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCiBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmgJKHJldmlzaW9uIDkwNDU0
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDcgKzM0LDcgQEAgdHlwZWRlZiBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxT
VkdMZQogREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdBbmltYXRlZExlbmd0aCwgU1ZHTGVu
Z3RoLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiAjZGVmaW5lIERFRklORV9BTklN
QVRFRF9MRU5HVEgoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2Vy
UHJvcGVydHkpIFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJp
YnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBTVkdBbmltYXRlZExlbmd0aCwgU1ZHTGVu
Z3RoLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRZKEFuaW1hdGVkTGVuZ3RoLCBPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRl
LmxvY2FsTmFtZSgpLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiAjaWYgRU5BQkxF
KFNWR19BTklNQVRJT04pCiBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuaAkocmV2aXNpb24gOTA0NTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDggKzM0LDggQEAgdHlwZWRlZiBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJP
ZmY8UwogREVDTEFSRV9BTklNQVRFRF9MSVNUX1BST1BFUlRZKFNWR0FuaW1hdGVkTGVuZ3RoTGlz
dCwgU1ZHTGVuZ3RoTGlzdCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmlu
ZSBERUZJTkVfQU5JTUFURURfTEVOR1RIX0xJU1QoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFRklORV9BTklNQVRFRF9MSVNUX1BST1BF
UlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNW
R0FuaW1hdGVkTGVuZ3RoTGlzdCwgU1ZHTGVuZ3RoTGlzdCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQ
cm9wZXJ0eSkKLSAgICAKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZExlbmd0aExp
c3QsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCisKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikK
IGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZE51bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZE51bWJlci5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZE51bWJlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMCArMzQsMTAgQEAgdHlw
ZWRlZiBTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZgogREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUWShTVkdBbmltYXRlZE51bWJlciwgZmxvYXQsIFVwcGVyUHJvcGVydHksIExvd2VyUHJv
cGVydHkpCiAKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX05VTUJFUihPd25lclR5cGUsIERPTUF0
dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVE
X1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1l
KCksIFNWR0FuaW1hdGVkTnVtYmVyLCBmbG9hdCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0
eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZE51bWJlciwgT3duZXJUeXBlLCBE
T01BdHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgVXBwZXJQcm9wZXJ0eSwgTG93
ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dS
QVBQRVJTKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVy
LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCi1ERUZJTkVfQU5JTUFURURfUFJPUEVS
VFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFNW
R0FuaW1hdGVkTnVtYmVyLCBmbG9hdCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RF
RklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLCBPd25l
clR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgVXBwZXJQcm9w
ZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2lmIEVOQUJMRShTVkdfQU5JTUFUSU9OKQogY2xhc3Mg
U1ZHQW5pbWF0aW9uRWxlbWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZE51bWJlckxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWROdW1iZXJMaXN0LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkTnVtYmVyTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCw4IEBAIHR5
cGVkZWYgU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFMKIERFQ0xBUkVfQU5JTUFURURf
TElTVF9QUk9QRVJUWShTVkdBbmltYXRlZE51bWJlckxpc3QsIFNWR051bWJlckxpc3QsIFVwcGVy
UHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX05VTUJF
Ul9MSVNUKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3Bl
cnR5KSBcCi1ERUZJTkVfQU5JTUFURURfTElTVF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJp
YnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBTVkdBbmltYXRlZE51bWJlckxpc3QsIFNW
R051bWJlckxpc3QsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCi0gICAgCitERUZJTkVf
QU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWROdW1iZXJMaXN0LCBPd25lclR5cGUsIERPTUF0dHJp
YnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3Bl
cnR5KQorCiAjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCiBjbGFzcyBTVkdBbmltYXRpb25FbGVt
ZW50OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVj
dFJhdGlvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJl
c2VydmVBc3BlY3RSYXRpby5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
OSArMzQsOCBAQCB0eXBlZGVmIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPFNWR1ByCiBERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbywgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpbywgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2Rl
ZmluZSBERUZJTkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhPd25lclR5cGUsIERPTUF0
dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVE
X1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1l
KCksIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbywgU1ZHUHJlc2VydmVBc3BlY3RSYXRp
bywgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJU
WShBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8sIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBE
T01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAK
LSAgICAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1l
bnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFJlY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRSZWN0LmgJKHJldmlzaW9uIDkw
NDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSw3ICszNSw3IEBAIHR5cGVkZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8
RmxvYXQKIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHQW5pbWF0ZWRSZWN0LCBGbG9hdFJl
Y3QsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNkZWZpbmUgREVGSU5FX0FOSU1B
VEVEX1JFQ1QoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJv
cGVydHkpIFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0
ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBTVkdBbmltYXRlZFJlY3QsIEZsb2F0UmVjdCwg
VXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShB
bmltYXRlZFJlY3QsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxO
YW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNpZiBFTkFCTEUoU1ZHX0FO
SU1BVElPTikKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBA
QCB0eXBlZGVmIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmCiBERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkU3RyaW5nLCBTdHJpbmcsIFVwcGVyUHJvcGVydHksIExv
d2VyUHJvcGVydHkpCiAKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX1NUUklORyhPd25lclR5cGUs
IERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FO
SU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9j
YWxOYW1lKCksIFNWR0FuaW1hdGVkU3RyaW5nLCBTdHJpbmcsIFVwcGVyUHJvcGVydHksIExvd2Vy
UHJvcGVydHkpCitERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWRTdHJpbmcsIE93bmVy
VHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVy
dHksIExvd2VyUHJvcGVydHkpCiAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIGNsYXNzIFNW
R0FuaW1hdGlvbkVsZW1lbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIs
NyBAQCB0eXBlZGVmIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5CiBERUNMQVJFX0FO
SU1BVEVEX0xJU1RfUFJPUEVSVFkoU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LCBTVkdUcmFuc2Zv
cm1MaXN0LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiAjZGVmaW5lIERFRklORV9B
TklNQVRFRF9UUkFOU0ZPUk1fTElTVChPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9w
ZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX0xJU1RfUFJPUEVSVFkoT3du
ZXJUeXBlLCBET01BdHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgU1ZHQW5pbWF0
ZWRUcmFuc2Zvcm1MaXN0LCBTVkdUcmFuc2Zvcm1MaXN0LCBVcHBlclByb3BlcnR5LCBMb3dlclBy
b3BlcnR5KQorREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkVHJhbnNmb3JtTGlzdCwg
T3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgVXBwZXJQ
cm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAkocmV2aXNpb24gOTA0NTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNyArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVNWR0FuaW1hdGVkVHlwZTo6U1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVkQXR0cmlidXRl
VHlwZSB0eXBlKQorU1ZHQW5pbWF0ZWRUeXBlOjpTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRQcm9w
ZXJ0eVR5cGUgdHlwZSkKICAgICA6IG1fdHlwZSh0eXBlKQogewogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFR5cGUuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlUmVj
dChGbG9hdFJlY3QqKTsKICAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNy
ZWF0ZVN0cmluZyhTdHJpbmcqKTsKIAotICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAgICAgU1ZHQW5nbGUmIGFuZ2xlKCk7CiAgICAg
Ym9vbCYgYm9vbGVhbigpOwpAQCAtNzksOSArNzksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQ
cmVzZXJ2ZUFzcGVjdFJhdGlvQmFzZVZhbHVlKGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8m
KTsKIAogcHJpdmF0ZToKLSAgICBTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRBdHRyaWJ1dGVUeXBl
KTsKKyAgICBTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRQcm9wZXJ0eVR5cGUpOwogCi0gICAgQW5p
bWF0ZWRBdHRyaWJ1dGVUeXBlIG1fdHlwZTsKKyAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBtX3R5
cGU7CiAKICAgICB1bmlvbiBEYXRhVW5pb24gewogICAgICAgICBEYXRhVW5pb24oKQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgJKHJldmlzaW9u
IDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQzLDE0ICs0MywxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRD
b250ZXh0RWxlbWVudChTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkgeyBtX2NvbnRleHRFbGVt
ZW50ID0gY29udGV4dEVsZW1lbnQ7IH0KICAgICAKIHByb3RlY3RlZDoKLSAgICBTVkdBbmltYXRl
ZFR5cGVBbmltYXRvcihBbmltYXRlZEF0dHJpYnV0ZVR5cGUgdHlwZSwgU1ZHQW5pbWF0aW9uRWxl
bWVudCogYW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCisgICAg
U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSwgU1ZHQW5p
bWF0aW9uRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1l
bnQpCiAgICAgICAgIDogbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9hbmltYXRpb25FbGVtZW50
KGFuaW1hdGlvbkVsZW1lbnQpCiAgICAgICAgICwgbV9jb250ZXh0RWxlbWVudChjb250ZXh0RWxl
bWVudCkKICAgICB7CiAgICAgfQogCi0gICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIG1fdHlwZTsK
KyAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBtX3R5cGU7CiAgICAgU1ZHQW5pbWF0aW9uRWxlbWVu
dCogbV9hbmltYXRpb25FbGVtZW50OwogICAgIFNWR0VsZW1lbnQqIG1fY29udGV4dEVsZW1lbnQ7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAko
cmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDEzICs1MiwyMCBAQCB1c2luZyBuYW1lc3BhY2Ug
c3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmlu
aXRpb25zCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdBbmltYXRpb25FbGVtZW50LCBTVkdO
YW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURf
UFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0FuaW1hdGlvbkVsZW1l
bnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5J
TUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R0FuaW1hdGlvbkVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAK
IFNWR0FuaW1hdGlvbkVsZW1lbnQ6OlNWR0FuaW1hdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU01JTEVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX2FuaW1hdGlvblZhbGlkKGZhbHNlKQogeworICAg
IHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQW5pbWF0aW9uRWxlbWVudCgpOwogfQog
CiBzdGF0aWMgdm9pZCBwYXJzZUtleVRpbWVzKGNvbnN0IFN0cmluZyYgcGFyc2UsIFZlY3Rvcjxm
bG9hdD4mIHJlc3VsdCwgYm9vbCB2ZXJpZnlPcmRlcikKQEAgLTIwMywyMiArMjEwLDYgQEAgdm9p
ZCBTVkdBbmltYXRpb25FbGVtZW50OjphdHRyaWJ1dGVDaGFuZwogICAgIFNWR1NNSUxFbGVtZW50
OjphdHRyaWJ1dGVDaGFuZ2VkKGF0dHIsIHByZXNlcnZlRGVjbHMpOwogfQogCi12b2lkIFNWR0Fu
aW1hdGlvbkVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCi17Ci0gICAgU1ZHU01JTEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0
ck5hbWUpOwotCi0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpz
eW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKQotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQoKTsKLSAgICBlbHNlIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFt
ZSkpCi0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5h
bWUpOwotfQotCiBmbG9hdCBTVkdBbmltYXRpb25FbGVtZW50OjpnZXRTdGFydFRpbWUoKSBjb25z
dAogewogICAgIHJldHVybiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGludGVydmFsQmVnaW4oKS52
YWx1ZSgpKTsKQEAgLTQ4Niw3ICs0NzcsNyBAQCB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmN1
cnJlbnRWYWx1ZXNGCiAgICAgQ2FsY01vZGUgY2FsY01vZGUgPSB0aGlzLT5jYWxjTW9kZSgpOwog
ICAgIGlmIChoYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlVGFnKSB8fCBoYXNUYWdOYW1lKFNW
R05hbWVzOjphbmltYXRlQ29sb3JUYWcpKSB7CiAgICAgICAgIGNvbnN0IFNWR0FuaW1hdGVFbGVt
ZW50KiBhbmltYXRlRWxlbWVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFNWR0FuaW1hdGVFbGVtZW50
Kj4odGhpcyk7Ci0gICAgICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBhdHRyaWJ1dGVUeXBlID0g
YW5pbWF0ZUVsZW1lbnQtPmRldGVybWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZSh0YXJnZXRFbGVt
ZW50KCkpOworICAgICAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBhdHRyaWJ1dGVUeXBlID0gYW5p
bWF0ZUVsZW1lbnQtPmRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKHRhcmdldEVsZW1lbnQo
KSk7CiAgICAgICAgIC8vIEZhbGwgYmFjayB0byBkaXNjcmV0ZSBhbmltYXRpb25zIGZvciBTdHJp
bmdzLgogICAgICAgICBpZiAoYXR0cmlidXRlVHlwZSA9PSBBbmltYXRlZEJvb2xlYW4KICAgICAg
ICAgICAgIHx8IGF0dHJpYnV0ZVR5cGUgPT0gQW5pbWF0ZWRFbnVtZXJhdGlvbgpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwOCw3ICsxMDgsNiBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIGF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVzZXJ2ZURlY2xzKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKGNvbnN0IFN0cmlu
ZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGJ5U3RyaW5nKSA9IDA7CkBAIC0xMjMsMTAgKzEyMiwxNCBAQCBwcml2YXRl
OgogICAgIGZsb2F0IGNhbGN1bGF0ZVBlcmNlbnRGb3JTcGxpbmUoZmxvYXQgcGVyY2VudCwgdW5z
aWduZWQgc3BsaW5lSW5kZXgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGNhbGN1bGF0ZUtleVRpbWVz
SW5kZXgoZmxvYXQgcGVyY2VudCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBk
ZWNsYXJhdGlvbnMKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHQW5pbWF0aW9uRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFO
KEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisg
ICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8gU1ZHVGVzdHMKKyAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6
c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5
bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1
aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0
ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7
IH0KIAogICAgIGJvb2wgbV9hbmltYXRpb25WYWxpZDsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRvckZhY3RvcnkuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcg
QEAgY2xhc3MgU1ZHQW5pbWF0aW9uRWxlbWVudDsKIAogY2xhc3MgU1ZHQW5pbWF0b3JGYWN0b3J5
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGVBbmltYXRv
cj4gY3JlYXRlKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1l
bnQqIGNvbnRleHRFbGVtZW50LCBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgYXR0cmlidXRlVHlwZSkK
KyAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGVBbmltYXRvcj4gY3JlYXRlKFNW
R0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRF
bGVtZW50LCBBbmltYXRlZFByb3BlcnR5VHlwZSBhdHRyaWJ1dGVUeXBlKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGFuaW1hdGlvbkVsZW1lbnQpOwogICAgICAgICBBU1NFUlQoY29udGV4dEVsZW1l
bnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkocmV2aXNp
b24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDExICszMywyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RI
KFNWR0NpcmNsZUVsZW1lbnQsIFNWR05hbWVzOjpjeEF0dHIsIEN4LCBjeCkKLURFRklORV9BTklN
QVRFRF9MRU5HVEgoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTmFtZXM6OmN5QXR0ciwgQ3ksIGN5KQot
REVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdDaXJjbGVFbGVtZW50LCBTVkdOYW1lczo6ckF0dHIs
IFIsIHIpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdDaXJjbGVFbGVtZW50LCBTVkdOYW1l
czo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJP
UEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZH
TmFtZXM6OmN4QXR0ciwgQ3gsIGN4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHQ2ly
Y2xlRWxlbWVudCwgU1ZHTmFtZXM6OmN5QXR0ciwgQ3ksIGN5KQorICAgIERFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTmFtZXM6OnJBdHRyLCBSLCByKQorICAgIERF
RklORV9BTklNQVRFRF9CT09MRUFOKFNWR0NpcmNsZUVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitC
RUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0NpcmNsZUVsZW1lbnQpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoY3gpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoY3kpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkocikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMK
IAogaW5saW5lIFNWR0NpcmNsZUVsZW1lbnQ6OlNWR0NpcmNsZUVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC00Niw2ICs1Niw3IEBAIGlu
bGluZSBTVkdDaXJjbGVFbGVtZW50OjpTVkdDaXJjbGVFbGVtZW4KICAgICAsIG1fcihMZW5ndGhN
b2RlT3RoZXIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmNpcmNsZVRhZykp
OworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQ2lyY2xlRWxlbWVudCgpOwog
fQogCiBQYXNzUmVmUHRyPFNWR0NpcmNsZUVsZW1lbnQ+IFNWR0NpcmNsZUVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0x
MzgsNjcgKzE0OSw2IEBAIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmcK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdDaXJjbGVFbGVtZW50Ojpz
eW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAg
IGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplQ3goKTsK
LSAgICAgICAgc3luY2hyb25pemVDeSgpOwotICAgICAgICBzeW5jaHJvbml6ZVIoKTsKLSAgICAg
ICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rl
c3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmli
dXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6
c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmN4QXR0cikgewotICAgICAgICBzeW5jaHJv
bml6ZUN4KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmN5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUN5KCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJBdHRyKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplUigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRl
KGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRo
aXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHQ2lyY2xlRWxl
bWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0K
LQotdm9pZCBTVkdDaXJjbGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmN4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Y3lBdHRyLCBBbmltYXRlZExl
bmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyQXR0
ciwgQW5pbWF0ZWRMZW5ndGgpOwotfQotCiB2b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OnRvUGF0aERh
dGEoUGF0aCYgcGF0aCkgY29uc3QKIHsKICAgICBBU1NFUlQocGF0aC5pc0VtcHR5KCkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDIyICs0NywyMiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotCi0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
dG9QYXRoRGF0YShQYXRoJikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0
aXZlTGVuZ3RocygpIGNvbnN0OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRp
b25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3gsIGN4KQotICAgIERFQ0xBUkVfQU5J
TUFURURfTEVOR1RIKEN5LCBjeSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSLCByKQot
Ci0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFU
RURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdDaXJjbGVF
bGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeCwgY3gpCisgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN5LCBjeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9MRU5HVEgoUiwgcikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RF
Q0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFs
IHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25p
emVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVu
c2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFn
ZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlw
UGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlw
UGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdDbGlwUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNSArMzQsMjQgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9u
cwotREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0NsaXBQYXRoRWxlbWVudCwgU1ZHTmFt
ZXM6OmNsaXBQYXRoVW5pdHNBdHRyLCBDbGlwUGF0aFVuaXRzLCBjbGlwUGF0aFVuaXRzLCBTVkdV
bml0VHlwZXM6OlNWR1VuaXRUeXBlKQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHQ2xpcFBh
dGhFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9E
RUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElP
TihTVkdDbGlwUGF0aEVsZW1lbnQsIFNWR05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0ciwgQ2xpcFBh
dGhVbml0cywgY2xpcFBhdGhVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICBE
RUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdDbGlwUGF0aEVsZW1lbnQsIFNWR05hbWVzOjpleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUwor
CitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0NsaXBQYXRoRWxlbWVudCkK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShjbGlwUGF0aFVuaXRzKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUg
U1ZHQ2xpcFBhdGhFbGVtZW50OjpTVkdDbGlwUGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX2NsaXBQYXRoVW5pdHMoU1ZH
VW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKFNWR05hbWVzOjpjbGlwUGF0aFRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQ
cm9wZXJ0aWVzRm9yU1ZHQ2xpcFBhdGhFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHQ2xp
cFBhdGhFbGVtZW50PiBTVkdDbGlwUGF0aEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC05OSw1MyArMTA4LDYgQEAgdm9p
ZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYQogICAgICAgICBvYmplY3QtPnNl
dE5lZWRzTGF5b3V0KHRydWUpOwogfQogCi12b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAo
YXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUNsaXBQYXRoVW5p
dHMoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0g
ICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwot
ICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0
eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9y
dGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmNsaXBQYXRoVW5pdHNBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplQ2xpcFBhdGhVbml0cygpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3Rz
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hy
b25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgU1ZHQ2xpcFBhdGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19h
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOwotCi0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxQYXNz
ZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpjbGlwUGF0aFVu
aXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci19Ci0KIHZvaWQgU1ZHQ2xpcFBhdGhFbGVt
ZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNo
YW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJz
ZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNTAsMTggKzUwLDE5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0
cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9w
ZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVD
aGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAw
KTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSosIFJlbmRlclN0eWxlKik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlv
bnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKENsaXBQYXRoVW5pdHMsIGNsaXBQ
YXRoVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgQkVHSU5fREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR0NsaXBQYXRoRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9FTlVNRVJBVElPTihDbGlwUGF0aFVuaXRzLCBjbGlwUGF0aFVuaXRzLCBTVkdVbml0
VHlwZXM6OlNWR1VuaXRUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBF
TkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKLSAgICAvLyBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgLy8gU1ZHVGVzdHMK
KyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0
czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVS
ZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVT
eXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhp
cyk7IH0KIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNCArMzAsMjUgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1B
VEVEX0VOVU1FUkFUSU9OKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdO
YW1lczo6dHlwZUF0dHIsIFR5cGUsIHR5cGUsIENvbXBvbmVudFRyYW5zZmVyVHlwZSkKLURFRklO
RV9BTklNQVRFRF9OVU1CRVJfTElTVChTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVu
dCwgU1ZHTmFtZXM6OnRhYmxlVmFsdWVzQXR0ciwgVGFibGVWYWx1ZXMsIHRhYmxlVmFsdWVzKQot
REVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVu
dCwgU1ZHTmFtZXM6OnNsb3BlQXR0ciwgU2xvcGUsIHNsb3BlKQotREVGSU5FX0FOSU1BVEVEX05V
TUJFUihTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OmludGVy
Y2VwdEF0dHIsIEludGVyY2VwdCwgaW50ZXJjZXB0KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihT
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OmFtcGxpdHVkZUF0
dHIsIEFtcGxpdHVkZSwgYW1wbGl0dWRlKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OmV4cG9uZW50QXR0ciwgRXhw
b25lbnQsIGV4cG9uZW50KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6Om9mZnNldEF0dHIsIE9mZnNldCwgb2Zmc2V0
KQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURf
RU5VTUVSQVRJT04oU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR05hbWVz
Ojp0eXBlQXR0ciwgVHlwZSwgdHlwZSwgQ29tcG9uZW50VHJhbnNmZXJUeXBlKQorICAgIERFRklO
RV9BTklNQVRFRF9OVU1CRVJfTElTVChTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVu
dCwgU1ZHTmFtZXM6OnRhYmxlVmFsdWVzQXR0ciwgVGFibGVWYWx1ZXMsIHRhYmxlVmFsdWVzKQor
ICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQsIFNWR05hbWVzOjpzbG9wZUF0dHIsIFNsb3BlLCBzbG9wZSkKKyAgICBERUZJTkVfQU5J
TUFURURfTlVNQkVSKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdOYW1l
czo6aW50ZXJjZXB0QXR0ciwgSW50ZXJjZXB0LCBpbnRlcmNlcHQpCisgICAgREVGSU5FX0FOSU1B
VEVEX05VTUJFUihTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6
OmFtcGxpdHVkZUF0dHIsIEFtcGxpdHVkZSwgYW1wbGl0dWRlKQorICAgIERFRklORV9BTklNQVRF
RF9OVU1CRVIoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR05hbWVzOjpl
eHBvbmVudEF0dHIsIEV4cG9uZW50LCBleHBvbmVudCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVN
QkVSKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdOYW1lczo6b2Zmc2V0
QXR0ciwgT2Zmc2V0LCBvZmZzZXQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKwor
QkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh0eXBl
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHRhYmxlVmFsdWVzKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHNsb3BlKQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKGludGVyY2VwdCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShhbXBsaXR1ZGUpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkoZXhwb25lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkob2Zm
c2V0KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogU1ZHQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbkVsZW1lbnQ6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6
IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC00Niw2ICs1Nyw3IEBAIFNWR0NvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpTVkcKICAgICAsIG1fYW1wbGl0dWRlKDEpCiAg
ICAgLCBtX2V4cG9uZW50KDEpCiB7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JT
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCgpOwogfQogCiBib29sIFNWR0NvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKQEAgLTExNCw4MSArMTI2LDYgQEAgdm9pZCBTVkdDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQogCi12b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRy
TmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplVHlwZSgpOwotICAgICAg
ICBzeW5jaHJvbml6ZVRhYmxlVmFsdWVzKCk7Ci0gICAgICAgIHN5bmNocm9uaXplU2xvcGUoKTsK
LSAgICAgICAgc3luY2hyb25pemVJbnRlcmNlcHQoKTsKLSAgICAgICAgc3luY2hyb25pemVBbXBs
aXR1ZGUoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHBvbmVudCgpOwotICAgICAgICBzeW5jaHJv
bml6ZU9mZnNldCgpOwotICAgICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjp0eXBlQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVR5cGUoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
dGFibGVWYWx1ZXNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplVGFibGVWYWx1ZXMoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c2xv
cGVBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplU2xvcGUoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW50ZXJjZXB0QXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZUludGVyY2VwdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjphbXBsaXR1ZGVBdHRyKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplQW1wbGl0dWRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmV4cG9uZW50QXR0cikgewotICAgICAgICBzeW5jaHJv
bml6ZUV4cG9uZW50KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6Om9mZnNldEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVPZmZzZXQo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
fQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbkVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXA7Ci19Ci0KLXZvaWQgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OmZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OnR5cGVBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRhYmxlVmFsdWVzQXR0ciwgQW5pbWF0ZWROdW1iZXJM
aXN0KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNsb3Bl
QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6aW50ZXJjZXB0QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6YW1wbGl0dWRlQXR0ciwgQW5pbWF0ZWRO
dW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZXhw
b25lbnRBdHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjpvZmZzZXRBdHRyLCBBbmltYXRlZE51bWJlcik7Ci19Ci0KIENvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb24gU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6
OnRyYW5zZmVyRnVuY3Rpb24oKSBjb25zdAogewogICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b24gZnVuYzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSwzMSArMjksNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IDogcHVibGljIFNWR0VsZW1l
bnQgewotcHVibGljOgotICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gdHJhbnNmZXJGdW5j
dGlvbigpIGNvbnN0OwotCi1wcm90ZWN0ZWQ6Ci0gICAgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0KLSAgICAvLyBG
SVhNRTogc3ZnQXR0cmlidXRlQ2hhbmdlZCBtaXNzaW5nLgotICAgIGJvb2wgaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQ
cm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgCi1wcml2YXRlOgot
ICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFU
RURfRU5VTUVSQVRJT04oVHlwZSwgdHlwZSwgQ29tcG9uZW50VHJhbnNmZXJUeXBlKQotICAgIERF
Q0xBUkVfQU5JTUFURURfTlVNQkVSX0xJU1QoVGFibGVWYWx1ZXMsIHRhYmxlVmFsdWVzKQotICAg
IERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFNsb3BlLCBzbG9wZSkKLSAgICBERUNMQVJFX0FOSU1B
VEVEX05VTUJFUihJbnRlcmNlcHQsIGludGVyY2VwdCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05V
TUJFUihBbXBsaXR1ZGUsIGFtcGxpdHVkZSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihF
eHBvbmVudCwgZXhwb25lbnQpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoT2Zmc2V0LCBv
ZmZzZXQpCi19OwotCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8Q29tcG9u
ZW50VHJhbnNmZXJUeXBlPiB7CiAgICAgc3RhdGljIENvbXBvbmVudFRyYW5zZmVyVHlwZSBoaWdo
ZXN0RW51bVZhbHVlKCkgeyByZXR1cm4gRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0dBTU1BOyB9
CkBAIC05NSw2ICs3MCwyOSBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8Q29tcG9uZW50VHJh
bnNmCiAgICAgfQogfTsKIAorY2xhc3MgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1l
bnQgOiBwdWJsaWMgU1ZHRWxlbWVudCB7CitwdWJsaWM6CisgICAgQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbiB0cmFuc2ZlckZ1bmN0aW9uKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBTVkdD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQqKTsKKworICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFuZ2VkIG1pc3NpbmcuCisg
ICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOworICAgIAorcHJp
dmF0ZToKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVS
QVRJT04oVHlwZSwgdHlwZSwgQ29tcG9uZW50VHJhbnNmZXJUeXBlKQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX05VTUJFUl9MSVNUKFRhYmxlVmFsdWVzLCB0YWJsZVZhbHVlcykKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU2xvcGUsIHNsb3BlKQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX05VTUJFUihJbnRlcmNlcHQsIGludGVyY2VwdCkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9OVU1CRVIoQW1wbGl0dWRlLCBhbXBsaXR1ZGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfTlVNQkVSKEV4cG9uZW50LCBleHBvbmVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9O
VU1CRVIoT2Zmc2V0LCBvZmZzZXQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElF
UworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykg
JiYgRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1l
bnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDIwIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9B
TklNQVRFRF9MRU5HVEgoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQot
REVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdDdXJzb3JFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIs
IFksIHkpCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0N1cnNvckVsZW1lbnQsIFhMaW5rTmFt
ZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHQ3Vy
c29yRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorQkVHSU5f
REVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNW
R0N1cnNvckVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKKyAgICBERUZJTkVfQU5JTUFU
RURfTEVOR1RIKFNWR0N1cnNvckVsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKKyAgICBE
RUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0N1cnNvckVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZB
dHRyLCBIcmVmLCBocmVmKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0N1cnNvckVs
ZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVf
QU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR0N1cnNvckVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
eCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5KQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGhyZWYpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJF
TlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9Q
Uk9QRVJUSUVTCiAKIGlubGluZSBTVkdDdXJzb3JFbGVtZW50OjpTVkdDdXJzb3JFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNW
R0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC00Miw2ICs1MSw3IEBAIGlubGluZSBTVkdD
dXJzb3JFbGVtZW50OjpTVkdDdXJzb3JFbGVtZW4KICAgICAsIG1feShMZW5ndGhNb2RlSGVpZ2h0
KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpjdXJzb3JUYWcpKTsKKyAgICBy
ZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0N1cnNvckVsZW1lbnQoKTsKIH0KIAogUGFz
c1JlZlB0cjxTVkdDdXJzb3JFbGVtZW50PiBTVkdDdXJzb3JFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtOTYsMjAgKzEw
Niw2IEBAIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0N1
cnNvckVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXA7Ci19Ci0KLXZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVk
TnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlB
dHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0KIHZvaWQgU1ZHQ3Vy
c29yRWxlbWVudDo6YWRkQ2xpZW50KFNWR0VsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgbV9jbGll
bnRzLmFkZChlbGVtZW50KTsKQEAgLTE0Nyw1MSArMTQzLDYgQEAgdm9pZCBTVkdDdXJzb3JFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZwogICAgICAgICAoKml0KS0+c2V0TmVlZHNTdHlsZVJlY2Fs
YygpOwogfQogCi12b2lkIFNWR0N1cnNvckVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFO
YW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWSgp
OwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAg
ICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3Bl
cnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0VsZW1lbnQ6OnN5bmNo
cm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVgo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6eUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVVJJUmVmZXJl
bmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUhy
ZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdUZXN0czo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJv
cGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQogdm9pZCBTVkdDdXJzb3JFbGVtZW50OjphZGRTdWJy
ZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0CiB7CiAg
ICAgU1ZHRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUz
LDIxICs1MywyMCBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OwogCi0gICAg
Ly8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEgoWCwgeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQotCi0gICAgLy8g
U1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikK
LQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1B
VEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQ3Vyc29y
RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9T
VFJJTkcoSHJlZiwgaHJlZikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5E
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0
dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hy
b25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9u
aXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4
dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5n
dWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KIAog
ICAgIEhhc2hTZXQ8U1ZHRWxlbWVudCo+IG1fY2xpZW50czsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdEZWZzRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDIx
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5p
dGlvbnMKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0RlZnNFbGVtZW50LCBTVkdOYW1lczo6
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVS
VElFUworICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0RlZnNFbGVtZW50LCBTVkdOYW1l
czo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdEZWZzRWxlbWVu
dCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAog
aW5saW5lIFNWR0RlZnNFbGVtZW50OjpTVkdEZWZzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShT
VkdOYW1lczo6ZGVmc1RhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZH
RGVmc0VsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdEZWZzRWxlbWVudD4gU1ZHRGVmc0Vs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCkBAIC01MiwyMiArNjAsNiBAQCBSZW5kZXJPYmplY3QqIFNWR0RlZnNFbGVtZW50Ojpj
cmVhdGVSZW5kCiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5l
cih0aGlzKTsKIH0KIAotdm9pZCBTVkdEZWZzRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0
aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCi0gICAg
ICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgIGVsc2UgaWYg
KFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKLSAgICAgICAgU1ZHVGVzdHM6
OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci19Ci0KIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuaAkocmV2
aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDMsMTIgKzQzLDE1IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29s
IGlzVmFsaWQoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCi0gICAgLy8gQW5pbWF0ZWQg
cHJvcGVydHkgZGVjbGFyYXRpb25zCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR0RlZnNFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBF
TkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKLSAgICAvLyBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgLy8gU1ZHVGVzdHMK
KyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0
czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVS
ZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVT
eXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhp
cyk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODUsMjMgKzI4NSw5IEBAIHZvaWQgU1ZHRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXQKICAgICAgICAgU3R5bGVkRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBTVkdFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit2b2lkIFNWR0VsZW1l
bnQ6OmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIFZlY3RvcjxBbmltYXRlZFByb3BlcnR5VHlwZT4mIHByb3BlcnR5VHlw
ZXMpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi1BbmltYXRlZEF0dHJpYnV0ZVR5cGUgU1ZHRWxl
bWVudDo6YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGFuaW1hdGVk
QXR0cmlidXRlTWFwID0gYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICBpZiAoYW5p
bWF0ZWRBdHRyaWJ1dGVNYXAuaXNFbXB0eSgpKQotICAgICAgICBmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKLSAgICBpZiAoYW5pbWF0ZWRBdHRyaWJ1dGVNYXAuY29udGFpbnMoYXR0
ck5hbWUpKQotICAgICAgICByZXR1cm4gYW5pbWF0ZWRBdHRyaWJ1dGVNYXAuZ2V0KGF0dHJOYW1l
KTsKLSAgICBpZiAoaXNTdHlsZWQoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR1N0
eWxlZEVsZW1lbnQqPih0aGlzKS0+YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JDU1NQcm9wZXJ0eShh
dHRyTmFtZSk7Ci0KLSAgICByZXR1cm4gQW5pbWF0ZWRVbmtub3duOworICAgIGxvY2FsQXR0cmli
dXRlVG9Qcm9wZXJ0eU1hcCgpLmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGF0dHJp
YnV0ZU5hbWUsIHByb3BlcnR5VHlwZXMpOwogfQogCiBib29sIFNWR0VsZW1lbnQ6OmhhdmVMb2Fk
ZWRSZXF1aXJlZFJlc291cmNlcygpCkBAIC0zOTIsMTMgKzM3OCw0MiBAQCB2b2lkIFNWR0VsZW1l
bnQ6OnVwZGF0ZUFuaW1hdGVkU1ZHQXR0cmliCiAKICAgICBzZXRJc1N5bmNocm9uaXppbmdTVkdB
dHRyaWJ1dGVzKCk7CiAKLSAgICBjb25zdF9jYXN0PFNWR0VsZW1lbnQqPih0aGlzKS0+c3luY2hy
b25pemVQcm9wZXJ0eShuYW1lKTsKLSAgICBpZiAobmFtZSA9PSBhbnlRTmFtZSgpKQorICAgIFNW
R0VsZW1lbnQqIG5vbkNvbnN0VGhpcyA9IGNvbnN0X2Nhc3Q8U1ZHRWxlbWVudCo+KHRoaXMpOwor
ICAgIGlmIChuYW1lID09IGFueVFOYW1lKCkpIHsKKyAgICAgICAgbm9uQ29uc3RUaGlzLT5sb2Nh
bEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKS5zeW5jaHJvbml6ZVByb3BlcnRpZXMobm9uQ29uc3RU
aGlzKTsKICAgICAgICAgc2V0QXJlU1ZHQXR0cmlidXRlc1ZhbGlkKCk7CisgICAgfSBlbHNlCisg
ICAgICAgIG5vbkNvbnN0VGhpcy0+bG9jYWxBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCkuc3luY2hy
b25pemVQcm9wZXJ0eShub25Db25zdFRoaXMsIG5hbWUpOwogCiAgICAgY2xlYXJJc1N5bmNocm9u
aXppbmdTVkdBdHRyaWJ1dGVzKCk7CiB9CiAKK1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAmIFNW
R0VsZW1lbnQ6OmxvY2FsQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpCit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNWR0F0dHJpYnV0ZVRvUHJv
cGVydHlNYXAsIGR1bW15TWFwLCAoKSk7CisgICAgcmV0dXJuIGR1bW15TWFwOworfQorCit2b2lk
IFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh2b2lkKiBjb250ZXh0RWxl
bWVudCkKK3sKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgIHN0YXRpY19jYXN0PFNW
R0VsZW1lbnQqPihjb250ZXh0RWxlbWVudCktPnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygp
OworfQorCit2b2lkIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKHZv
aWQqIGNvbnRleHRFbGVtZW50KQoreworICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7CisgICAg
c3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KGNvbnRleHRFbGVtZW50KS0+c3luY2hyb25pemVSZXF1
aXJlZEV4dGVuc2lvbnMoKTsKK30KKwordm9pZCBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3Rl
bUxhbmd1YWdlKHZvaWQqIGNvbnRleHRFbGVtZW50KQoreworICAgIEFTU0VSVChjb250ZXh0RWxl
bWVudCk7CisgICAgc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KGNvbnRleHRFbGVtZW50KS0+c3lu
Y2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZH
KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDQ3ICsyNCwy
NyBAQAogCiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdMb2NhdGFibGUuaCIKKyNpbmNs
dWRlICJTVkdQcm9wZXJ0eUluZm8uaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIEFuaW1h
dGVkQXR0cmlidXRlVHlwZSB7Ci0gICAgQW5pbWF0ZWRBbmdsZSwKLSAgICBBbmltYXRlZEJvb2xl
YW4sCi0gICAgQW5pbWF0ZWRDb2xvciwKLSAgICBBbmltYXRlZEVudW1lcmF0aW9uLAotICAgIEFu
aW1hdGVkSW50ZWdlciwKLSAgICBBbmltYXRlZExlbmd0aCwKLSAgICBBbmltYXRlZExlbmd0aExp
c3QsCi0gICAgQW5pbWF0ZWROdW1iZXIsCi0gICAgQW5pbWF0ZWROdW1iZXJMaXN0LAotICAgIEFu
aW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIsCi0gICAgQW5pbWF0ZWRQYXRoLAotICAgIEFuaW1h
dGVkUG9pbnRzLAotICAgIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbywKLSAgICBBbmltYXRl
ZFJlY3QsCi0gICAgQW5pbWF0ZWRTdHJpbmcsCi0gICAgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LAot
ICAgIEFuaW1hdGVkVW5rbm93bgotfTsKLQogZW51bSBTVkdQYXJzaW5nRXJyb3IgewogICAgIE5v
RXJyb3IsCiAgICAgUGFyc2luZ0F0dHJpYnV0ZUZhaWxlZEVycm9yLAogICAgIE5lZ2F0aXZlVmFs
dWVGb3JiaWRkZW5FcnJvcgogfTsKIAotdHlwZWRlZiBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIEFu
aW1hdGVkQXR0cmlidXRlVHlwZT4gQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci0KK2NsYXNz
IEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIENTU0N1cnNvckltYWdlVmFsdWU7CiBjbGFzcyBEb2N1
bWVudDsKK2NsYXNzIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA7CiBjbGFzcyBTVkdDdXJzb3JF
bGVtZW50OwogY2xhc3MgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOwogY2xhc3MgU1ZHRWxlbWVudElu
c3RhbmNlOwogY2xhc3MgU1ZHRWxlbWVudFJhcmVEYXRhOwogY2xhc3MgU1ZHU1ZHRWxlbWVudDsK
LWNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIAogY2xhc3MgU1ZHRWxlbWVudCA6IHB1YmxpYyBTdHls
ZWRFbGVtZW50IHsKIHB1YmxpYzoKQEAgLTkxLDEyICs3MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJikgeyB9
Ci0KLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwotICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBhbmltYXRlZFByb3Bl
cnR5VHlwZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkgeyB9CisgICAgdmlydHVhbCB2
b2lkIGFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBWZWN0b3I8QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+Jik7CiAKICAgICB2b2lkIHNlbmRTVkdMb2Fk
RXZlbnRJZlBvc3NpYmxlKGJvb2wgc2VuZFBhcmVudExvYWRFdmVudHMgPSBmYWxzZSk7CiAKQEAg
LTExNSw2ICs5MSwxNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0
ZWRTVkdBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogCisgICAgc3RhdGlj
IHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHZvaWQqIGNvbnRleHRFbGVtZW50KTsK
KyAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh2b2lkKiBjb250
ZXh0RWxlbWVudCk7CisgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh2
b2lkKiBjb250ZXh0RWxlbWVudCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1
aXJlZEZlYXR1cmVzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRF
eHRlbnNpb25zKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3Vh
Z2UoKSB7IH0KKworICAgIHZpcnR1YWwgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgbG9jYWxB
dHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCk7CisKIHByb3RlY3RlZDoKICAgICBTVkdFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCkBAIC0xNDEsNyArMTI3LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIG1hcEluc3RhbmNlVG9FbGVtZW50KFNWR0VsZW1lbnRJbnN0YW5jZSop
OwogICAgIHZvaWQgcmVtb3ZlSW5zdGFuY2VNYXBwaW5nKFNWR0VsZW1lbnRJbnN0YW5jZSopOwog
Ci0gICAgdmlydHVhbCBib29sIGhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygpOworICAgIHZp
cnR1YWwgYm9vbCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKTsgICAgCiB9OwogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDkw
NDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDIzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8g
QW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZH
RWxsaXBzZUVsZW1lbnQsIFNWR05hbWVzOjpjeEF0dHIsIEN4LCBjeCkKLURFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR05hbWVzOjpjeUF0dHIsIEN5LCBjeSkKLURF
RklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR05hbWVzOjpyeEF0dHIs
IFJ4LCByeCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR05h
bWVzOjpyeUF0dHIsIFJ5LCByeSkKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0VsbGlwc2VF
bGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJ
TkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRWxs
aXBzZUVsZW1lbnQsIFNWR05hbWVzOjpjeEF0dHIsIEN4LCBjeCkKKyAgICBERUZJTkVfQU5JTUFU
RURfTEVOR1RIKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdOYW1lczo6Y3lBdHRyLCBDeSwgY3kpCisg
ICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTmFtZXM6OnJ4
QXR0ciwgUngsIHJ4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRWxsaXBzZUVsZW1l
bnQsIFNWR05hbWVzOjpyeUF0dHIsIFJ5LCByeSkKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVB
TihTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRB
dHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHRWxsaXBzZUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoY3gpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
Y3kpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocngpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocnkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJF
TlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAg
ICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJ
U1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdFbGxpcHNlRWxlbWVudDo6U1ZH
RWxsaXBzZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpCkBAIC00OCw2ICs1OSw3IEBAIGlubGluZSBTVkdFbGxpcHNlRWxlbWVudDo6U1ZHRWxs
aXBzZUVsZW0KICAgICAsIG1fcnkoTGVuZ3RoTW9kZUhlaWdodCkKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShTVkdOYW1lczo6ZWxsaXBzZVRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9w
ZXJ0aWVzRm9yU1ZHRWxsaXBzZUVsZW1lbnQoKTsKIH0gICAgCiAKIFBhc3NSZWZQdHI8U1ZHRWxs
aXBzZUVsZW1lbnQ+IFNWR0VsbGlwc2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTQ5LDc0ICsxNjEsNiBAQCB2b2lk
IFNWR0VsbGlwc2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKLXZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFu
eVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVDeCgpOwotICAgICAgICBzeW5jaHJvbml6
ZUN5KCk7Ci0gICAgICAgIHN5bmNocm9uaXplUngoKTsKLSAgICAgICAgc3luY2hyb25pemVSeSgp
OwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAg
ICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAg
ICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6Y3hBdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplQ3goKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6Y3lBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplQ3koKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cnhBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplUngoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cnlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplUnkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBz
eW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsK
LSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
LQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0VsbGlwc2VFbGVtZW50OjphdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwot
ICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0Vs
bGlwc2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRo
aXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsgICAgCi0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjpjeEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmN5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwot
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cnhBdHRyLCBBbmlt
YXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjpyeUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLX0KLQogdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6
dG9QYXRoRGF0YShQYXRoJiBwYXRoKSBjb25zdAogewogICAgIEFTU0VSVChwYXRoLmlzRW1wdHko
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAkocmV2aXNpb24g
OTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsMjIgKzQ3LDIzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgdG9QYXRoRGF0YShQYXRoJikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2Vs
Zkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkg
ZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3gsIGN4KQotICAgIERF
Q0xBUkVfQU5JTUFURURfTEVOR1RIKEN5LCBjeSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdU
SChSeCwgcngpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUnksIHJ5KQotCi0gICAgLy8g
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVB
TihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQor
ICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdFbGxpcHNlRWxlbWVudCkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3gsIGN4KQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX0xFTkdUSChDeSwgY3kpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RI
KFJ4LCByeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUnksIHJ5KQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVp
cmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhp
cyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hy
b25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCShyZXZpc2lv
biA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDE2ICszMSwyNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5H
KFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKLURFRklORV9B
TklNQVRFRF9TVFJJTkcoU1ZHRkVCbGVuZEVsZW1lbnQsIFNWR05hbWVzOjppbjJBdHRyLCBJbjIs
IGluMikKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRUJsZW5kRWxlbWVudCwgU1ZH
TmFtZXM6Om1vZGVBdHRyLCBNb2RlLCBtb2RlLCBCbGVuZE1vZGVUeXBlKQorQkVHSU5fREVGSU5F
X0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFQmxl
bmRFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKKyAgICBERUZJTkVfQU5JTUFU
RURfU1RSSU5HKFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdOYW1lczo6aW4yQXR0ciwgSW4yLCBpbjIp
CisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdO
YW1lczo6bW9kZUF0dHIsIE1vZGUsIG1vZGUsIEJsZW5kTW9kZVR5cGUpCitFTkRfREVGSU5FX0FO
SU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhT
VkdGRUJsZW5kRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShp
bjEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4yKQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKG1vZGUpCisgICAgUkVHSVNURVJfUEFSRU5UX0FO
SU1BVEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQor
RU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZFQmxlbmRFbGVt
ZW50OjpTVkdGRUJsZW5kRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXModGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX21vZGUoRkVCTEVORF9NT0RFX05PUk1BTCkK
IHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVCbGVuZFRhZykpOworICAgIHJl
Z2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVCbGVuZEVsZW1lbnQoKTsKIH0KIAogUGFz
c1JlZlB0cjxTVkdGRUJsZW5kRWxlbWVudD4gU1ZHRkVCbGVuZEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xMTksNTUg
KzEyOCw2IEBAIHZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW4KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAo
YXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZU1vZGUoKTsKLSAg
ICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgc3luY2hyb25pemVJbjIoKTsKLSAgICAg
ICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBw
b3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1vZGVBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplTW9kZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgc3luY2hy
b25pemVJbjEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6aW4yQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMigpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRUJsZW5kRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1
cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRUJsZW5kRWxl
bWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXApOyAgICAKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW4yQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwot
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6bW9kZUF0dHIsIEFu
aW1hdGVkRW51bWVyYXRpb24pOwotfQotCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVC
bGVuZEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRl
ciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+
Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVu
ZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVs
ZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVu
ZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMjggKzI4LDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBTVkdGRUJsZW5kRWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNWR0ZFQmxlbmRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Kik7Ci0KLXByaXZhdGU6Ci0gICAgU1ZHRkVCbGVuZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Kik7Ci0KLSAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKik7Ci0gICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShG
aWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSk7Ci0gICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmly
dHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiwgRmlsdGVyKik7Ci0KLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJh
dGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKLSAgICBERUNMQVJF
X0FOSU1BVEVEX1NUUklORyhJbjIsIGluMikKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFU
SU9OKE1vZGUsIG1vZGUsIEJsZW5kTW9kZVR5cGUpCi19OwotCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3Qg
U1ZHUHJvcGVydHlUcmFpdHM8QmxlbmRNb2RlVHlwZT4gewogICAgIHN0YXRpYyBCbGVuZE1vZGVU
eXBlIGhpZ2hlc3RFbnVtVmFsdWUoKSB7IHJldHVybiBGRUJMRU5EX01PREVfTElHSFRFTjsgfQpA
QCAtOTEsNiArNjksMjYgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPEJsZW5kTW9kZVR5cGU+
IAogICAgIH0KIH07CiAKK2NsYXNzIFNWR0ZFQmxlbmRFbGVtZW50IDogcHVibGljIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U1ZHRkVCbGVuZEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBTVkdGRUJsZW5kRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqKTsKKworICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdHRyaWJ1dGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRl
KEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlcios
IEZpbHRlciopOworCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZF
QmxlbmRFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4yLCBpbjIpCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfRU5VTUVSQVRJT04oTW9kZSwgbW9kZSwgQmxlbmRNb2RlVHlwZSkKKyAgICBF
TkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDE2ICszMSwyNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVk
IHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKLURFRklORV9BTklNQVRF
RF9FTlVNRVJBVElPTihTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OnR5cGVBdHRy
LCBUeXBlLCB0eXBlLCBDb2xvck1hdHJpeFR5cGUpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSX0xJ
U1QoU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQsIFNWR05hbWVzOjp2YWx1ZXNBdHRyLCBWYWx1ZXMs
IHZhbHVlcykKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FO
SU1BVEVEX1NUUklORyhTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwg
SW4xLCBpbjEpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50LCBTVkdOYW1lczo6dHlwZUF0dHIsIFR5cGUsIHR5cGUsIENvbG9yTWF0cml4VHlw
ZSkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSX0xJU1QoU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQsIFNWR05hbWVzOjp2YWx1ZXNBdHRyLCBWYWx1ZXMsIHZhbHVlcykKK0VORF9ERUZJTkVfQU5J
TUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKGluMSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh0eXBlKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHZhbHVlcykKKyAgICBSRUdJU1RFUl9Q
QVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fdHlwZShG
RUNPTE9STUFUUklYX1RZUEVfVU5LTk9XTikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdO
YW1lczo6ZmVDb2xvck1hdHJpeFRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVz
Rm9yU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRUNvbG9y
TWF0cml4RWxlbWVudD4gU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xMjQsNTUgKzEzMyw2
IEBAIHZvaWQgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJpYnUKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAo
YXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVR5cGUoKTsKLSAg
ICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgc3luY2hyb25pemVWYWx1ZXMoKTsKLSAg
ICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnR5cGVB
dHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplVHlwZSgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVJbjEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6dmFsdWVzQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVZhbHVlcygp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAs
ICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9p
ZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp0eXBlQXR0ciwg
QW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjp2YWx1ZXNBdHRyLCBBbmltYXRlZE51bWJlckxpc3QpOwotfQotCiBQYXNzUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVm
ZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAkocmV2aXNp
b24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjksMjggKzI5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTVkdGRUNvbG9yTWF0cml4RWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Kik7Ci0KLXByaXZhdGU6Ci0gICAgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0KLSAgICBib29sIGlzU3VwcG9ydGVkQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRB
dHRyaWJ1dGUoQXR0cmlidXRlKik7Ci0gICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0
dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmly
dHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiwgRmlsdGVyKik7Ci0KLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJh
dGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKLSAgICBERUNMQVJF
X0FOSU1BVEVEX0VOVU1FUkFUSU9OKFR5cGUsIHR5cGUsIENvbG9yTWF0cml4VHlwZSkKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX05VTUJFUl9MSVNUKFZhbHVlcywgdmFsdWVzKQotfTsKLQogdGVtcGxh
dGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPENvbG9yTWF0cml4VHlwZT4gewogICAgIHN0
YXRpYyBDb2xvck1hdHJpeFR5cGUgaGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJuIEZFQ09MT1JN
QVRSSVhfVFlQRV9MVU1JTkFOQ0VUT0FMUEhBOyB9CkBAIC04OCw2ICs2NiwyNiBAQCBzdHJ1Y3Qg
U1ZHUHJvcGVydHlUcmFpdHM8Q29sb3JNYXRyaXhUeXBlCiAgICAgfQogfTsKIAorY2xhc3MgU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRUNvbG9yTWF0
cml4RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCitw
cml2YXRlOgorICAgIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCopOworCisgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSopOworICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVy
RWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CisKKyAg
ICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFR5cGUsIHR5cGUsIENvbG9yTWF0cml4VHlwZSkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVJfTElTVChWYWx1ZXMsIHZhbHVlcykKKyAg
ICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCit9OworCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCShyZXZpc2lvbiA5
MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEzICszNCwyMCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotREVGSU5FX0FOSU1B
VEVEX1NUUklORyhTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0
ciwgSW4xLCBpbjEpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklO
RV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQsIFNWR05hbWVz
OjppbkF0dHIsIEluMSwgaW4xKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JF
R0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQorICAgIFJF
R0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGlu
ZSBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQog
ICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3Vt
ZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUNvbXBvbmVudFRyYW5z
ZmVyVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTcyLDQxICs3OSw2
IEBAIHZvaWQgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OnBhcnMKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAg
ICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgp
OwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9u
aXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVy
biBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAg
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9
IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQogUGFz
c1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAg
ICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4x
KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJh
bnNmZXJFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEzICsz
NywxMSBAQCBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFuZ2VkIG1pc3Np
bmcuCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwotICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAg
dmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNs
YXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICBCRUdJ
Tl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAgIEVORF9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwyMCArMzEsMzMgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1B
VEVEX1NUUklORyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwg
aW4xKQotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05h
bWVzOjppbjJBdHRyLCBJbjIsIGluMikKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdG
RUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjpvcGVyYXRvckF0dHIsIF9vcGVyYXRvciwgX29w
ZXJhdG9yLCBDb21wb3NpdGVPcGVyYXRpb25UeXBlKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihT
VkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjprMUF0dHIsIEsxLCBrMSkKLURFRklORV9B
TklNQVRFRF9OVU1CRVIoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6azJBdHRyLCBL
MiwgazIpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZH
TmFtZXM6OmszQXR0ciwgSzMsIGszKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUNvbXBv
c2l0ZUVsZW1lbnQsIFNWR05hbWVzOjprNEF0dHIsIEs0LCBrNCkKK0JFR0lOX0RFRklORV9BTklN
QVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUNvbXBvc2l0
ZUVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklORV9BTklNQVRF
RF9TVFJJTkcoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6aW4yQXR0ciwgSW4yLCBp
bjIpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFQ29tcG9zaXRlRWxlbWVu
dCwgU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciwgX29wZXJhdG9yLCBfb3BlcmF0b3IsIENvbXBvc2l0
ZU9wZXJhdGlvblR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUNvbXBvc2l0
ZUVsZW1lbnQsIFNWR05hbWVzOjprMUF0dHIsIEsxLCBrMSkKKyAgICBERUZJTkVfQU5JTUFURURf
TlVNQkVSKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6OmsyQXR0ciwgSzIsIGsyKQor
ICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1l
czo6azNBdHRyLCBLMywgazMpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUNvbXBv
c2l0ZUVsZW1lbnQsIFNWR05hbWVzOjprNEF0dHIsIEs0LCBrNCkKK0VORF9ERUZJTkVfQU5JTUFU
RURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZF
Q29tcG9zaXRlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShp
bjEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4yKQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKF9vcGVyYXRvcikKKyAgICBSRUdJU1RFUl9MT0NB
TF9BTklNQVRFRF9QUk9QRVJUWShrMSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWShrMikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrMykKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrNCkKKyAgICBSRUdJU1RFUl9QQVJFTlRf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMp
CitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHRkVDb21wb3Np
dGVFbGVtZW50OjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9fb3BlcmF0b3IoRkVDT01Q
T1NJVEVfT1BFUkFUT1JfT1ZFUikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6
ZmVDb21wb3NpdGVUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZF
Q29tcG9zaXRlRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFQ29tcG9zaXRlRWxlbWVu
dD4gU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTYwLDgzICsxNzMsNiBAQCB2b2lkIFNWR0ZF
Q29tcG9zaXRlRWxlbWVudDo6c3ZnQXR0cmlidXRlCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLXZvaWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlR
TmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplX29wZXJhdG9yKCk7Ci0gICAgICAgIHN5bmNo
cm9uaXplSW4xKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSW4yKCk7Ci0gICAgICAgIHN5bmNocm9u
aXplSzEoKTsKLSAgICAgICAgc3luY2hyb25pemVLMigpOwotICAgICAgICBzeW5jaHJvbml6ZUsz
KCk7Ci0gICAgICAgIHN5bmNocm9uaXplSzQoKTsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3lu
Y2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0cikgewotICAgICAgICBzeW5j
aHJvbml6ZV9vcGVyYXRvcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aW4yQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMigpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjprMUF0dHIpIHsKLSAgICAgICAg
c3luY2hyb25pemVLMSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjprMkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVLMigpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjprM0F0
dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVLMygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjprNEF0dHIpIHsKLSAgICAgICAgc3luY2hy
b25pemVLNCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19
Ci0KLXZvaWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAg
ICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7ICAgIAotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRl
ZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpp
bjJBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjpvcGVyYXRvckF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6azFBdHRyLCBBbmltYXRlZE51
bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjprMkF0
dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OmszQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6azRBdHRyLCBBbmltYXRlZE51bWJlcik7Ci19Ci0KIFBh
c3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRl
ckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCShyZXZpc2lv
biA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjksMzIgKzI5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdG
RUNvbXBvc2l0ZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKLQotcHJpdmF0ZToKLSAgICBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Kik7Ci0KLSAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKik7Ci0gICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShG
aWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiwgRmlsdGVyKik7Ci0KLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKLSAgICBERUNMQVJFX0FOSU1BVEVE
X1NUUklORyhJbjIsIGluMikKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKF9vcGVy
YXRvciwgX29wZXJhdG9yLCBDb21wb3NpdGVPcGVyYXRpb25UeXBlKQotICAgIERFQ0xBUkVfQU5J
TUFURURfTlVNQkVSKEsxLCBrMSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLMiwgazIp
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoSzMsIGszKQotICAgIERFQ0xBUkVfQU5JTUFU
RURfTlVNQkVSKEs0LCBrNCkKLX07Ci0KIHRlbXBsYXRlPD4KIHN0cnVjdCBTVkdQcm9wZXJ0eVRy
YWl0czxDb21wb3NpdGVPcGVyYXRpb25UeXBlPiB7CiAgICAgc3RhdGljIENvbXBvc2l0ZU9wZXJh
dGlvblR5cGUgaGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJuIEZFQ09NUE9TSVRFX09QRVJBVE9S
X0FSSVRITUVUSUM7IH0KQEAgLTEwMCw2ICs3NCwzMCBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFp
dHM8Q29tcG9zaXRlT3BlcmF0CiAgICAgfQogfTsKIAorY2xhc3MgU1ZHRkVDb21wb3NpdGVFbGVt
ZW50IDogcHVibGljIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVDb21wb3NpdGVFbGVtZW50PiBjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisKK3ByaXZhdGU6CisgICAgU1ZHRkVD
b21wb3NpdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCisgICAg
Ym9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmly
dHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOworICAgIHZpcnR1YWwg
Ym9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlm
aWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CisKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHRkVDb21wb3NpdGVFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkco
SW4yLCBpbjIpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oX29wZXJhdG9y
LCBfb3BlcmF0b3IsIENvbXBvc2l0ZU9wZXJhdGlvblR5cGUpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfTlVNQkVSKEsxLCBrMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoSzIs
IGsyKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLMywgazMpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfTlVNQkVSKEs0LCBrNCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUSUVTCit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDI1ICsz
NCw0MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRl
ZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKLURFRklORV9BTklNQVRFRF9JTlRFR0VS
X01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6
b3JkZXJBdHRyLCBvcmRlclhJZGVudGlmaWVyKCksIE9yZGVyWCwgb3JkZXJYKQotREVGSU5FX0FO
SU1BVEVEX0lOVEVHRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQsIFNWR05hbWVzOjpvcmRlckF0dHIsIG9yZGVyWUlkZW50aWZpZXIoKSwgT3JkZXJZLCBvcmRl
clkpIAotREVGSU5FX0FOSU1BVEVEX05VTUJFUl9MSVNUKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50LCBTVkdOYW1lczo6a2VybmVsTWF0cml4QXR0ciwgS2VybmVsTWF0cml4LCBrZXJuZWxNYXRy
aXgpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBT
VkdOYW1lczo6ZGl2aXNvckF0dHIsIERpdmlzb3IsIGRpdmlzb3IpCi1ERUZJTkVfQU5JTUFURURf
TlVNQkVSKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6Ymlhc0F0dHIsIEJp
YXMsIGJpYXMpCi1ERUZJTkVfQU5JTUFURURfSU5URUdFUihTVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudCwgU1ZHTmFtZXM6OnRhcmdldFhBdHRyLCBUYXJnZXRYLCB0YXJnZXRYKQotREVGSU5FX0FO
SU1BVEVEX0lOVEVHRVIoU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQsIFNWR05hbWVzOjp0YXJn
ZXRZQXR0ciwgVGFyZ2V0WSwgdGFyZ2V0WSkKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihT
VkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OmVkZ2VNb2RlQXR0ciwgRWRnZU1v
ZGUsIGVkZ2VNb2RlLCBFZGdlTW9kZVR5cGUpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJ
UExFX1dSQVBQRVJTKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6a2VybmVs
VW5pdExlbmd0aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpLCBLZXJuZWxVbml0
TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJ
UExFX1dSQVBQRVJTKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6a2VybmVs
VW5pdExlbmd0aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigpLCBLZXJuZWxVbml0
TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0aFkpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQWxwaGFBdHRyLCBQcmVz
ZXJ2ZUFscGhhLCBwcmVzZXJ2ZUFscGhhKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJ
RVMKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKKyAgICBERUZJTkVfQU5JTUFURURfSU5URUdF
Ul9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6
Om9yZGVyQXR0ciwgb3JkZXJYSWRlbnRpZmllcigpLCBPcmRlclgsIG9yZGVyWCkKKyAgICBERUZJ
TkVfQU5JTUFURURfSU5URUdFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudCwgU1ZHTmFtZXM6Om9yZGVyQXR0ciwgb3JkZXJZSWRlbnRpZmllcigpLCBPcmRlclks
IG9yZGVyWSkgCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9MSVNUKFNWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50LCBTVkdOYW1lczo6a2VybmVsTWF0cml4QXR0ciwgS2VybmVsTWF0cml4LCBr
ZXJuZWxNYXRyaXgpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudCwgU1ZHTmFtZXM6OmRpdmlzb3JBdHRyLCBEaXZpc29yLCBkaXZpc29yKQorICAg
IERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQsIFNWR05h
bWVzOjpiaWFzQXR0ciwgQmlhcywgYmlhcykKKyAgICBERUZJTkVfQU5JTUFURURfSU5URUdFUihT
VkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OnRhcmdldFhBdHRyLCBUYXJnZXRY
LCB0YXJnZXRYKQorICAgIERFRklORV9BTklNQVRFRF9JTlRFR0VSKFNWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50LCBTVkdOYW1lczo6dGFyZ2V0WUF0dHIsIFRhcmdldFksIHRhcmdldFkpCisgICAg
REVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBT
VkdOYW1lczo6ZWRnZU1vZGVBdHRyLCBFZGdlTW9kZSwgZWRnZU1vZGUsIEVkZ2VNb2RlVHlwZSkK
KyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIGtlcm5lbFVu
aXRMZW5ndGhYSWRlbnRpZmllcigpLCBLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0
aFgpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBrZXJu
ZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIoKSwgS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRM
ZW5ndGhZKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50LCBTVkdOYW1lczo6cHJlc2VydmVBbHBoYUF0dHIsIFByZXNlcnZlQWxwaGEsIHByZXNl
cnZlQWxwaGEpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNU
RVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCkKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjEpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkob3JkZXJYKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKG9yZGVyWSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrZXJu
ZWxNYXRyaXgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZGl2aXNvcikK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShiaWFzKQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHRhcmdldFgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkodGFyZ2V0WSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWShlZGdlTW9kZSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrZXJu
ZWxVbml0TGVuZ3RoWCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrZXJu
ZWxVbml0TGVuZ3RoWSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShwcmVz
ZXJ2ZUFscGhhKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9Q
Uk9QRVJUSUVTCiAKIGlubGluZSBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6U1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRh
Z05hbWUsIGRvY3VtZW50KQogICAgICwgbV9lZGdlTW9kZShFREdFTU9ERV9EVVBMSUNBVEUpCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlQ29udm9sdmVNYXRyaXhUYWcpKTsK
KyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ+IFNWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMjQ1LDg4ICsyNjMsNiBAQCB2b2lkIFNWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50OjpzdmdBdHRyCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAKLXZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFu
eVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVFZGdlTW9kZSgpOwotICAgICAgICBzeW5j
aHJvbml6ZURpdmlzb3IoKTsKLSAgICAgICAgc3luY2hyb25pemVCaWFzKCk7Ci0gICAgICAgIHN5
bmNocm9uaXplVGFyZ2V0WCgpOwotICAgICAgICBzeW5jaHJvbml6ZVRhcmdldFkoKTsKLSAgICAg
ICAgc3luY2hyb25pemVLZXJuZWxVbml0TGVuZ3RoWCgpOwotICAgICAgICBzeW5jaHJvbml6ZUtl
cm5lbFVuaXRMZW5ndGhZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUHJlc2VydmVBbHBoYSgpOwot
ICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXpl
UHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFp
c1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZWRn
ZU1vZGVBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRWRnZU1vZGUoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZGl2aXNvckF0dHIp
IHsKLSAgICAgICAgc3luY2hyb25pemVEaXZpc29yKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmJpYXNBdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplQmlhcygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjp0YXJnZXRYQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVRhcmdl
dFgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6dGFyZ2V0WUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVUYXJnZXRZKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5l
bFVuaXRMZW5ndGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplS2VybmVsVW5pdExlbmd0aFgo
KTsKLSAgICAgICAgc3luY2hyb25pemVLZXJuZWxVbml0TGVuZ3RoWSgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFscGhh
QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVByZXNlcnZlQWxwaGEoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAg
cmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0g
ICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
ID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6b3JkZXJBdHRyLCBBbmltYXRl
ZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6Omtlcm5lbE1hdHJpeEF0dHIsIEFuaW1hdGVkTnVtYmVyTGlzdCk7Ci0gICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpkaXZpc29yQXR0ciwgQW5p
bWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6Ymlhc0F0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoU1ZHTmFtZXM6OnRhcmdldFhBdHRyLCBBbmltYXRlZEludGVnZXIpOwotICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dGFyZ2V0WUF0dHIsIEFuaW1h
dGVkSW50ZWdlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjpvcGVyYXRvckF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIEFuaW1hdGVk
TnVtYmVyT3B0aW9uYWxOdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6cHJlc2VydmVBbHBoYUF0dHIsIEFuaW1hdGVkQm9vbGVhbik7Ci19Ci0KIFBh
c3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6YnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAg
RmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgp
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw0NSArMzEsNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50IDog
cHVibGljIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ+IGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIHZvaWQgc2V0T3JkZXIoZmxv
YXQgb3JkZXJYLCBmbG9hdCBvcmRlclkpOwotICAgIHZvaWQgc2V0S2VybmVsVW5pdExlbmd0aChm
bG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFkpOwotCi1wcml2
YXRlOgotICAgIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCopOwotCi0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSopOwotICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVy
RWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lk
IGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmly
dHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZp
bHRlciopOwotCi0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgb3JkZXJYSWRlbnRpZmll
cigpOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG9yZGVyWUlkZW50aWZpZXIoKTsK
LSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWElkZW50aWZp
ZXIoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWUlk
ZW50aWZpZXIoKTsKLQotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAg
IERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURf
SU5URUdFUihPcmRlclgsIG9yZGVyWCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoT3Jk
ZXJZLCBvcmRlclkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVJfTElTVChLZXJuZWxNYXRy
aXgsIGtlcm5lbE1hdHJpeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihEaXZpc29yLCBk
aXZpc29yKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEJpYXMsIGJpYXMpCi0gICAgREVD
TEFSRV9BTklNQVRFRF9JTlRFR0VSKFRhcmdldFgsIHRhcmdldFgpCi0gICAgREVDTEFSRV9BTklN
QVRFRF9JTlRFR0VSKFRhcmdldFksIHRhcmdldFkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVN
RVJBVElPTihFZGdlTW9kZSwgZWRnZU1vZGUsIEVkZ2VNb2RlVHlwZSkKLSAgICBERUNMQVJFX0FO
SU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgpCi0gICAg
REVDTEFSRV9BTklNQVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5n
dGhZKQotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihQcmVzZXJ2ZUFscGhhLCBwcmVzZXJ2
ZUFscGhhKQotfTsKLQogdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPEVkZ2VN
b2RlVHlwZT4gewogICAgIHN0YXRpYyBFZGdlTW9kZVR5cGUgaGlnaGVzdEVudW1WYWx1ZSgpIHsg
cmV0dXJuIEVER0VNT0RFX05PTkU7IH0KQEAgLTEwMyw2ICs2NCw0MyBAQCBzdHJ1Y3QgU1ZHUHJv
cGVydHlUcmFpdHM8RWRnZU1vZGVUeXBlPiB7CiAgICAgfQogfTsKIAorY2xhc3MgU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCisg
ICAgdm9pZCBzZXRPcmRlcihmbG9hdCBvcmRlclgsIGZsb2F0IG9yZGVyWSk7CisgICAgdm9pZCBz
ZXRLZXJuZWxVbml0TGVuZ3RoKGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxV
bml0TGVuZ3RoWSk7CisKK3ByaXZhdGU6CisgICAgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisKKyAgICBib29sIGlzU3VwcG9ydGVk
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VN
YXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CisgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVm
ZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAg
dmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqLCBGaWx0ZXIqKTsKKworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG9yZGVyWElk
ZW50aWZpZXIoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBvcmRlcllJZGVudGlm
aWVyKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYga2VybmVsVW5pdExlbmd0aFhJ
ZGVudGlmaWVyKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYga2VybmVsVW5pdExl
bmd0aFlJZGVudGlmaWVyKCk7CisKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
U1RSSU5HKEluMSwgaW4xKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoT3JkZXJY
LCBvcmRlclgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihPcmRlclksIG9yZGVy
WSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVJfTElTVChLZXJuZWxNYXRyaXgsIGtl
cm5lbE1hdHJpeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoRGl2aXNvciwgZGl2
aXNvcikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQmlhcywgYmlhcykKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9JTlRFR0VSKFRhcmdldFgsIHRhcmdldFgpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfSU5URUdFUihUYXJnZXRZLCB0YXJnZXRZKQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX0VOVU1FUkFUSU9OKEVkZ2VNb2RlLCBlZGdlTW9kZSwgRWRnZU1vZGVUeXBlKQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVs
VW5pdExlbmd0aFgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEtlcm5lbFVuaXRM
ZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09M
RUFOKFByZXNlcnZlQWxwaGEsIHByZXNlcnZlQWxwaGEpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVElFUworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSwxMiArMzUsMjIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9w
ZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQotREVGSU5FX0FOSU1BVEVE
X05VTUJFUihTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpkaWZmdXNlQ29u
c3RhbnRBdHRyLCBEaWZmdXNlQ29uc3RhbnQsIGRpZmZ1c2VDb25zdGFudCkKLURFRklORV9BTklN
QVRFRF9OVU1CRVIoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6c3VyZmFj
ZVNjYWxlQXR0ciwgU3VyZmFjZVNjYWxlLCBzdXJmYWNlU2NhbGUpCi1ERUZJTkVfQU5JTUFURURf
TlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgU1ZH
TmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBrZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIo
KSwgS2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhYKQotREVGSU5FX0FOSU1BVEVE
X05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNW
R05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwga2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVy
KCksIEtlcm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKK0JFR0lOX0RFRklORV9B
TklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklO
RV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6
ZGlmZnVzZUNvbnN0YW50QXR0ciwgRGlmZnVzZUNvbnN0YW50LCBkaWZmdXNlQ29uc3RhbnQpCisg
ICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNW
R05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyLCBTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSkKKyAg
ICBERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBrZXJuZWxVbml0
TGVuZ3RoWElkZW50aWZpZXIoKSwgS2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhY
KQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIGtlcm5l
bFVuaXRMZW5ndGhZSWRlbnRpZmllcigpLCBLZXJuZWxVbml0TGVuZ3RoWSwga2VybmVsVW5pdExl
bmd0aFkpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQpCisgICAgUkVH
SVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKGRpZmZ1c2VDb25zdGFudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShzdXJmYWNlU2NhbGUpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkoa2VybmVsVW5pdExlbmd0aFgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkoa2VybmVsVW5pdExlbmd0aFkpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JF
R0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudDo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTQ4LDYgKzU4LDcgQEAgaW5s
aW5lIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6U1ZHRgogICAgICwgbV9zdXJmYWNlU2Nh
bGUoMSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVEaWZmdXNlTGlnaHRp
bmdUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTk0LDY3ICsyMDUsNiBAQCB2
b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6bGlnaHRFCiAgICAgcHJpbWl0aXZlQXR0
cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLXZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplSW4xKCk7Ci0gICAgICAgIHN5bmNocm9uaXplU3VyZmFjZVNjYWxlKCk7Ci0gICAgICAgIHN5
bmNocm9uaXplRGlmZnVzZUNvbnN0YW50KCk7Ci0gICAgICAgIHN5bmNocm9uaXplS2VybmVsVW5p
dExlbmd0aFgoKTsKLSAgICAgICAgc3luY2hyb25pemVLZXJuZWxVbml0TGVuZ3RoWSgpOwotICAg
ICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJv
cGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1
cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6bGlnaHRp
bmdfY29sb3JBdHRyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmluQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpzdXJmYWNlU2NhbGVB
dHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplU3VyZmFjZVNjYWxlKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFu
dEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVEaWZmdXNlQ29uc3RhbnQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5p
dExlbmd0aEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVLZXJuZWxVbml0TGVuZ3RoWCgpOwot
ICAgICAgICBzeW5jaHJvbml6ZUtlcm5lbFVuaXRMZW5ndGhZKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1
cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAg
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0g
dGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsgICAgCi0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0
dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBB
bmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKLX0KLQogUGFzc1JlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciog
ZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1
dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgJKHJldmlzaW9u
IDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywyMCArNDMsMTggQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCBi
b29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVy
RWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKTsKICAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIoKTsK
IAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5J
TUFURURfU1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKERpZmZ1
c2VDb25zdGFudCwgZGlmZnVzZUNvbnN0YW50KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVS
KFN1cmZhY2VTY2FsZSwgc3VyZmFjZVNjYWxlKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVS
KEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWCkKLSAgICBERUNMQVJFX0FOSU1B
VEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0aFkpCisgICAgQkVH
SU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVu
dCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCisgICAgCURFQ0xB
UkVfQU5JTUFURURfTlVNQkVSKERpZmZ1c2VDb25zdGFudCwgZGlmZnVzZUNvbnN0YW50KQorICAg
IAlERUNMQVJFX0FOSU1BVEVEX05VTUJFUihTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSkKKyAg
ICAJREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRM
ZW5ndGhYKQorICAgIAlERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWSwg
a2VybmVsVW5pdExlbmd0aFkpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDEyICszMCwyMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5H
KFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4xLCBpbjEp
Ci1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZH
TmFtZXM6OmluMkF0dHIsIEluMiwgaW4yKQotREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRy
LCBYQ2hhbm5lbFNlbGVjdG9yLCB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0b3JUeXBl
KQotREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dCwgU1ZHTmFtZXM6OnlDaGFubmVsU2VsZWN0b3JBdHRyLCBZQ2hhbm5lbFNlbGVjdG9yLCB5Q2hh
bm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0b3JUeXBlKQotREVGSU5FX0FOSU1BVEVEX05VTUJF
UihTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNWR05hbWVzOjpzY2FsZUF0dHIsIFNjYWxl
LCBzY2FsZSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FO
SU1BVEVEX1NUUklORyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNWR05hbWVzOjppbkF0
dHIsIEluMSwgaW4xKQorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVEaXNwbGFjZW1l
bnRNYXBFbGVtZW50LCBTVkdOYW1lczo6aW4yQXR0ciwgSW4yLCBpbjIpCisgICAgREVGSU5FX0FO
SU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6
OnhDaGFubmVsU2VsZWN0b3JBdHRyLCBYQ2hhbm5lbFNlbGVjdG9yLCB4Q2hhbm5lbFNlbGVjdG9y
LCBDaGFubmVsU2VsZWN0b3JUeXBlKQorICAgIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihT
VkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVjdG9yQXR0
ciwgWUNoYW5uZWxTZWxlY3RvciwgeUNoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlw
ZSkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dCwgU1ZHTmFtZXM6OnNjYWxlQXR0ciwgU2NhbGUsIHNjYWxlKQorRU5EX0RFRklORV9BTklNQVRF
RF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKGluMSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjIpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeENoYW5uZWxTZWxlY3RvcikKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5Q2hhbm5lbFNlbGVjdG9yKQorICAgIFJF
R0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHNjYWxlKQorICAgIFJFR0lTVEVSX1BBUkVO
VF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQ6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCkBAIC00Myw2ICs1
Myw3IEBAIGlubGluZSBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OlNWR0YKICAgICAsIG1f
eUNoYW5uZWxTZWxlY3RvcihDSEFOTkVMX0EpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZH
TmFtZXM6OmZlRGlzcGxhY2VtZW50TWFwVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3Bl
cnRpZXNGb3JTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxT
VkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ+IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
QEAgLTEzOSw2OSArMTUwLDYgQEAgdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN2
Z0F0dAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBz
eW5jaHJvbml6ZVhDaGFubmVsU2VsZWN0b3IoKTsKLSAgICAgICAgc3luY2hyb25pemVZQ2hhbm5l
bFNlbGVjdG9yKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHN5bmNocm9u
aXplSW4yKCk7Ci0gICAgICAgIHN5bmNocm9uaXplU2NhbGUoKTsKLSAgICAgICAgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1l
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplWENoYW5uZWxTZWxlY3RvcigpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVj
dG9yQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVlDaGFubmVsU2VsZWN0b3IoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluMkF0dHIpIHsKLSAgICAgICAgc3luY2hy
b25pemVJbjIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6c2NhbGVBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplU2NhbGUoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1B
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50Ojph
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
KCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lk
IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsUGFzc2VkQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmlu
Zyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbjJBdHRy
LCBBbmltYXRlZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjp4Q2hhbm5lbFNlbGVjdG9yQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVjdG9y
QXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjpzY2FsZUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLX0KLQogUGFzc1Jl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmls
dGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt
ZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywzMiArMjcsNiBAQAogI2lu
Y2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0gICAgCi1jbGFzcyBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQgOiBw
dWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ+IGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIHN0YXRpYyBDaGFubmVsU2Vs
ZWN0b3JUeXBlIHN0cmluZ1RvQ2hhbm5lbChjb25zdCBTdHJpbmcmKTsKLSAgICAKLXByaXZhdGU6
Ci0gICAgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50Kik7Ci0gICAgCi0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSopOwotICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1
dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpOwotICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAg
IHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciosIEZpbHRlciopOwotCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVj
bGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCi0gICAgREVD
TEFSRV9BTklNQVRFRF9TVFJJTkcoSW4yLCBpbjIpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVN
RVJBVElPTihYQ2hhbm5lbFNlbGVjdG9yLCB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0
b3JUeXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oWUNoYW5uZWxTZWxlY3Rv
ciwgeUNoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSkKLSAgICBERUNMQVJFX0FO
SU1BVEVEX05VTUJFUihTY2FsZSwgc2NhbGUpCi19OwogCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgU1ZH
UHJvcGVydHlUcmFpdHM8Q2hhbm5lbFNlbGVjdG9yVHlwZT4gewpAQCAtOTEsNiArNjUsMzAgQEAg
c3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPENoYW5uZWxTZWxlY3RvcgogICAgIH0KIH07CiAKK2Ns
YXNzIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCopOworCisgICAgc3RhdGljIENoYW5uZWxTZWxlY3RvclR5cGUgc3RyaW5nVG9DaGFu
bmVsKGNvbnN0IFN0cmluZyYpOworICAgIAorcHJpdmF0ZToKKyAgICBTVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKKyAg
ICAKKyAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CisgICAg
dmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSk7CisgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKKworICAgIEJF
R0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjIsIGluMikKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9FTlVNRVJBVElPTihYQ2hhbm5lbFNlbGVjdG9yLCB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVs
U2VsZWN0b3JUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFlDaGFu
bmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxTZWxlY3RvclR5cGUpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFNjYWxlLCBzY2FsZSkKKyAgICBFTkRfREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUSUVTCit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURy
b3BTaGFkb3dFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEyICsz
MiwyMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRl
ZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQs
IFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdG
RURyb3BTaGFkb3dFbGVtZW50LCBTVkdOYW1lczo6ZHhBdHRyLCBEeCwgZHgpCi1ERUZJTkVfQU5J
TUFURURfTlVNQkVSKFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQsIFNWR05hbWVzOjpkeUF0dHIsIER5
LCBkeSkKLURFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVEcm9w
U2hhZG93RWxlbWVudCwgU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIsIHN0ZERldmlhdGlvblhJ
ZGVudGlmaWVyKCksIFN0ZERldmlhdGlvblgsIHN0ZERldmlhdGlvblgpCi1ERUZJTkVfQU5JTUFU
RURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQsIFNWR05h
bWVzOjpzdGREZXZpYXRpb25BdHRyLCBzdGREZXZpYXRpb25ZSWRlbnRpZmllcigpLCBTdGREZXZp
YXRpb25ZLCBzdGREZXZpYXRpb25ZKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMK
KyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQsIFNWR05h
bWVzOjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVE
cm9wU2hhZG93RWxlbWVudCwgU1ZHTmFtZXM6OmR4QXR0ciwgRHgsIGR4KQorICAgIERFRklORV9B
TklNQVRFRF9OVU1CRVIoU1ZHRkVEcm9wU2hhZG93RWxlbWVudCwgU1ZHTmFtZXM6OmR5QXR0ciwg
RHksIGR5KQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZH
RkVEcm9wU2hhZG93RWxlbWVudCwgU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIsIHN0ZERldmlh
dGlvblhJZGVudGlmaWVyKCksIFN0ZERldmlhdGlvblgsIHN0ZERldmlhdGlvblgpCisgICAgREVG
SU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRURyb3BTaGFkb3dFbGVt
ZW50LCBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwgc3RkRGV2aWF0aW9uWUlkZW50aWZpZXIo
KSwgU3RkRGV2aWF0aW9uWSwgc3RkRGV2aWF0aW9uWSkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJP
UEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGR4KQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKGR5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKHN0ZERldmlhdGlvblgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkoc3RkRGV2aWF0aW9uWSkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCitFTkRfUkVHSVNURVJfQU5J
TUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6U1ZHRkVE
cm9wU2hhZG93RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFn
TmFtZSwgZG9jdW1lbnQpCkBAIC00Nyw2ICs1Nyw3IEBAIGlubGluZSBTVkdGRURyb3BTaGFkb3dF
bGVtZW50OjpTVkdGRURyb3AKICAgICAsIG1fc3RkRGV2aWF0aW9uWSgyKQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZURyb3BTaGFkb3dUYWcpKTsKKyAgICByZWdpc3RlckFu
aW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQoKTsKIH0KIAogUGFzc1Jl
ZlB0cjxTVkdGRURyb3BTaGFkb3dFbGVtZW50PiBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAt
MTQwLDQ3ICsxNTEsNiBAQCB2b2lkIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnN2Z0F0dHJpYnV0
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVEcm9wU2hhZG93RWxl
bWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
LXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6
ZVN0ZERldmlhdGlvblgoKTsKLSAgICAgICAgc3luY2hyb25pemVTdGREZXZpYXRpb25ZKCk7Ci0g
ICAgICAgIHN5bmNocm9uaXplRHgoKTsKLSAgICAgICAgc3luY2hyb25pemVEeSgpOwotICAgICAg
ICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAg
ICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0cikgewotICAgICAgICBzeW5jaHJvbml6
ZVN0ZERldmlhdGlvblgoKTsKLSAgICAgICAgc3luY2hyb25pemVTdGREZXZpYXRpb25ZKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omlu
QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkeEF0dHIpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVEeCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpkeUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVEeSgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KIFBhc3NS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSwxOCArMzksMTggQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRy
aWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVy
RWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAgICAgCiAgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3RkRGV2aWF0aW9uWElkZW50aWZpZXIoKTsKICAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdGREZXZpYXRpb25ZSWRlbnRpZmllcigpOwogICAg
IAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5J
TUFURURfU1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKER4LCBk
eCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihEeSwgZHkpCi0gICAgREVDTEFSRV9BTklN
QVRFRF9OVU1CRVIoU3RkRGV2aWF0aW9uWCwgc3RkRGV2aWF0aW9uWCkKLSAgICBERUNMQVJFX0FO
SU1BVEVEX05VTUJFUihTdGREZXZpYXRpb25ZLCBzdGREZXZpYXRpb25ZKQorICAgIEJFR0lOX0RF
Q0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRURyb3BTaGFkb3dFbGVtZW50KQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9OVU1CRVIoRHgsIGR4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihEeSwg
ZHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFN0ZERldmlhdGlvblgsIHN0ZERl
dmlhdGlvblgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFN0ZERldmlhdGlvblks
IHN0ZERldmlhdGlvblkpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsK
ICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUZsb29kRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRmxvb2RFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCwxOSArNzQsNiBA
QCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVGbG9vZEVsZW1lCiAgICAgcmV0dXJuIEZF
Rmxvb2Q6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBvcGFjaXR5KTsKIH0KIAotQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIFNWR0ZFRmxvb2RFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0ZFRmxvb2RFbGVtZW50Ojpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkpOwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDggKzM0LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdGRUZsb29kRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgYm9v
bCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIsMTUgKzMyLDI0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Ly8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9TVFJJTkco
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKLURF
RklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50LCBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwgc3RkRGV2aWF0aW9uWElkZW50aWZp
ZXIoKSwgU3RkRGV2aWF0aW9uWCwgc3RkRGV2aWF0aW9uWCkKLURFRklORV9BTklNQVRFRF9OVU1C
RVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBTVkdOYW1lczo6
c3RkRGV2aWF0aW9uQXR0ciwgc3RkRGV2aWF0aW9uWUlkZW50aWZpZXIoKSwgU3RkRGV2aWF0aW9u
WSwgc3RkRGV2aWF0aW9uWSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAg
REVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQsIFNWR05hbWVz
OjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVf
V1JBUFBFUlMoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBTVkdOYW1lczo6c3RkRGV2aWF0aW9u
QXR0ciwgc3RkRGV2aWF0aW9uWElkZW50aWZpZXIoKSwgU3RkRGV2aWF0aW9uWCwgc3RkRGV2aWF0
aW9uWCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudCwgU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIsIHN0ZERldmlh
dGlvbllJZGVudGlmaWVyKCksIFN0ZERldmlhdGlvblksIHN0ZERldmlhdGlvblkpCitFTkRfREVG
SU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkoaW4xKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHN0
ZERldmlhdGlvblgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc3RkRGV2
aWF0aW9uWSkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJP
UEVSVElFUwogCiBpbmxpbmUgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpTVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUs
IGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUdhdXNzaWFu
Qmx1clRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xMTksNTAgKzEyOCw2IEBAIHZvaWQgU1ZH
RkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdmdBdHRyaWIKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIAotdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09
IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVTdGREZXZpYXRpb25YKCk7Ci0gICAg
ICAgIHN5bmNocm9uaXplU3RkRGV2aWF0aW9uWSgpOwotICAgICAgICBzeW5jaHJvbml6ZUluMSgp
OwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9u
aXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
c3RkRGV2aWF0aW9uQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVN0ZERldmlhdGlvblgoKTsK
LSAgICAgICAgc3luY2hyb25pemVTdGREZXZpYXRpb25ZKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewotICAgICAgICBz
eW5jaHJvbml6ZUluMSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQ
YXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIs
IEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OnN0ZERldmlhdGlvbkF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOwot
fQotCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Ojpi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsK
ICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQo
aW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDE4ICs0MCwxNiBAQCBwcml2
YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7
Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
LSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcmIHN0ZERldmlhdGlvblhJZGVudGlmaWVyKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgc3RkRGV2aWF0aW9uWUlkZW50aWZpZXIoKTsKIAotICAgIC8vIEFuaW1hdGVkIHBy
b3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4x
KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFN0ZERldmlhdGlvblgsIHN0ZERldmlhdGlv
blgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3RkRGV2aWF0aW9uWSwgc3RkRGV2aWF0
aW9uWSkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3RkRGV2aWF0aW9uWCwgc3RkRGV2aWF0
aW9uWCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3RkRGV2aWF0aW9uWSwgc3Rk
RGV2aWF0aW9uWSkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFn
ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdl
RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
SW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTUgKzM5LDI0IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURF
RklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR0ZFSW1hZ2VFbGVtZW50LCBTVkdO
YW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNl
cnZlQXNwZWN0UmF0aW8pCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFSW1hZ2VFbGVtZW50
LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKLURFRklORV9BTklNQVRFRF9CT09M
RUFOKFNWR0ZFSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRF
RF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR0ZFSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6cHJlc2Vy
dmVBc3BlY3RSYXRpb0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0
aW8pCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUltYWdlRWxlbWVudCwgWExpbmtO
YW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4o
U1ZHRkVJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0
ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkK
K0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR0ZFSW1hZ2VFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1B
VEVEX1BST1BFUlRZKHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoaHJlZikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9S
RUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdGRUltYWdlRWxlbWVudDo6
U1ZHRkVJbWFnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRh
Z05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUlt
YWdlVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRUltYWdlRWxl
bWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFSW1hZ2VFbGVtZW50PiBTVkdGRUltYWdlRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKQEAgLTEzOCw1NCArMTQ3LDYgQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0ZFSW1h
Z2VFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplUHJlc2VydmVBc3BlY3RSYXRpbygpOwotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsK
LSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAg
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0
eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9y
dGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfSAgIAotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2
ZUFzcGVjdFJhdGlvQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVByZXNlcnZlQXNwZWN0UmF0
aW8oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdVUklSZWZlcmVuY2U6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBTVkdGRUltYWdlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwotCi0gICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxs
UGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cHJlc2Vy
dmVBc3BlY3RSYXRpb0F0dHIsIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRl
ZFN0cmluZyk7Ci19Ci0KIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlKikKIHsKICAgICBpZiAoIWluRG9jdW1lbnQoKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw5ICs1
MSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBR
dWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRy
aWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CkBAIC02MSwxNCArNTgsMTEgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgcmVxdWVzdEltYWdlUmVzb3VyY2UoKTsKIAotICAgIC8vIEFu
aW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfUFJFU0VS
VkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQot
Ci0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJl
ZiwgaHJlZikKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNM
QVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHRkVJbWFnZUVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BF
Q1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9jYWNoZWRJbWFnZTsKICAgICBPd25Q
dHI8SW1hZ2VCdWZmZXI+IG1fdGFyZ2V0SW1hZ2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVMaWdodEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUxpZ2h0RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMjIgKzM2LDM3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5p
dGlvbnMKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVz
OjphemltdXRoQXR0ciwgQXppbXV0aCwgYXppbXV0aCkKLURFRklORV9BTklNQVRFRF9OVU1CRVIo
U1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjplbGV2YXRpb25BdHRyLCBFbGV2YXRpb24sIGVs
ZXZhdGlvbikKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05h
bWVzOjp4QXR0ciwgWCwgeCkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1l
bnQsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVM
aWdodEVsZW1lbnQsIFNWR05hbWVzOjp6QXR0ciwgWiwgeikKLURFRklORV9BTklNQVRFRF9OVU1C
RVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjpwb2ludHNBdFhBdHRyLCBQb2ludHNBdFgs
IHBvaW50c0F0WCkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNW
R05hbWVzOjpwb2ludHNBdFlBdHRyLCBQb2ludHNBdFksIHBvaW50c0F0WSkKLURFRklORV9BTklN
QVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjpwb2ludHNBdFpBdHRyLCBQ
b2ludHNBdFosIHBvaW50c0F0WikKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVs
ZW1lbnQsIFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciwgU3BlY3VsYXJFeHBvbmVudCwg
c3BlY3VsYXJFeHBvbmVudCkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1l
bnQsIFNWR05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIsIExpbWl0aW5nQ29uZUFuZ2xlLCBs
aW1pdGluZ0NvbmVBbmdsZSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAg
REVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OmF6aW11
dGhBdHRyLCBBemltdXRoLCBhemltdXRoKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZH
RkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjplbGV2YXRpb25BdHRyLCBFbGV2YXRpb24sIGVsZXZh
dGlvbikKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFTGlnaHRFbGVtZW50LCBTVkdO
YW1lczo6eEF0dHIsIFgsIHgpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0
RWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQorICAgIERFRklORV9BTklNQVRFRF9OVU1C
RVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjp6QXR0ciwgWiwgeikKKyAgICBERUZJTkVf
QU5JTUFURURfTlVNQkVSKFNWR0ZFTGlnaHRFbGVtZW50LCBTVkdOYW1lczo6cG9pbnRzQXRYQXR0
ciwgUG9pbnRzQXRYLCBwb2ludHNBdFgpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdG
RUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OnBvaW50c0F0WUF0dHIsIFBvaW50c0F0WSwgcG9pbnRz
QXRZKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05h
bWVzOjpwb2ludHNBdFpBdHRyLCBQb2ludHNBdFosIHBvaW50c0F0WikKKyAgICBERUZJTkVfQU5J
TUFURURfTlVNQkVSKFNWR0ZFTGlnaHRFbGVtZW50LCBTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVu
dEF0dHIsIFNwZWN1bGFyRXhwb25lbnQsIHNwZWN1bGFyRXhwb25lbnQpCisgICAgREVGSU5FX0FO
SU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFu
Z2xlQXR0ciwgTGltaXRpbmdDb25lQW5nbGUsIGxpbWl0aW5nQ29uZUFuZ2xlKQorRU5EX0RFRklO
RV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHRkVMaWdodEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkoYXppbXV0aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShlbGV2YXRp
b24pCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeCkKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVE
X1BST1BFUlRZKHopCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocG9pbnRz
QXRYKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHBvaW50c0F0WSkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShwb2ludHNBdFopCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc3BlY3VsYXJFeHBvbmVudCkKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShsaW1pdGluZ0NvbmVBbmdsZSkKK0VORF9SRUdJU1RF
Ul9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIFNWR0ZFTGlnaHRFbGVtZW50OjpTVkdGRUxpZ2h0RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAg
ICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9zcGVjdWxhckV4cG9u
ZW50KDEpCiB7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRUxpZ2h0RWxl
bWVudCgpOwogfQogCiBTVkdGRUxpZ2h0RWxlbWVudCogU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRM
aWdodEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCogc3ZnRWxlbWVudCkKQEAgLTE5NCwxMDIgKzIw
OSw2IEBAIHZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW4KICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6c3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0
ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUF6aW11dGgoKTsKLSAg
ICAgICAgc3luY2hyb25pemVFbGV2YXRpb24oKTsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0g
ICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICBzeW5jaHJvbml6ZVooKTsKLSAgICAgICAg
c3luY2hyb25pemVQb2ludHNBdFgoKTsKLSAgICAgICAgc3luY2hyb25pemVQb2ludHNBdFkoKTsK
LSAgICAgICAgc3luY2hyb25pemVQb2ludHNBdFooKTsKLSAgICAgICAgc3luY2hyb25pemVTcGVj
dWxhckV4cG9uZW50KCk7Ci0gICAgICAgIHN5bmNocm9uaXplTGltaXRpbmdDb25lQW5nbGUoKTsK
LSAgICAgICAgU1ZHRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJO
YW1lKSkgewotICAgICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1l
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmF6aW11dGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplQXppbXV0aCgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjplbGV2
YXRpb25BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRWxldmF0aW9uKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVkoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
ekF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVaKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVQb2ludHNBdFgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXRZQXR0cikgewotICAgICAgICBzeW5j
aHJvbml6ZVBvaW50c0F0WSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFpBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
UG9pbnRzQXRaKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
U3BlY3VsYXJFeHBvbmVudCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVMaW1pdGluZ0NvbmVBbmdsZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBTVkdGRUxpZ2h0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6YXppbXV0
aEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OmVsZXZhdGlvbkF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZE51bWJlcik7
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5p
bWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6ekF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnBvaW50c0F0WUF0dHIsIEFuaW1h
dGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OnBvaW50c0F0WkF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyLCBBbmltYXRlZE51bWJl
cik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpsaW1pdGlu
Z0NvbmVBbmdsZUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLX0KLQogdm9pZCBTVkdGRUxpZ2h0RWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVD
aGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIFNW
R0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwg
YWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVMaWdodEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVMaWdodEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVMaWdodEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMjIgKzQyLDIwIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwog
ICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNo
YW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRl
ckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAotICAgIC8vIEFuaW1hdGVk
IHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEF6aW11
dGgsIGF6aW11dGgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoRWxldmF0aW9uLCBlbGV2
YXRpb24pCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoWCwgeCkKLSAgICBERUNMQVJFX0FO
SU1BVEVEX05VTUJFUihZLCB5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFosIHopCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoUG9pbnRzQXRYLCBwb2ludHNBdFgpCi0gICAgREVD
TEFSRV9BTklNQVRFRF9OVU1CRVIoUG9pbnRzQXRZLCBwb2ludHNBdFkpCi0gICAgREVDTEFSRV9B
TklNQVRFRF9OVU1CRVIoUG9pbnRzQXRaLCBwb2ludHNBdFopCi0gICAgREVDTEFSRV9BTklNQVRF
RF9OVU1CRVIoU3BlY3VsYXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkKLSAgICBERUNMQVJF
X0FOSU1BVEVEX05VTUJFUihMaW1pdGluZ0NvbmVBbmdsZSwgbGltaXRpbmdDb25lQW5nbGUpCisg
ICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFTGlnaHRFbGVtZW50KQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihBemltdXRoLCBhemltdXRoKQorICAgIAlE
RUNMQVJFX0FOSU1BVEVEX05VTUJFUihFbGV2YXRpb24sIGVsZXZhdGlvbikKKyAgICAJREVDTEFS
RV9BTklNQVRFRF9OVU1CRVIoWCwgeCkKKyAgICAJREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoWSwg
eSkKKyAgICAJREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoWiwgeikKKyAgICAJREVDTEFSRV9BTklN
QVRFRF9OVU1CRVIoUG9pbnRzQXRYLCBwb2ludHNBdFgpCisgICAgCURFQ0xBUkVfQU5JTUFURURf
TlVNQkVSKFBvaW50c0F0WSwgcG9pbnRzQXRZKQorICAgIAlERUNMQVJFX0FOSU1BVEVEX05VTUJF
UihQb2ludHNBdFosIHBvaW50c0F0WikKKyAgICAJREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3Bl
Y3VsYXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkKKyAgICAJREVDTEFSRV9BTklNQVRFRF9O
VU1CRVIoTGltaXRpbmdDb25lQW5nbGUsIGxpbWl0aW5nQ29uZUFuZ2xlKQorICAgIEVORF9ERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MCwxOSArNjAsNiBAQCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVN
ZXJnZUVsZW1lCiAgICAgcmV0dXJuIGVmZmVjdC5yZWxlYXNlKCk7CiB9CiAKLUF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBTVkdGRU1lcmdlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19h
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRU1lcmdlRWxlbWVudDo6
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpKTsKLX0KLQogfQogCiAjZW5kaWYgLy8gRU5B
QkxFKFNWRykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTWVyZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TWVyZ2VFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTWVyZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDYgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBTVkdGRU1lcmdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIH07CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiwxMyArMzIsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0v
LyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhT
VkdGRU1lcmdlTm9kZUVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorQkVHSU5f
REVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNW
R0ZFTWVyZ2VOb2RlRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4xLCBpbjEpCitFTkRfREVG
SU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdGRU1lcmdlTm9kZUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkoaW4xKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5l
IFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6U1ZHRkVNZXJnZU5vZGVFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0VsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZl
TWVyZ2VOb2RlVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRU1l
cmdlTm9kZUVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRU1lcmdlTm9kZUVsZW1lbnQ+
IFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTk0LDM4ICsxMDAsNiBAQCB2b2lkIFNWR0ZFTWVy
Z2VOb2RlRWxlbWVudDo6c3ZnQXR0cmlidXRlCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAKLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAo
KSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQg
U1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQot
ewotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkuc2V0KFNWR05hbWVzOjppbkF0dHIs
IEFuaW1hdGVkU3RyaW5nKTsKLX0KLQotdm9pZCBTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OnN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYg
KGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAg
ICAgICAgU1ZHRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1l
KSkgewotICAgICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0gICAKLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVt
ZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VO
b2RlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMiArMzcsMTAgQEAgcHJpdmF0ZToK
ICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmly
dHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAg
dmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERF
Q0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdGRU1lcmdlTm9kZUVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfU1RSSU5HKEluMSwgaW4xKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJ
RVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSwxNyArMzEsMjcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRl
ZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRU1vcnBo
b2xvZ3lFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKLURFRklORV9BTklNQVRF
RF9FTlVNRVJBVElPTihTVkdGRU1vcnBob2xvZ3lFbGVtZW50LCBTVkdOYW1lczo6b3BlcmF0b3JB
dHRyLCBfb3BlcmF0b3IsIF9vcGVyYXRvciwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSkKLURFRklO
RV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dCwgU1ZHTmFtZXM6OnJhZGl1c0F0dHIsIHJhZGl1c1hJZGVudGlmaWVyKCksIFJhZGl1c1gsIHJh
ZGl1c1gpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFTW9y
cGhvbG9neUVsZW1lbnQsIFNWR05hbWVzOjpyYWRpdXNBdHRyLCByYWRpdXNZSWRlbnRpZmllcigp
LCBSYWRpdXNZLCByYWRpdXNZKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAg
ICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQsIFNWR05hbWVz
OjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdG
RU1vcnBob2xvZ3lFbGVtZW50LCBTVkdOYW1lczo6b3BlcmF0b3JBdHRyLCBfb3BlcmF0b3IsIF9v
cGVyYXRvciwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSkKKyAgICBERUZJTkVfQU5JTUFURURfTlVN
QkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQsIFNWR05hbWVzOjpy
YWRpdXNBdHRyLCByYWRpdXNYSWRlbnRpZmllcigpLCBSYWRpdXNYLCByYWRpdXNYKQorICAgIERF
RklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVNb3JwaG9sb2d5RWxl
bWVudCwgU1ZHTmFtZXM6OnJhZGl1c0F0dHIsIHJhZGl1c1lJZGVudGlmaWVyKCksIFJhZGl1c1ks
IHJhZGl1c1kpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNU
RVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRU1vcnBob2xvZ3lFbGVtZW50KQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGluMSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShfb3BlcmF0b3IpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkocmFkaXVzWCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShyYWRp
dXNZKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJU
SUVTCiAKIGlubGluZSBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpTVkdGRU1vcnBob2xvZ3lFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVu
dCkKICAgICAsIG1fX29wZXJhdG9yKEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVNb3JwaG9sb2d5VGFnKSk7CisgICAgcmVn
aXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRU1vcnBob2xvZ3lFbGVtZW50KCk7CiB9CiAK
IFBhc3NSZWZQdHI8U1ZHRkVNb3JwaG9sb2d5RWxlbWVudD4gU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCkKQEAgLTE0NSw1NyArMTU1LDYgQEAgdm9pZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzdmdB
dHRyaWJ1dAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0ZFTW9ycGhv
bG9neUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVfb3BlcmF0b3IoKTsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAg
c3luY2hyb25pemVSYWRpdXNYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUmFkaXVzWSgpOwotICAg
ICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJv
cGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1
cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6b3BlcmF0
b3JBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplX29wZXJhdG9yKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewotICAg
ICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjpyYWRpdXNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
UmFkaXVzWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVJhZGl1c1koKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4g
c19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRU1vcnBob2xvZ3lF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciwgQW5pbWF0ZWRFbnVtZXJh
dGlvbik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyYWRp
dXNBdHRyLCBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKLX0KLQogUGFzc1JlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCog
aW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsMzQgKzI4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTVkdGRU1vcnBob2xvZ3lFbGVtZW50IDogcHVibGljIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcyB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwot
Ci0gICAgdm9pZCBzZXRSYWRpdXMoZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSk7Ci0KLXBy
aXZhdGU6Ci0gICAgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKLQotICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVm
ZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0
ZXIqKTsKLQotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHJhZGl1c1hJZGVudGlmaWVy
KCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcmFkaXVzWUlkZW50aWZpZXIoKTsK
LQotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5J
TUFURURfU1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04o
X29wZXJhdG9yLCBfb3BlcmF0b3IsIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUpCi0gICAgREVDTEFS
RV9BTklNQVRFRF9OVU1CRVIoUmFkaXVzWCwgcmFkaXVzWCkKLSAgICBERUNMQVJFX0FOSU1BVEVE
X05VTUJFUihSYWRpdXNZLCByYWRpdXNZKQotfTsKLQogdGVtcGxhdGU8Pgogc3RydWN0IFNWR1By
b3BlcnR5VHJhaXRzPE1vcnBob2xvZ3lPcGVyYXRvclR5cGU+IHsKICAgICBzdGF0aWMgTW9ycGhv
bG9neU9wZXJhdG9yVHlwZSBoaWdoZXN0RW51bVZhbHVlKCkgeyByZXR1cm4gRkVNT1JQSE9MT0dZ
X09QRVJBVE9SX0RJTEFURTsgfQpAQCAtODUsNiArNTcsMzIgQEAgc3RydWN0IFNWR1Byb3BlcnR5
VHJhaXRzPE1vcnBob2xvZ3lPcGVyYQogICAgIH0KIH07CiAKK2NsYXNzIFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRU1vcnBob2xvZ3lFbGVtZW50PiBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisKKyAgICB2b2lkIHNldFJh
ZGl1cyhmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZKTsKKworcHJpdmF0ZToKKyAgICBTVkdG
RU1vcnBob2xvZ3lFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCisg
ICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOworICAgIHZpcnR1
YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVh
bGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CisKKyAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiByYWRpdXNYSWRlbnRpZmllcigpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcmIHJhZGl1c1lJZGVudGlmaWVyKCk7CisKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHRkVNb3JwaG9sb2d5RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9TVFJJTkcoSW4xLCBpbjEpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJ
T04oX29wZXJhdG9yLCBfb3BlcmF0b3IsIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUpCisgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFJhZGl1c1gsIHJhZGl1c1gpCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfTlVNQkVSKFJhZGl1c1ksIHJhZGl1c1kpCisgICAgRU5EX0RFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVElFUworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1l
bnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNl
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNSArMzEsMjQgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5F
X0FOSU1BVEVEX1NUUklORyhTVkdGRU9mZnNldEVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIElu
MSwgaW4xKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRU9mZnNldEVsZW1lbnQsIFNWR05h
bWVzOjpkeEF0dHIsIER4LCBkeCkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVPZmZzZXRF
bGVtZW50LCBTVkdOYW1lczo6ZHlBdHRyLCBEeSwgZHkpCitCRUdJTl9ERUZJTkVfQU5JTUFURURf
UFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVPZmZzZXRFbGVtZW50
LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVS
KFNWR0ZFT2Zmc2V0RWxlbWVudCwgU1ZHTmFtZXM6OmR4QXR0ciwgRHgsIGR4KQorICAgIERFRklO
RV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVPZmZzZXRFbGVtZW50LCBTVkdOYW1lczo6ZHlBdHRyLCBE
eSwgZHkpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdGRU9mZnNldEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKGR4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGR5KQorICAg
IFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlu
bGluZSBTVkdGRU9mZnNldEVsZW1lbnQ6OlNWR0ZFT2Zmc2V0RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlT2Zmc2V0VGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRl
ZFByb3BlcnRpZXNGb3JTVkdGRU9mZnNldEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdG
RU9mZnNldEVsZW1lbnQ+IFNWR0ZFT2Zmc2V0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTEwMSw1NSArMTEwLDYgQEAg
dm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0ZFT2Zmc2V0RWxlbWVudDo6c3luY2hyb25pemVQcm9w
ZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUg
PT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUR4KCk7Ci0gICAgICAgIHN5bmNo
cm9uaXplRHkoKTsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1l
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmR4QXR0cikgewotICAgICAgICBz
eW5jaHJvbml6ZUR4KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmR5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUR5KCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0
cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBTVkdGRU9mZnNldEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVPZmZzZXRFbGVtZW50OjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZp
bGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0
dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OmR4QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZHlBdHRyLCBBbmltYXRlZE51bWJlcik7Ci19Ci0KIFBh
c3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU9mZnNldEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVm
ZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzgsMTUgKzM4LDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVk
QXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQ
cm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwog
Ci0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklN
QVRFRF9TVFJJTkcoSW4xLCBpbjEpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoRHgsIGR4
KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKER5LCBkeSkKKyAgICBCRUdJTl9ERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVPZmZzZXRFbGVtZW50KQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1C
RVIoRHgsIGR4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihEeSwgZHkpCisgICAg
RU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEz
ICszNiwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5
IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQotREVGSU5FX0FOSU1BVEVEX05V
TUJFUihTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6c3BlY3VsYXJDb25z
dGFudEF0dHIsIFNwZWN1bGFyQ29uc3RhbnQsIHNwZWN1bGFyQ29uc3RhbnQpCi1ERUZJTkVfQU5J
TUFURURfTlVNQkVSKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpzcGVj
dWxhckV4cG9uZW50QXR0ciwgU3BlY3VsYXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkKLURF
RklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFt
ZXM6OnN1cmZhY2VTY2FsZUF0dHIsIFN1cmZhY2VTY2FsZSwgc3VyZmFjZVNjYWxlKQotREVGSU5F
X0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhY
SWRlbnRpZmllcigpLCBLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgpCi1ERUZJ
TkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQsIFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwga2VybmVsVW5pdExlbmd0
aFlJZGVudGlmaWVyKCksIEtlcm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKK0JF
R0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklO
RyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGlu
MSkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQsIFNWR05hbWVzOjpzcGVjdWxhckNvbnN0YW50QXR0ciwgU3BlY3VsYXJDb25zdGFudCwgc3Bl
Y3VsYXJDb25zdGFudCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciwgU3BlY3VsYXJF
eHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyLCBT
dXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSX01V
TFRJUExFX1dSQVBQRVJTKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpr
ZXJuZWxVbml0TGVuZ3RoQXR0ciwga2VybmVsVW5pdExlbmd0aFhJZGVudGlmaWVyKCksIEtlcm5l
bFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVN
QkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05h
bWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwga2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCks
IEtlcm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKK0VORF9ERUZJTkVfQU5JTUFU
RURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZF
U3BlY3VsYXJMaWdodGluZ0VsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkoaW4xKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHNwZWN1bGFy
Q29uc3RhbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc3BlY3VsYXJF
eHBvbmVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShzdXJmYWNlU2Nh
bGUpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoa2VybmVsVW5pdExlbmd0
aFgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoa2VybmVsVW5pdExlbmd0
aFkpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJ
RVMKIAogaW5saW5lIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OlNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05h
bWUsIGRvY3VtZW50KQpAQCAtNTEsNiArNjIsNyBAQCBpbmxpbmUgU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudDo6U1ZHCiAgICAgLCBtX3N1cmZhY2VTY2FsZSgxKQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKFNWR05hbWVzOjpmZVNwZWN1bGFyTGlnaHRpbmdUYWcpKTsKKyAgICByZWdpc3Rl
ckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQoKTsKIH0K
IAogUGFzc1JlZlB0cjxTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50PiBTVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQpAQCAtMjA0LDcxICsyMTYsNiBAQCB2b2lkIFNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQ6OmxpZ2h0CiAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRy
TmFtZSk7CiB9CiAKLXZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6c3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0
ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAg
ICBzeW5jaHJvbml6ZVN1cmZhY2VTY2FsZSgpOwotICAgICAgICBzeW5jaHJvbml6ZVNwZWN1bGFy
Q29uc3RhbnQoKTsKLSAgICAgICAgc3luY2hyb25pemVTcGVjdWxhckV4cG9uZW50KCk7Ci0gICAg
ICAgIHN5bmNocm9uaXplS2VybmVsVW5pdExlbmd0aFgoKTsKLSAgICAgICAgc3luY2hyb25pemVL
ZXJuZWxVbml0TGVuZ3RoWSgpOwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAg
ICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN1
cmZhY2VTY2FsZUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVTdXJmYWNlU2NhbGUoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3Bl
Y3VsYXJDb25zdGFudEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVTcGVjdWxhckNvbnN0YW50
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplU3BlY3VsYXJF
eHBvbmVudCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUtl
cm5lbFVuaXRMZW5ndGhYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplS2VybmVsVW5pdExlbmd0aFko
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
fQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0K
LQotdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1h
dGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OnNwZWN1bGFyQ29uc3RhbnRBdHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciwgQW5pbWF0
ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
c3VyZmFjZVNjYWxlQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIEFuaW1hdGVkTnVt
YmVyT3B0aW9uYWxOdW1iZXIpOwotfQotCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVp
bGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0
ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MiwyMSArNDIsMTkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCBib29sIHNl
dEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1l
Jik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKTsKICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIoKTsKIAotICAg
IC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURf
U1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFNwZWN1bGFyQ29u
c3RhbnQsIHNwZWN1bGFyQ29uc3RhbnQpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3Bl
Y3VsYXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05V
TUJFUihTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05V
TUJFUihLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgpCi0gICAgREVDTEFSRV9B
TklNQVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZKQorICAg
IEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3BlY3VsYXJDb25zdGFudCwgc3BlY3VsYXJDb25z
dGFudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3BlY3VsYXJFeHBvbmVudCwg
c3BlY3VsYXJFeHBvbmVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3VyZmFj
ZVNjYWxlLCBzdXJmYWNlU2NhbGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEtl
cm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWCkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZKQorICAgIEVO
RF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAJKHJldmlzaW9u
IDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiwxMyArMzIsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0v
LyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhT
VkdGRVRpbGVFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKK0JFR0lOX0RFRklO
RV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRVRp
bGVFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKK0VORF9ERUZJTkVfQU5JTUFU
RURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZF
VGlsZUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQor
ICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAK
IGlubGluZSBTVkdGRVRpbGVFbGVtZW50OjpTVkdGRVRpbGVFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVUaWxlVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFBy
b3BlcnRpZXNGb3JTVkdGRVRpbGVFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVUaWxl
RWxlbWVudD4gU1ZHRkVUaWxlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTg2LDQxICs5Myw2IEBAIHZvaWQgU1ZHRkVU
aWxlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmcKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAotdm9pZCBTVkdGRVRpbGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgp
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJO
YW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5
bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IAotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFVGlsZUVsZW1l
bnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0K
LXZvaWQgU1ZHRkVUaWxlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkK
LXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19
Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVRpbGVFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0
ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDEzICszNywxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAot
ICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFU
RURfU1RSSU5HKEluMSwgaW4xKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdGRVRpbGVFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEs
IGluMSkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNl
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTMgKzMwLDI0
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5p
dGlvbnMKLURFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OmJhc2VGcmVxdWVuY3lBdHRyLCBiYXNlRnJlcXVlbmN5
WElkZW50aWZpZXIoKSwgQmFzZUZyZXF1ZW5jeVgsIGJhc2VGcmVxdWVuY3lYKQotREVGSU5FX0FO
SU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBT
VkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0dHIsIGJhc2VGcmVxdWVuY3lZSWRlbnRpZmllcigpLCBC
YXNlRnJlcXVlbmN5WSwgYmFzZUZyZXF1ZW5jeVkpCi1ERUZJTkVfQU5JTUFURURfSU5URUdFUihT
VkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6bnVtT2N0YXZlc0F0dHIsIE51bU9jdGF2
ZXMsIG51bU9jdGF2ZXMpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQsIFNWR05hbWVzOjpzZWVkQXR0ciwgU2VlZCwgc2VlZCkKLURFRklORV9BTklNQVRFRF9F
TlVNRVJBVElPTihTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6c3RpdGNoVGlsZXNB
dHRyLCBTdGl0Y2hUaWxlcywgc3RpdGNoVGlsZXMsIFNWR1N0aXRjaE9wdGlvbnMpCi1ERUZJTkVf
QU5JTUFURURfRU5VTUVSQVRJT04oU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OnR5
cGVBdHRyLCBUeXBlLCB0eXBlLCBUdXJidWxlbmNlVHlwZSkKK0JFR0lOX0RFRklORV9BTklNQVRF
RF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVS
UyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0dHIsIGJh
c2VGcmVxdWVuY3lYSWRlbnRpZmllcigpLCBCYXNlRnJlcXVlbmN5WCwgYmFzZUZyZXF1ZW5jeVgp
CisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRVR1cmJ1
bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0dHIsIGJhc2VGcmVxdWVuY3lZ
SWRlbnRpZmllcigpLCBCYXNlRnJlcXVlbmN5WSwgYmFzZUZyZXF1ZW5jeVkpCisgICAgREVGSU5F
X0FOSU1BVEVEX0lOVEVHRVIoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6Om51bU9j
dGF2ZXNBdHRyLCBOdW1PY3RhdmVzLCBudW1PY3RhdmVzKQorICAgIERFRklORV9BTklNQVRFRF9O
VU1CRVIoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OnNlZWRBdHRyLCBTZWVkLCBz
ZWVkKQorICAgIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRVR1cmJ1bGVuY2VFbGVt
ZW50LCBTVkdOYW1lczo6c3RpdGNoVGlsZXNBdHRyLCBTdGl0Y2hUaWxlcywgc3RpdGNoVGlsZXMs
IFNWR1N0aXRjaE9wdGlvbnMpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQsIFNWR05hbWVzOjp0eXBlQXR0ciwgVHlwZSwgdHlwZSwgVHVyYnVs
ZW5jZVR5cGUpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNU
RVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50KQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGJhc2VGcmVxdWVuY3lYKQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGJhc2VGcmVxdWVuY3lZKQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKG51bU9jdGF2ZXMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoc2VlZCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShzdGl0Y2hUaWxlcykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh0eXBl
KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVT
CiAKIGlubGluZSBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkK
QEAgLTQ1LDYgKzU2LDcgQEAgaW5saW5lIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OlNWR0ZFVHVy
YgogICAgICwgbV90eXBlKEZFVFVSQlVMRU5DRV9UWVBFX1RVUkJVTEVOQ0UpCiB7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlVHVyYnVsZW5jZVRhZykpOworICAgIHJlZ2lzdGVy
QW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVUdXJidWxlbmNlRWxlbWVudCgpOwogfQogCiBQYXNz
UmVmUHRyPFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ+IFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBA
IC0xNjAsNzEgKzE3Miw2IEBAIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6c3ZnQXR0cmli
dXQKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRVR1cmJ1bGVuY2VF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplVHlwZSgpOwotICAgICAgICBzeW5jaHJvbml6ZVN0aXRjaFRpbGVzKCk7Ci0gICAgICAgIHN5
bmNocm9uaXplQmFzZUZyZXF1ZW5jeVgoKTsKLSAgICAgICAgc3luY2hyb25pemVCYXNlRnJlcXVl
bmN5WSgpOwotICAgICAgICBzeW5jaHJvbml6ZVNlZWQoKTsKLSAgICAgICAgc3luY2hyb25pemVO
dW1PY3RhdmVzKCk7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
czo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHko
YXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjp0eXBlQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVR5cGUoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3RpdGNo
VGlsZXNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplU3RpdGNoVGlsZXMoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6YmFzZUZyZXF1
ZW5jeUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVCYXNlRnJlcXVlbmN5WCgpOwotICAgICAg
ICBzeW5jaHJvbml6ZUJhc2VGcmVxdWVuY3lZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNlZWRBdHRyKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplU2VlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpudW1PY3RhdmVzQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZU51bU9j
dGF2ZXMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVUdXJidWxlbmNlRWxl
bWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0K
LQotdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAg
ICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpiYXNlRnJlcXVlbmN5QXR0ciwg
QW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjpudW1PY3RhdmVzQXR0ciwgQW5pbWF0ZWRJbnRlZ2VyKTsKLSAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNlZWRBdHRyLCBBbmlt
YXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjpzdGl0Y2hUaWxlc0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dHlwZUF0dHIsIEFuaW1hdGVkRW51bWVyYXRp
b24pOwotfQotCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciogZmlsdGVyKQogewogICAgIGlmIChi
YXNlRnJlcXVlbmN5WCgpIDwgMCB8fCBiYXNlRnJlcXVlbmN5WSgpIDwgMCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiwzNCArMzYsNiBAQCBlbnVtIFNWR1N0aXRjaE9wdGlvbnMgewogICAgIFNW
R19TVElUQ0hUWVBFX05PU1RJVENIID0gMgogfTsKIAotY2xhc3MgU1ZHRkVUdXJidWxlbmNlRWxl
bWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgewotcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ+IGNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotcHJpdmF0ZToKLSAgICBTVkdG
RVR1cmJ1bGVuY2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotCi0g
ICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwotICAgIHZpcnR1
YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpOwotICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQ
cm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwot
Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYmFzZUZyZXF1ZW5jeVhJZGVudGlmaWVy
KCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYmFzZUZyZXF1ZW5jeVlJZGVudGlm
aWVyKCk7Ci0KLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNM
QVJFX0FOSU1BVEVEX05VTUJFUihCYXNlRnJlcXVlbmN5WCwgYmFzZUZyZXF1ZW5jeVgpCi0gICAg
REVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQmFzZUZyZXF1ZW5jeVksIGJhc2VGcmVxdWVuY3lZKQot
ICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihOdW1PY3RhdmVzLCBudW1PY3RhdmVzKQotICAg
IERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFNlZWQsIHNlZWQpCi0gICAgREVDTEFSRV9BTklNQVRF
RF9FTlVNRVJBVElPTihTdGl0Y2hUaWxlcywgc3RpdGNoVGlsZXMsIFNWR1N0aXRjaE9wdGlvbnMp
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihUeXBlLCB0eXBlLCBUdXJidWxlbmNl
VHlwZSkKLX07Ci0KIHRlbXBsYXRlPD4KIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdTdGl0
Y2hPcHRpb25zPiB7CiAgICAgc3RhdGljIFNWR1N0aXRjaE9wdGlvbnMgaGlnaGVzdEVudW1WYWx1
ZSgpIHsgcmV0dXJuIFNWR19TVElUQ0hUWVBFX05PU1RJVENIOyB9CkBAIC0xMjIsNiArOTQsMzIg
QEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFR1cmJ1bGVuY2VUeXBlPgogICAgIH0KIH07CiAK
K2NsYXNzIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdG
RVR1cmJ1bGVuY2VFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Kik7CisKK3ByaXZhdGU6CisgICAgU1ZHRkVUdXJidWxlbmNlRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqKTsKKworICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdHRyaWJ1dGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRl
KEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlcios
IEZpbHRlciopOworCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYmFzZUZyZXF1ZW5j
eVhJZGVudGlmaWVyKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYmFzZUZyZXF1
ZW5jeVlJZGVudGlmaWVyKCk7CisKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1C
RVIoQmFzZUZyZXF1ZW5jeVgsIGJhc2VGcmVxdWVuY3lYKQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX05VTUJFUihCYXNlRnJlcXVlbmN5WSwgYmFzZUZyZXF1ZW5jeVkpCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfSU5URUdFUihOdW1PY3RhdmVzLCBudW1PY3RhdmVzKQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX05VTUJFUihTZWVkLCBzZWVkKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X0VOVU1FUkFUSU9OKFN0aXRjaFRpbGVzLCBzdGl0Y2hUaWxlcywgU1ZHU3RpdGNoT3B0aW9ucykK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihUeXBlLCB0eXBlLCBUdXJidWxl
bmNlVHlwZSkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCit9OworCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDIzICszNiwzNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3Bl
cnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHRmlsdGVyRWxl
bWVudCwgU1ZHTmFtZXM6OmZpbHRlclVuaXRzQXR0ciwgRmlsdGVyVW5pdHMsIGZpbHRlclVuaXRz
LCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQotREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9O
KFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpwcmltaXRpdmVVbml0c0F0dHIsIFByaW1pdGl2
ZVVuaXRzLCBwcmltaXRpdmVVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKLURFRklO
RV9BTklNQVRFRF9MRU5HVEgoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4
KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6eUF0
dHIsIFksIHkpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05h
bWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZH
RmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhlaWdodCwgaGVpZ2h0KQotREVG
SU5FX0FOSU1BVEVEX0lOVEVHRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRmlsdGVyRWxlbWVudCwg
U1ZHTmFtZXM6OmZpbHRlclJlc0F0dHIsIGZpbHRlclJlc1hJZGVudGlmaWVyKCksIEZpbHRlclJl
c1gsIGZpbHRlclJlc1gpCi1ERUZJTkVfQU5JTUFURURfSU5URUdFUl9NVUxUSVBMRV9XUkFQUEVS
UyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6ZmlsdGVyUmVzQXR0ciwgZmlsdGVyUmVzWUlk
ZW50aWZpZXIoKSwgRmlsdGVyUmVzWSwgZmlsdGVyUmVzWSkKLURFRklORV9BTklNQVRFRF9TVFJJ
TkcoU1ZHRmlsdGVyRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCi1E
RUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUwor
ICAgIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1l
czo6ZmlsdGVyVW5pdHNBdHRyLCBGaWx0ZXJVbml0cywgZmlsdGVyVW5pdHMsIFNWR1VuaXRUeXBl
czo6U1ZHVW5pdFR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZpbHRl
ckVsZW1lbnQsIFNWR05hbWVzOjpwcmltaXRpdmVVbml0c0F0dHIsIFByaW1pdGl2ZVVuaXRzLCBw
cmltaXRpdmVVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICBERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKKyAg
ICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjp5QXR0
ciwgWSwgeSkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlckVsZW1lbnQsIFNW
R05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdo
dCkKKyAgICBERUZJTkVfQU5JTUFURURfSU5URUdFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGaWx0
ZXJFbGVtZW50LCBTVkdOYW1lczo6ZmlsdGVyUmVzQXR0ciwgZmlsdGVyUmVzWElkZW50aWZpZXIo
KSwgRmlsdGVyUmVzWCwgZmlsdGVyUmVzWCkKKyAgICBERUZJTkVfQU5JTUFURURfSU5URUdFUl9N
VUxUSVBMRV9XUkFQUEVSUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6ZmlsdGVyUmVzQXR0
ciwgZmlsdGVyUmVzWUlkZW50aWZpZXIoKSwgRmlsdGVyUmVzWSwgZmlsdGVyUmVzWSkKKyAgICBE
RUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZpbHRlckVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZB
dHRyLCBIcmVmLCBocmVmKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0ZpbHRlckVs
ZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVf
QU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR0ZpbHRlckVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
ZmlsdGVyVW5pdHMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocHJpbWl0
aXZlVW5pdHMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeCkKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKHdpZHRoKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKGhlaWdodCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShmaWx0ZXJS
ZXNYKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGZpbHRlclJlc1kpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorRU5EX1JF
R0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZpbHRlckVsZW1lbnQ6OlNW
R0ZpbHRlckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKLSAgICAs
IFNWR1VSSVJlZmVyZW5jZSgpCi0gICAgLCBTVkdMYW5nU3BhY2UoKQotICAgICwgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCgpCiAgICAgLCBtX2ZpbHRlclVuaXRzKFNWR1VuaXRUeXBlczo6
U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkKICAgICAsIG1fcHJpbWl0aXZlVW5pdHMo
U1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKQogICAgICwgbV94KExl
bmd0aE1vZGVXaWR0aCwgIi0xMCUiKQpAQCAtNjMsNiArNzQsNyBAQCBpbmxpbmUgU1ZHRmlsdGVy
RWxlbWVudDo6U1ZHRmlsdGVyRWxlbWVuCiAgICAgLy8gU3BlYzogSWYgdGhlIHgveSBhdHRyaWJ1
dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICItMTAl
IiB3ZXJlIHNwZWNpZmllZC4KICAgICAvLyBTcGVjOiBJZiB0aGUgd2lkdGgvaGVpZ2h0IGF0dHJp
YnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEy
MCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmaWx0
ZXJUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZpbHRlckVsZW1l
bnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGaWx0ZXJFbGVtZW50PiBTVkdGaWx0ZXJFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQpAQCAtMTg5LDk4ICsyMDEsNiBAQCB2b2lkIFNWR0ZpbHRlckVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nCiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiB9CiAKLXZvaWQg
U1ZHRmlsdGVyRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAg
ICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHN5bmNo
cm9uaXplV2lkdGgoKTsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVGaWx0ZXJVbml0cygpOwotICAgICAgICBzeW5jaHJvbml6ZVByaW1pdGl2ZVVuaXRz
KCk7Ci0gICAgICAgIHN5bmNocm9uaXplRmlsdGVyUmVzWCgpOwotICAgICAgICBzeW5jaHJvbml6
ZUZpbHRlclJlc1koKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICBTVkdTdHlsZWRFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAg
IFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cikg
ewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVZ
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OndpZHRoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVdpZHRoKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIp
IHsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplRmlsdGVyVW5pdHMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cHJpbWl0aXZlVW5pdHNBdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplUHJpbWl0aXZlVW5pdHMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZmlsdGVyUmVzQXR0cikgewotICAgICAg
ICBzeW5jaHJvbml6ZUZpbHRlclJlc1goKTsKLSAgICAgICAgc3luY2hyb25pemVGaWx0ZXJSZXNZ
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hy
b25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgU1ZHRmlsdGVyRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7Ci0KLSAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyLCBBbmltYXRlZEVudW1l
cmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnBy
aW1pdGl2ZVVuaXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVk
TGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Ondp
ZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZmlsdGVyUmVzQXR0ciwgQW5pbWF0ZWRO
dW1iZXJPcHRpb25hbE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0KIHZvaWQgU1ZHRmls
dGVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBi
ZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewog
ICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJl
Zm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQs
NiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQo
Ym9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9k
ZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHls
ZSopOwpAQCAtNjYsMjEgKzYzLDE4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgZmlsdGVyUmVzWElkZW50aWZpZXIoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBmaWx0ZXJSZXNZSWRlbnRpZmllcigpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihGaWx0ZXJV
bml0cywgZmlsdGVyVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCi0gICAgREVDTEFS
RV9BTklNQVRFRF9FTlVNRVJBVElPTihQcmltaXRpdmVVbml0cywgcHJpbWl0aXZlVW5pdHMsIFNW
R1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwg
eCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQotICAgIERFQ0xBUkVfQU5JTUFU
RURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWln
aHQsIGhlaWdodCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoRmlsdGVyUmVzWCwgZmls
dGVyUmVzWCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoRmlsdGVyUmVzWSwgZmlsdGVy
UmVzWSkKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RS
SU5HKEhyZWYsIGhyZWYpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR0ZpbHRlckVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVS
QVRJT04oRmlsdGVyVW5pdHMsIGZpbHRlclVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBl
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFByaW1pdGl2ZVVuaXRzLCBw
cmltaXRpdmVVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgo
WSwgeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9JTlRFR0VSKEZpbHRlclJlc1gsIGZpbHRlclJlc1gpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfSU5URUdFUihGaWx0ZXJSZXNZLCBmaWx0ZXJSZXNZKQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsMTEgKzM3LDIyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEFu
aW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQot
REVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0
aCwgd2lkdGgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcywgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhlaWdodCwgaGVpZ2h0KQotREVG
SU5FX0FOSU1BVEVEX1NUUklORyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMs
IFNWR05hbWVzOjpyZXN1bHRBdHRyLCBSZXN1bHQsIHJlc3VsdCkKK0JFR0lOX0RFRklORV9BTklN
QVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKKyAgICBERUZJ
TkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywg
U1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0
aCwgd2lkdGgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdodCkK
KyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcywgU1ZHTmFtZXM6OnJlc3VsdEF0dHIsIFJlc3VsdCwgcmVzdWx0KQorRU5EX0RFRklO
RV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh3aWR0aCkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShoZWlnaHQpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkocmVzdWx0KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklN
QVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVsZW1lbnQpCitFTkRfUkVHSVNURVJfQU5JTUFURURf
UFJPUEVSVElFUwogCiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OlNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KQpAQCAtNTIsNiArNjMsNyBAQCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OlNWCiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIHgveSBhdHRyaWJ1dGUgaXMgbm90
IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIwJSIgd2VyZSBzcGVj
aWZpZWQuCiAgICAgLy8gU3BlYzogSWYgdGhlIHdpZHRoL2hlaWdodCBhdHRyaWJ1dGUgaXMgbm90
IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIxMDAlIiB3ZXJlIHNw
ZWNpZmllZC4KKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcygpOwogfQogCiBib29sIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCkBAIC0xMjEsNTEgKzEzMyw2IEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGUKICAgICBpbnZhbGlkYXRlKCk7CiB9CiAKLXZvaWQgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoteyAgICAKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5h
bWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgc3luY2hyb25pemVZKCk7
Ci0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQo
KTsKLSAgICAgICAgc3luY2hyb25pemVSZXN1bHQoKTsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVu
dDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBT
VkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpIHsK
LSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWSgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
Ojp3aWR0aEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJlc3VsdEF0dHIpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVSZXN1bHQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotfQotCiB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVD
aGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIFNW
R1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNo
YW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkBAIC0yMDQsMTcgKzE3MSw2IEBA
IHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGUKICAgICBmaWx0ZXJFZmZl
Y3QtPnNldEVmZmVjdEJvdW5kYXJpZXMoZWZmZWN0QkJveCk7CiB9CiAKLXZvaWQgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKQotewotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgCi0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5n
dGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0dHIs
IEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cmVzdWx0QXR0ciwgQW5p
bWF0ZWRTdHJpbmcpOwotfQotCiBSZW5kZXJPYmplY3QqIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJT
dHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1Jlc291cmNlRmlsdGVy
UHJpbWl0aXZlKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gOTA0NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDYgQEAgcHJvdGVjdGVkOgogICAgIGJv
b2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZv
aWQgZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJik7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5n
ZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNo
YW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIGlubGluZSB2b2lkIGlu
dmFsaWRhdGUoKQpAQCAtNzMsMTIgKzcxLDEzIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAg
ICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4
dCYpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5
KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKLSAgICBERUNMQVJF
X0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NU
UklORyhSZXN1bHQsIHJlc3VsdCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX0xFTkdUSChYLCB4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZ
LCB5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwgd2lkdGgpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX1NUUklORyhSZXN1bHQsIHJlc3VsdCkKKyAgICBFTkRfREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0
LDIwICsxMDQsNiBAQCBib29sIFNWR0ZpdFRvVmlld0JveDo6cGFyc2VNYXBwZWRBdHRyaWJ1CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNWR0ZpdFRvVmlld0JveDo6c3luY2hyb25pemVQ
cm9wZXJ0aWVzKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRy
TmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplVmlld0JveCgpOwotICAg
ICAgICBzeW5jaHJvbml6ZVByZXNlcnZlQXNwZWN0UmF0aW8oKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dmlld0JveEF0dHIpCi0gICAg
ICAgIHN5bmNocm9uaXplVmlld0JveCgpOwotICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cikKLSAgICAgICAgc3luY2hyb25pemVQcmVzZXJ2
ZUFzcGVjdFJhdGlvKCk7Ci19Ci0KIGJvb2wgU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIHJldHVybiBhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6dmlld0JveEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnByZXNl
cnZlQXNwZWN0UmF0aW9BdHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmll
d0JveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3gu
aAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDE0ICs0MywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShEb2N1bWVudCosIEF0dHJpYnV0ZSopOwogICAgIGJvb2wgaXNL
bm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdm9pZCBhZGRTdXBwb3J0
ZWRBdHRyaWJ1dGVzKEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4mKTsKLSAgICB2b2lkIHN5bmNocm9u
aXplUHJvcGVydGllcyhjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2V0Vmlld0JveEJhc2VWYWx1ZShjb25zdCBGbG9hdFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNldFByZXNlcnZlQXNwZWN0UmF0aW9CYXNlVmFsdWUoY29uc3QgU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpbyYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVZpZXdCb3goKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJlc2VydmVBc3BlY3RSYXRpbygpID0g
MDsKLQogcHJpdmF0ZToKICAgICBib29sIHBhcnNlVmlld0JveChEb2N1bWVudCosIGNvbnN0IFN0
cmluZyYsIEZsb2F0UmVjdCYpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVt
ZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiwxNCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotREVGSU5FX0FO
SU1BVEVEX0JPT0xFQU4oU1ZHRm9udEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5F
X0FOSU1BVEVEX0JPT0xFQU4oU1ZHRm9udEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9S
RUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZvbnRFbGVtZW50KQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAg
UkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkRWxlbWVudCkKK0VO
RF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdGb250RWxlbWVudDo6
U1ZHRm9udEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkgCkBAIC00
NSw2ICs1MSw3IEBAIGlubGluZSBTVkdGb250RWxlbWVudDo6U1ZHRm9udEVsZW1lbnQoY28KICAg
ICAsIG1faXNHbHlwaENhY2hlVmFsaWQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
U1ZHTmFtZXM6OmZvbnRUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNW
R0ZvbnRFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRm9udEVsZW1lbnQ+IFNWR0ZvbnRF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQpAQCAtNTIsMTQgKzU5LDYgQEAgUGFzc1JlZlB0cjxTVkdGb250RWxlbWVudD4gU1ZH
Rm9udEVsZW1lbgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRm9udEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBTVkdGb250RWxlbWVudDo6c3luY2hyb25pemVQcm9w
ZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBTVkdTdHlsZWRFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLQotICAgIGlmIChhdHRyTmFtZSA9
PSBhbnlRTmFtZSgpIHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKQotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQoKTsKLX0KLQogdm9pZCBTVkdGb250RWxlbWVudDo6aW52YWxpZGF0ZUdseXBoQ2FjaGUo
KQogewogICAgIGlmIChtX2lzR2x5cGhDYWNoZVZhbGlkKSB7CkBAIC0yNTksMTcgKzI1OCw2IEBA
IEdseXBoIFNWR0ZvbnRFbGVtZW50OjptaXNzaW5nR2x5cGgoKQogICAgIHJldHVybiBtX21pc3Np
bmdHbHlwaDsKIH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZvbnRFbGVtZW50
OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12
b2lkIFNWR0ZvbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewot
ICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpKTsKLX0KLQogfQogCiAjZW5kaWYgLy8gRU5B
QkxFKFNWR19GT05UUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5oCShyZXZp
c2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MywxOCArNzMsMTQgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdG
b250RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2
aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYp
IHsgcmV0dXJuIGZhbHNlOyB9ICAKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZvaWQgZW5zdXJlR2x5cGhDYWNo
ZSgpOwogICAgIHZvaWQgcmVnaXN0ZXJMaWdhdHVyZXNJbkdseXBoQ2FjaGUoVmVjdG9yPFN0cmlu
Zz4mKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotCi0gICAgLy8g
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVB
TihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQor
ICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGb250RWxlbWVudCkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVElFUwogCiAgICAgS2VybmluZ1BhaXJWZWN0b3IgbV9ob3Jpem9udGFsS2VybmluZ1BhaXJz
OwogICAgIEtlcm5pbmdQYWlyVmVjdG9yIG1fdmVydGljYWxLZXJuaW5nUGFpcnM7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAJKHJldmlz
aW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTMgKzM0LDI1IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkK
LURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVz
Ojp5QXR0ciwgWSwgeSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKLURFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBI
ZWlnaHQsIGhlaWdodCkKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQotREVGSU5FX0FOSU1BVEVE
X0JPT0xFQU4oU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVG
SU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnhB
dHRyLCBYLCB4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RI
KFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0aCwgd2lk
dGgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwg
U1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhlaWdodCwgaGVpZ2h0KQorICAgIERFRklORV9BTklNQVRF
RF9TVFJJTkcoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBI
cmVmLCBocmVmKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5F
X0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWSh4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHkpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkod2lkdGgpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkoaGVpZ2h0KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVE
X1BST1BFUlRZKGhyZWYpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJP
UEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9QQVJF
TlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9Q
Uk9QRVJUSUVTCiAKIGlubGluZSBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6U1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCkBAIC01MCw2ICs2Miw3IEBAIGlubGluZSBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6U1ZH
Rm9yZWkKICAgICAsIG1faGVpZ2h0KExlbmd0aE1vZGVIZWlnaHQpCiB7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoU1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RUYWcpKTsKKyAgICByZWdpc3RlckFuaW1h
dGVkUHJvcGVydGllc0ZvclNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQ
dHI8U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ+IFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAt
MTM0LDc2ICsxNDcsNiBAQCB2b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1
CiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3Vy
Y2VJbnZhbGlkYXRpb24ocmVuZGVyZXIpOwogfQogCi12b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQot
ewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
WCgpOwotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgp
OwotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAg
ICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAg
ICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShh
dHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVk
QXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplWCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjp5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikgewotICAgICAgICBz
eW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMs
IGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRm9yZWlnbk9iamVj
dEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7
Ci19Ci0KLXZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCi17ICAgIAotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7Ci0KLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExl
bmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0
ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBB
bmltYXRlZFN0cmluZyk7Ci19Ci0KIFJlbmRlck9iamVjdCogU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewog
ICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdGb3JlaWduT2JqZWN0KHRoaXMpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgJKHJldmlz
aW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDI2ICs0NSwyNSBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1
YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwog
CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0
OwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1Jl
bGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFy
YXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKLSAgICBERUNMQVJFX0FO
SU1BVEVEX0xFTkdUSChZLCB5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3
aWR0aCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKLQotICAg
IC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhy
ZWYpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9B
TklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0Zv
cmVpZ25PYmplY3RFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX0xFTkdUSChXaWR0aCwgd2lkdGgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIKEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhI
cmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJl
cXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1
aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9u
cyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkg
eyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCShy
ZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDEzICszMSwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotREVGSU5FX0FOSU1BVEVEX0JPT0xF
QU4oU1ZHR0VsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwg
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JF
R0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xF
QU4oU1ZHR0VsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwg
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VO
RF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR0dFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAgUkVHSVNU
RVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5J
TUFURURfUFJPUEVSVElFUwogCiBTVkdHRWxlbWVudDo6U1ZHR0VsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OmdUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0Zv
clNWR0dFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHR0VsZW1lbnQ+IFNWR0dFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQpAQCAtODksNDQgKzk3LDYgQEAgdm9pZCBTVkdHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChjbwogICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJl
c291cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyKTsKIH0KIAotdm9pZCBTVkdHRWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBp
ZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVy
dGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAg
IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJO
YW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5j
aHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAg
ICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQot
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0dFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVy
biBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0dFbGVtZW50Ojpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKSk7Ci19Ci0KIFJlbmRlck9iamVjdCogU1ZHR0VsZW1lbnQ6
OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQog
ewogICAgIC8vIFNWRyAxLjEgdGVzdHN1aXRlIGV4cGxpY2l0ZWx5IHVzZXMgY29uc3RydWN0cyBs
aWtlIDxnIGRpc3BsYXk9Im5vbmUiPjxsaW5lYXJHcmFkaWVudD4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxNiArNTEsMTcgQEAgcHJpdmF0ZToKICAg
ICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmly
dHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5k
ZXJpbmdDb250ZXh0Jik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMK
KyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHR0VsZW1lbnQpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRJRVMKIAotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJF
X0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCkKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVh
dHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVu
c2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0
czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyOSwyMCArMTI5LDYgQEAgc3RhdGljIGlubGluZSBmbG9hdCBw
YXJzZVNWR0dseXBoQXR0cmlidQogICAgIHJldHVybiB2YWx1ZS50b0Zsb2F0KCk7CiB9CiAKLUF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdHbHlwaEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0
dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHR2x5cGhFbGVt
ZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsUGFz
c2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAp
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZEF0dHIsIEFu
aW1hdGVkUGF0aCk7Ci19Ci0KIFNWR0dseXBoIFNWR0dseXBoRWxlbWVudDo6YnVpbGRHZW5lcmlj
R2x5cGhJZGVudGlmaWVyKGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgU1ZHR2x5
cGggaWRlbnRpZmllcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmgJKHJl
dmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0Niw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZH
R2x5cGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCisgICAgLy8g
RklYTUU6IHN2Z0F0dHJpYnV0ZUNoYW5nZWQgbWlzc2luZy4KICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21E
b2N1bWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5j
cHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE4ICszOCwyOSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5J
TUFURURfRU5VTUVSQVRJT04oU1ZHR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6c3ByZWFkTWV0
aG9kQXR0ciwgU3ByZWFkTWV0aG9kLCBzcHJlYWRNZXRob2QsIFNWR0dyYWRpZW50RWxlbWVudDo6
U1ZHU3ByZWFkTWV0aG9kVHlwZSkKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdHcmFk
aWVudEVsZW1lbnQsIFNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0ciwgR3JhZGllbnRVbml0cywg
Z3JhZGllbnRVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKLURFRklORV9BTklNQVRF
RF9UUkFOU0ZPUk1fTElTVChTVkdHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpncmFkaWVudFRy
YW5zZm9ybUF0dHIsIEdyYWRpZW50VHJhbnNmb3JtLCBncmFkaWVudFRyYW5zZm9ybSkKLURFRklO
RV9BTklNQVRFRF9TVFJJTkcoU1ZHR3JhZGllbnRFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0
ciwgSHJlZiwgaHJlZikKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0dyYWRpZW50RWxlbWVu
dCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorQkVHSU5fREVGSU5FX0FO
SU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHR3Jh
ZGllbnRFbGVtZW50LCBTVkdOYW1lczo6c3ByZWFkTWV0aG9kQXR0ciwgU3ByZWFkTWV0aG9kLCBz
cHJlYWRNZXRob2QsIFNWR1NwcmVhZE1ldGhvZFR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX0VO
VU1FUkFUSU9OKFNWR0dyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRy
LCBHcmFkaWVudFVuaXRzLCBncmFkaWVudFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBl
KQorICAgIERFRklORV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChTVkdHcmFkaWVudEVsZW1lbnQs
IFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIsIEdyYWRpZW50VHJhbnNmb3JtLCBncmFk
aWVudFRyYW5zZm9ybSkKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0dyYWRpZW50RWxl
bWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCisgICAgREVGSU5FX0FOSU1B
VEVEX0JPT0xFQU4oU1ZHR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVH
SVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdHcmFkaWVudEVsZW1lbnQpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc3ByZWFkTWV0aG9kKQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKGdyYWRpZW50VW5pdHMpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoZ3JhZGllbnRUcmFuc2Zvcm0pCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklN
QVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVsZW1lbnQpCitFTkRfUkVHSVNURVJfQU5JTUFURURf
UFJPUEVSVElFUwogCiBTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR0dyYWRpZW50RWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdT
dHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAgICwgbV9zcHJlYWRNZXRob2QoU1ZH
X1NQUkVBRE1FVEhPRF9QQUQpCisgICAgLCBtX3NwcmVhZE1ldGhvZChTVkdTcHJlYWRNZXRob2RQ
YWQpCiAgICAgLCBtX2dyYWRpZW50VW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09C
SkVDVEJPVU5ESU5HQk9YKQogeworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZH
R3JhZGllbnRFbGVtZW50KCk7CiB9CiAKIGJvb2wgU1ZHR3JhZGllbnRFbGVtZW50Ojppc1N1cHBv
cnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKQEAgLTExNiw2MSAr
MTI3LDYgQEAgdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYQogICAgIGlm
IChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCiAgICAgICAgIG9iamVjdC0+c2V0
TmVlZHNMYXlvdXQodHJ1ZSk7CiB9Ci0KLXZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChh
dHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplR3JhZGllbnRVbml0
cygpOwotICAgICAgICBzeW5jaHJvbml6ZUdyYWRpZW50VHJhbnNmb3JtKCk7Ci0gICAgICAgIHN5
bmNocm9uaXplU3ByZWFkTWV0aG9kKCk7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgU1ZH
U3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1l
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6Z3JhZGllbnRVbml0c0F0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVHcmFkaWVudFVuaXRz
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUdyYWRpZW50
VHJhbnNmb3JtKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OnNwcmVhZE1ldGhvZEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVTcHJl
YWRNZXRob2QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAg
ICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgU1ZHR3JhZGllbnRF
bGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKQotewotICAgIFNWR1N0
eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0KLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnNwcmVhZE1ldGhvZEF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Z3JhZGllbnRVbml0c0F0
dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6Z3JhZGllbnRUcmFuc2Zvcm1BdHRyLCBBbmltYXRlZFRyYW5zZm9ybUxp
c3QpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpocmVm
QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotfQogICAgIAogdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdl
LCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw1OSArMzMsMjcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdHcmFkaWVu
dEVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCB7Ci1wdWJsaWM6Ci0gICAgZW51
bSBTVkdTcHJlYWRNZXRob2RUeXBlIHsKLSAgICAgICAgU1ZHX1NQUkVBRE1FVEhPRF9VTktOT1dO
ID0gMCwKLSAgICAgICAgU1ZHX1NQUkVBRE1FVEhPRF9QQUQgICAgID0gMSwKLSAgICAgICAgU1ZH
X1NQUkVBRE1FVEhPRF9SRUZMRUNUID0gMiwKLSAgICAgICAgU1ZHX1NQUkVBRE1FVEhPRF9SRVBF
QVQgID0gMwotICAgIH07Ci0KLSAgICBWZWN0b3I8R3JhZGllbnQ6OkNvbG9yU3RvcD4gYnVpbGRT
dG9wcygpOwotIAotcHJvdGVjdGVkOgotICAgIFNWR0dyYWRpZW50RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZvaWQgZmlsbFBhc3NlZEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJik7Ci0KLXByaXZhdGU6
Ci0gICAgdmlydHVhbCBib29sIG5lZWRzUGVuZGluZ1Jlc291cmNlSGFuZGxpbmcoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29s
IGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBh
ZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKLQotICAgIC8vIEFuaW1h
dGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJ
T04oU3ByZWFkTWV0aG9kLCBzcHJlYWRNZXRob2QsIFNWR1NwcmVhZE1ldGhvZFR5cGUpCi0gICAg
REVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihHcmFkaWVudFVuaXRzLCBncmFkaWVudFVuaXRz
LCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURfVFJBTlNG
T1JNX0xJU1QoR3JhZGllbnRUcmFuc2Zvcm0sIGdyYWRpZW50VHJhbnNmb3JtKQotCi0gICAgLy8g
U1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikK
LQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1B
VEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCkKK2VudW0gU1ZHU3ByZWFkTWV0aG9kVHlwZSB7CisgICAgU1ZHU3ByZWFkTWV0aG9k
VW5rbm93biA9IDAsCisgICAgU1ZHU3ByZWFkTWV0aG9kUGFkLAorICAgIFNWR1NwcmVhZE1ldGhv
ZFJlZmxlY3QsCisgICAgU1ZHU3ByZWFkTWV0aG9kUmVwZWF0CiB9OwogCiB0ZW1wbGF0ZTw+Ci1z
dHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHR3JhZGllbnRFbGVtZW50OjpTVkdTcHJlYWRNZXRo
b2RUeXBlPiB7Ci0gICAgc3RhdGljIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHU3ByZWFkTWV0aG9k
VHlwZSBoaWdoZXN0RW51bVZhbHVlKCkgeyByZXR1cm4gU1ZHR3JhZGllbnRFbGVtZW50OjpTVkdf
U1BSRUFETUVUSE9EX1JFUEVBVDsgfQorc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1NwcmVh
ZE1ldGhvZFR5cGU+IHsKKyAgICBzdGF0aWMgU1ZHU3ByZWFkTWV0aG9kVHlwZSBoaWdoZXN0RW51
bVZhbHVlKCkgeyByZXR1cm4gU1ZHU3ByZWFkTWV0aG9kUmVwZWF0OyB9CiAKLSAgICBzdGF0aWMg
U3RyaW5nIHRvU3RyaW5nKFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHU3ByZWFkTWV0aG9kVHlwZSB0
eXBlKQorICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoU1ZHU3ByZWFkTWV0aG9kVHlwZSB0eXBl
KQogICAgIHsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgU1ZHR3JhZGll
bnRFbGVtZW50OjpTVkdfU1BSRUFETUVUSE9EX1VOS05PV046CisgICAgICAgIGNhc2UgU1ZHU3By
ZWFkTWV0aG9kVW5rbm93bjoKICAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAg
ICAgICBjYXNlIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHX1NQUkVBRE1FVEhPRF9QQUQ6CisgICAg
ICAgIGNhc2UgU1ZHU3ByZWFkTWV0aG9kUGFkOgogICAgICAgICAgICAgcmV0dXJuICJwYWQiOwot
ICAgICAgICBjYXNlIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHX1NQUkVBRE1FVEhPRF9SRUZMRUNU
OgorICAgICAgICBjYXNlIFNWR1NwcmVhZE1ldGhvZFJlZmxlY3Q6CiAgICAgICAgICAgICByZXR1
cm4gInJlZmxlY3QiOwotICAgICAgICBjYXNlIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHX1NQUkVB
RE1FVEhPRF9SRVBFQVQ6CisgICAgICAgIGNhc2UgU1ZHU3ByZWFkTWV0aG9kUmVwZWF0OgogICAg
ICAgICAgICAgcmV0dXJuICJyZXBlYXQiOwogICAgICAgICB9CiAKQEAgLTkzLDE4ICs2MSw1MiBA
QCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHR3JhZGllbnRFbGVtCiAgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwogICAgIH0KIAotICAgIHN0YXRpYyBTVkdHcmFkaWVudEVsZW1lbnQ6
OlNWR1NwcmVhZE1ldGhvZFR5cGUgZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQorICAg
IHN0YXRpYyBTVkdTcHJlYWRNZXRob2RUeXBlIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1
ZSkKICAgICB7CiAgICAgICAgIGlmICh2YWx1ZSA9PSAicGFkIikKLSAgICAgICAgICAgIHJldHVy
biBTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR19TUFJFQURNRVRIT0RfUEFEOworICAgICAgICAgICAg
cmV0dXJuIFNWR1NwcmVhZE1ldGhvZFBhZDsKICAgICAgICAgaWYgKHZhbHVlID09ICJyZWZsZWN0
IikKLSAgICAgICAgICAgIHJldHVybiBTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR19TUFJFQURNRVRI
T0RfUkVGTEVDVDsKKyAgICAgICAgICAgIHJldHVybiBTVkdTcHJlYWRNZXRob2RSZWZsZWN0Owog
ICAgICAgICBpZiAodmFsdWUgPT0gInJlcGVhdCIpCi0gICAgICAgICAgICByZXR1cm4gU1ZHR3Jh
ZGllbnRFbGVtZW50OjpTVkdfU1BSRUFETUVUSE9EX1JFUEVBVDsKLSAgICAgICAgcmV0dXJuIFNW
R0dyYWRpZW50RWxlbWVudDo6U1ZHX1NQUkVBRE1FVEhPRF9VTktOT1dOOworICAgICAgICAgICAg
cmV0dXJuIFNWR1NwcmVhZE1ldGhvZFJlcGVhdDsKKyAgICAgICAgcmV0dXJuIFNWR1NwcmVhZE1l
dGhvZFVua25vd247CiAgICAgfQogfTsKIAorY2xhc3MgU1ZHR3JhZGllbnRFbGVtZW50IDogcHVi
bGljIFNWR1N0eWxlZEVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMg
U1ZHVVJJUmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgeworcHVibGljOgorICAgIGVudW0geworICAgICAgICBT
VkdfU1BSRUFETUVUSE9EX1VOS05PV04gPSBTVkdTcHJlYWRNZXRob2RVbmtub3duLAorICAgICAg
ICBTVkdfU1BSRUFETUVUSE9EX1BBRCA9IFNWR1NwcmVhZE1ldGhvZFBhZCwKKyAgICAgICAgU1ZH
X1NQUkVBRE1FVEhPRF9SRUZMRUNUID0gU1ZHU3ByZWFkTWV0aG9kUmVmbGVjdCwKKyAgICAgICAg
U1ZHX1NQUkVBRE1FVEhPRF9SRVBFQVQgPSBTVkdTcHJlYWRNZXRob2RSZXBlYXQgCisgICAgfTsK
KworICAgIFZlY3RvcjxHcmFkaWVudDo6Q29sb3JTdG9wPiBidWlsZFN0b3BzKCk7CisgCitwcm90
ZWN0ZWQ6CisgICAgU1ZHR3JhZGllbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOworCisgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSop
OworICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQZW5kaW5nUmVzb3VyY2VI
YW5kbGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY2hp
bGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNo
YW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDAp
OworCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0dyYWRpZW50RWxl
bWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihTcHJlYWRNZXRob2Qs
IHNwcmVhZE1ldGhvZCwgU1ZHU3ByZWFkTWV0aG9kVHlwZSkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9FTlVNRVJBVElPTihHcmFkaWVudFVuaXRzLCBncmFkaWVudFVuaXRzLCBTVkdVbml0VHlw
ZXM6OlNWR1VuaXRUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNU
KEdyYWRpZW50VHJhbnNmb3JtLCBncmFkaWVudFRyYW5zZm9ybSkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09M
RUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQp
CisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworfTsKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNCArMzYsMjcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0
aW9ucwotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjp4
QXR0ciwgWCwgeCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHSW1hZ2VFbGVtZW50LCBTVkdO
YW1lczo6eUF0dHIsIFksIHkpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ltYWdlRWxlbWVu
dCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgV2lkdGgsIHdpZHRoKQotREVGSU5FX0FOSU1BVEVEX0xF
TkdUSChTVkdJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdo
dCkKLURFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR0ltYWdlRWxlbWVudCwg
U1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBw
cmVzZXJ2ZUFzcGVjdFJhdGlvKQotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdJbWFnZUVsZW1l
bnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQotREVGSU5FX0FOSU1BVEVEX0JP
T0xFQU4oU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCisgICAgREVG
SU5FX0FOSU1BVEVEX0xFTkdUSChTVkdJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgWSwg
eSkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ltYWdlRWxlbWVudCwgU1ZHTmFtZXM6
OndpZHRoQXR0ciwgV2lkdGgsIHdpZHRoKQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZH
SW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQpCisgICAg
REVGSU5FX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oU1ZHSW1hZ2VFbGVtZW50LCBTVkdO
YW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNl
cnZlQXNwZWN0UmF0aW8pCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdJbWFnZUVsZW1l
bnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQorICAgIERFRklORV9BTklNQVRF
RF9CT09MRUFOKFNWR0ltYWdlRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVS
X0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHSW1hZ2VFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh3aWR0aCkKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShoZWlnaHQpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkocHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShocmVmKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVE
X1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5U
X0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAg
UkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNU
RVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHSW1hZ2VFbGVtZW50OjpTVkdJbWFn
ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
CkBAIC01NCw2ICs2Nyw3IEBAIGlubGluZSBTVkdJbWFnZUVsZW1lbnQ6OlNWR0ltYWdlRWxlbWVu
dCgKICAgICAsIG1faW1hZ2VMb2FkZXIodGhpcykKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShT
VkdOYW1lczo6aW1hZ2VUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNW
R0ltYWdlRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ltYWdlRWxlbWVudD4gU1ZHSW1h
Z2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQpAQCAtMTczLDg4ICsxODcsNiBAQCB2b2lkIFNWR0ltYWdlRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZH
SW1hZ2VFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgc3luY2hyb25p
emVXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAgICBzeW5jaHJv
bml6ZVByZXNlcnZlQXNwZWN0UmF0aW8oKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICBT
VkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAg
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5h
bWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cikgewotICAgICAgICBzeW5jaHJv
bml6ZVgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZVdpZHRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsKLSAgICAgICAgc3luY2hy
b25pemVIZWlnaHQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIpIHsKLSAgICAgICAgc3luY2hy
b25pemVQcmVzZXJ2ZUFzcGVjdFJhdGlvKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0
aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ltYWdlRWxl
bWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0K
LQotdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
Ci17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0
aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBBbmlt
YXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotfQotCiBib29sIFNW
R0ltYWdlRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIHgoKS5pc1JlbGF0aXZlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50
LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw5ICs1MSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVh
bCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50
b0RvY3VtZW50KCk7CkBAIC02OCwxOCArNjUsMjAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJv
b2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB3aWxs
TW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVj
bGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKLSAgICBERUNMQVJF
X0FOSU1BVEVEX0xFTkdUSChZLCB5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRo
LCB3aWR0aCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oUHJlc2VydmVBc3BlY3RSYXRp
bywgcHJlc2VydmVBc3BlY3RSYXRpbykKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERF
Q0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgQkVHSU5fREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ltYWdlRWxlbWVudCkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgo
WSwgeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHBy
ZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYs
IGhyZWYpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVhbCB2b2lkIHN5
bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWly
ZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVk
RXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKHRo
aXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSB7IFNW
R1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiAKICAgICBTVkdJbWFn
ZUxvYWRlciBtX2ltYWdlTG9hZGVyOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
aW5lRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVF
bGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGlu
ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMiArMzMsMjMgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5F
X0FOSU1BVEVEX0xFTkdUSChTVkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6OngxQXR0ciwgWDEsIHgx
KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6OnkxQXR0
ciwgWTEsIHkxKQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5lRWxlbWVudCwgU1ZHTmFt
ZXM6OngyQXR0ciwgWDIsIHgyKQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5lRWxlbWVu
dCwgU1ZHTmFtZXM6OnkyQXR0ciwgWTIsIHkyKQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZH
TGluZUVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lO
X0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChT
VkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6OngxQXR0ciwgWDEsIHgxKQorICAgIERFRklORV9BTklN
QVRFRF9MRU5HVEgoU1ZHTGluZUVsZW1lbnQsIFNWR05hbWVzOjp5MUF0dHIsIFkxLCB5MSkKKyAg
ICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0xpbmVFbGVtZW50LCBTVkdOYW1lczo6eDJBdHRy
LCBYMiwgeDIpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5lRWxlbWVudCwgU1ZH
TmFtZXM6OnkyQXR0ciwgWTIsIHkyKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0xp
bmVFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVG
SU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdMaW5lRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WSh4MSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5MSkKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh4MikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWSh5MikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KQorICAgIFJFR0lTVEVSX1BB
UkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVE
X1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0xpbmVFbGVtZW50OjpTVkdMaW5lRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTQ4LDYgKzU5
LDcgQEAgaW5saW5lIFNWR0xpbmVFbGVtZW50OjpTVkdMaW5lRWxlbWVudChjbwogICAgICwgbV95
MihMZW5ndGhNb2RlSGVpZ2h0KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjps
aW5lVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdMaW5lRWxlbWVu
dCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0xpbmVFbGVtZW50PiBTVkdMaW5lRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAg
LTE0NSw3NCArMTU3LDYgQEAgdm9pZCBTVkdMaW5lRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0xpbmVFbGVtZW50Ojpz
eW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAg
IGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWDEoKTsK
LSAgICAgICAgc3luY2hyb25pemVZMSgpOwotICAgICAgICBzeW5jaHJvbml6ZVgyKCk7Ci0gICAg
ICAgIHN5bmNocm9uaXplWTIoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhp
cywgYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Ongx
QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVgxKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnkxQXR0cikgewotICAgICAgICBzeW5j
aHJvbml6ZVkxKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OngyQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVgyKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnkyQXR0cikg
ewotICAgICAgICBzeW5jaHJvbml6ZVkyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRp
ZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdMaW5l
RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsK
LX0KLQotdm9pZCBTVkdMaW5lRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4MUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnkxQXR0ciwgQW5pbWF0ZWRM
ZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eDJB
dHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjp5MkF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLX0KLQogdm9pZCBTVkdMaW5lRWxl
bWVudDo6dG9QYXRoRGF0YShQYXRoJiBwYXRoKSBjb25zdAogewogICAgIEFTU0VSVChwYXRoLmlz
RW1wdHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaAkocmV2aXNpb24g
OTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDcsOSArNDcsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCB2
b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0OwogCkBAIC01NywxNCArNTQsMTggQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAK
LSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1B
VEVEX0xFTkdUSChYMSwgeDEpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWTEsIHkxKQot
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgyLCB4MikKLSAgICBERUNMQVJFX0FOSU1BVEVE
X0xFTkdUSChZMiwgeTIpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR0xpbmVFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChY
MSwgeDEpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFkxLCB5MSkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWDIsIHgyKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X0xFTkdUSChZMiwgeTIpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRl
bnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3Vh
Z2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDAsMTEgKzQwLDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQg
cHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LCBTVkdOYW1lczo6eDFBdHRyLCBYMSwgeDEpCi1ERUZJTkVfQU5JTUFURURf
TEVOR1RIKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OnkxQXR0ciwgWTEsIHkx
KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR05h
bWVzOjp4MkF0dHIsIFgyLCB4MikKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LCBTVkdOYW1lczo6eTJBdHRyLCBZMiwgeTIpCitCRUdJTl9ERUZJTkVfQU5J
TUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LCBTVkdOYW1lczo6eDFBdHRyLCBYMSwgeDEpCisgICAgREVGSU5FX0FOSU1B
VEVEX0xFTkdUSChTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjp5MUF0dHIsIFkx
LCB5MSkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0xpbmVhckdyYWRpZW50RWxlbWVu
dCwgU1ZHTmFtZXM6OngyQXR0ciwgWDIsIHgyKQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgo
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6eTJBdHRyLCBZMiwgeTIpCitFTkRf
REVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJP
UEVSVElFUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoeDEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
eTEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeDIpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeTIpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHR3JhZGllbnRFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVE
X1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6U1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCkKICAgICA6IFNWR0dyYWRpZW50RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKQEAg
LTU1LDYgKzY0LDcgQEAgaW5saW5lIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6U1ZHTGluZQog
ewogICAgIC8vIFNwZWM6IElmIHRoZSB4MiBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhl
IGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIxMDAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICBB
U1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6bGluZWFyR3JhZGllbnRUYWcpKTsKKyAgICByZWdp
c3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0xpbmVhckdyYWRpZW50RWxlbWVudCgpOwogfQog
CiBQYXNzUmVmUHRyPFNWR0xpbmVhckdyYWRpZW50RWxlbWVudD4gU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQpAQCAtMTE5LDYyICsxMjksNiBAQCB2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVu
dDo6c3ZnQXR0cmliCiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiB9CiAK
LXZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoteyAgICAKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55
UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVgxKCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
WTEoKTsKLSAgICAgICAgc3luY2hyb25pemVYMigpOwotICAgICAgICBzeW5jaHJvbml6ZVkyKCk7
Ci0gICAgICAgIFNWR0dyYWRpZW50RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFt
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmli
dXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdHcmFkaWVudEVsZW1lbnQ6OnN5bmNocm9uaXpl
UHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfSAgIAotCi0gICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjp4MUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYMSgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
Ojp5MUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVZMSgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4MkF0dHIpIHsKLSAgICAgICAg
c3luY2hyb25pemVYMigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjp5MkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVZMigpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7
Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQot
ewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdHcmFk
aWVudEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjp4MUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnkxQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eDJBdHRyLCBBbmltYXRlZExl
bmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5MkF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLX0KLQogUmVuZGVyT2JqZWN0KiBTVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUq
KQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRp
ZW50KHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDE5ICs0MiwxNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxm
SGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBk
ZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYMSwgeDEpCi0gICAgREVD
TEFSRV9BTklNQVRFRF9MRU5HVEgoWTEsIHkxKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RI
KFgyLCB4MikKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZMiwgeTIpCisgICAgQkVHSU5f
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWDEsIHgxKQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX0xFTkdUSChZMSwgeTEpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgy
LCB4MikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWTIsIHkyKQorICAgIEVORF9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCwxNCArMjgsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmlt
YXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdNUGF0
aEVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQotREVGSU5FX0FOSU1B
VEVEX0JPT0xFQU4oU1ZHTVBhdGhFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9B
TklNQVRFRF9TVFJJTkcoU1ZHTVBhdGhFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJl
ZiwgaHJlZikKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdNUGF0aEVsZW1lbnQsIFNW
R05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURf
UFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR01QYXRo
RWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShocmVmKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHTVBhdGhF
bGVtZW50OjpTVkdNUGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6bXBhdGhUYWcpKTsKKyAgICByZWdpc3Rl
ckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR01QYXRoRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRy
PFNWR01QYXRoRWxlbWVudD4gU1ZHTVBhdGhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNjgsNDEgKzc1LDYgQEAgdm9p
ZCBTVkdNUGF0aEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogfQogCi12b2lkIFNWR01QYXRoRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55
UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQo
KTsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1VSSVJlZmVyZW5j
ZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVIcmVm
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR01QYXRoRWxlbWVudDo6YXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsK
LSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdN
UGF0aEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKS5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1h
dGVkU3RyaW5nKTsKLX0KLQogU1ZHUGF0aEVsZW1lbnQqIFNWR01QYXRoRWxlbWVudDo6cGF0aEVs
ZW1lbnQoKQogewogICAgIEVsZW1lbnQqIHRhcmdldCA9IHRyZWVTY29wZSgpLT5nZXRFbGVtZW50
QnlJZChnZXRUYXJnZXQoaHJlZigpKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBh
dGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxl
bWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTcgKzQ0LDExIEBAIHByaXZhdGU6CiAgICAg
Ly8gRklYTUU6IHN2Z0F0dHJpYnV0ZUNoYW5nZWQgbWlzc2luZy4KICAgICBib29sIGlzU3VwcG9y
dGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9u
aXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCi0gICAgLy8gQW5p
bWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0KLSAgICAvLyBTVkdVUklSZWZlcmVuY2UKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQotCi0gICAgLy8gU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJFR0lO
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdNUGF0aEVsZW1lbnQpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNiArMzMsNDUgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FO
SU1BVEVEX0xFTkdUSChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6cmVmWEF0dHIsIFJlZlgs
IHJlZlgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVz
OjpyZWZZQXR0ciwgUmVmWSwgcmVmWSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTWFya2Vy
RWxlbWVudCwgU1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0ciwgTWFya2VyV2lkdGgsIG1hcmtlcldp
ZHRoKQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6
bWFya2VySGVpZ2h0QXR0ciwgTWFya2VySGVpZ2h0LCBtYXJrZXJIZWlnaHQpCi1ERUZJTkVfQU5J
TUFURURfRU5VTUVSQVRJT04oU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6Om1hcmtlclVuaXRz
QXR0ciwgTWFya2VyVW5pdHMsIG1hcmtlclVuaXRzLCBTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJr
ZXJVbml0c1R5cGUpCi1ERUZJTkVfQU5JTUFURURfQU5HTEVfTVVMVElQTEVfV1JBUFBFUlMoU1ZH
TWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6Om9yaWVudEF0dHIsIG9yaWVudEFuZ2xlSWRlbnRpZmll
cigpLCBPcmllbnRBbmdsZSwgb3JpZW50QW5nbGUpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihT
VkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIs
IEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi1E
RUZJTkVfQU5JTUFURURfUkVDVChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6dmlld0JveEF0
dHIsIFZpZXdCb3gsIHZpZXdCb3gpCi1ERUZJTkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJ
TyhTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFBy
ZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisvLyBEZWZpbmUgY3VzdG9t
IGFuaW1hdGVkIHByb3BlcnR5ICdvcmllbnRUeXBlJy4KK2NvbnN0IFNWR1Byb3BlcnR5SW5mbyog
U1ZHTWFya2VyRWxlbWVudDo6b3JpZW50VHlwZVByb3BlcnR5SW5mbygpCit7CisgICAgc3RhdGlj
IGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogc19wcm9wZXJ0eUluZm8gPSAwOworICAgIGlmICghc19w
cm9wZXJ0eUluZm8pIHsKKyAgICAgICAgc19wcm9wZXJ0eUluZm8gPSBuZXcgU1ZHUHJvcGVydHlJ
bmZvKEFuaW1hdGVkRW51bWVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTVkdOYW1lczo6b3JpZW50QXR0ciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWVudFR5cGVJZGVudGlmaWVyKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU1ZHTWFya2VyRWxlbWVudDo6
c3luY2hyb25pemVPcmllbnRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJlNWR01hcmtlckVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlT3JpZW50VHlwZVdy
YXBwZXIpOworICAgIH0KKyAgICByZXR1cm4gc19wcm9wZXJ0eUluZm87Cit9CisKK0JFR0lOX0RF
RklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdN
YXJrZXJFbGVtZW50LCBTVkdOYW1lczo6cmVmWEF0dHIsIFJlZlgsIHJlZlgpCisgICAgREVGSU5F
X0FOSU1BVEVEX0xFTkdUSChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6cmVmWUF0dHIsIFJl
ZlksIHJlZlkpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXJrZXJFbGVtZW50LCBT
VkdOYW1lczo6bWFya2VyV2lkdGhBdHRyLCBNYXJrZXJXaWR0aCwgbWFya2VyV2lkdGgpCisgICAg
REVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6bWFya2Vy
SGVpZ2h0QXR0ciwgTWFya2VySGVpZ2h0LCBtYXJrZXJIZWlnaHQpCisgICAgREVGSU5FX0FOSU1B
VEVEX0VOVU1FUkFUSU9OKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjptYXJrZXJVbml0c0F0
dHIsIE1hcmtlclVuaXRzLCBtYXJrZXJVbml0cywgU1ZHTWFya2VyVW5pdHNUeXBlKQorICAgIERF
RklORV9BTklNQVRFRF9BTkdMRV9NVUxUSVBMRV9XUkFQUEVSUyhTVkdNYXJrZXJFbGVtZW50LCBT
VkdOYW1lczo6b3JpZW50QXR0ciwgb3JpZW50QW5nbGVJZGVudGlmaWVyKCksIE9yaWVudEFuZ2xl
LCBvcmllbnRBbmdsZSkKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdNYXJrZXJFbGVt
ZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgREVGSU5FX0FO
SU1BVEVEX1JFQ1QoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBWaWV3
Qm94LCB2aWV3Qm94KQorICAgIERFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNW
R01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgUHJlc2Vy
dmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKK0VORF9ERUZJTkVfQU5JTUFURURf
UFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR01hcmtl
ckVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocmVmWCkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShyZWZZKQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKG1hcmtlcldpZHRoKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKG1hcmtlckhlaWdodCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShtYXJrZXJVbml0cykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWShvcmllbnRBbmdsZSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShv
cmllbnRUeXBlKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
dmlld0JveCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShwcmVzZXJ2ZUFz
cGVjdFJhdGlvKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0
eWxlZEVsZW1lbnQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUg
U1ZHTWFya2VyRWxlbWVudDo6U1ZHTWFya2VyRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQpAQCAtNTAsMTEgKzc5LDEyIEBAIGlubGluZSBTVkdNYXJrZXJFbGVtZW50
OjpTVkdNYXJrZXJFbGVtZW4KICAgICAsIG1fcmVmWShMZW5ndGhNb2RlSGVpZ2h0KQogICAgICwg
bV9tYXJrZXJXaWR0aChMZW5ndGhNb2RlV2lkdGgsICIzIikKICAgICAsIG1fbWFya2VySGVpZ2h0
KExlbmd0aE1vZGVIZWlnaHQsICIzIikgCi0gICAgLCBtX21hcmtlclVuaXRzKFNWR19NQVJLRVJV
TklUU19TVFJPS0VXSURUSCkKLSAgICAsIG1fb3JpZW50VHlwZShTVkdfTUFSS0VSX09SSUVOVF9B
TkdMRSkKKyAgICAsIG1fbWFya2VyVW5pdHMoTWFya2VyVW5pdHNTdHJva2VXaWR0aCkKKyAgICAs
IG1fb3JpZW50VHlwZShNYXJrZXJPcmllbnRBbmdsZSkKIHsKICAgICAvLyBTcGVjOiBJZiB0aGUg
bWFya2VyV2lkdGgvbWFya2VySGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUg
ZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjMiIHdlcmUgc3BlY2lmaWVkLgogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjptYXJrZXJUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVk
UHJvcGVydGllc0ZvclNWR01hcmtlckVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdNYXJr
ZXJFbGVtZW50PiBTVkdNYXJrZXJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTMzLDEwICsxNjMsMTAgQEAgdm9pZCBT
VkdNYXJrZXJFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogCiAgICAgaWYgKGF0dHItPm5hbWUo
KSA9PSBTVkdOYW1lczo6b3JpZW50QXR0cikgewogICAgICAgICBTVkdBbmdsZSBhbmdsZTsKLSAg
ICAgICAgU1ZHTWFya2VyT3JpZW50VHlwZSBvcmllbnRUeXBlID0gU1ZHUHJvcGVydHlUcmFpdHM8
U1ZHTWFya2VyT3JpZW50VHlwZT46OmZyb21TdHJpbmcodmFsdWUsIGFuZ2xlKTsKKyAgICAgICAg
TWFya2VyT3JpZW50VHlwZSBvcmllbnRUeXBlID0gU1ZHUHJvcGVydHlUcmFpdHM8TWFya2VyT3Jp
ZW50VHlwZT46OmZyb21TdHJpbmcodmFsdWUsIGFuZ2xlKTsKICAgICAgICAgaWYgKG9yaWVudFR5
cGUgPiAwKQogICAgICAgICAgICAgc2V0T3JpZW50VHlwZUJhc2VWYWx1ZShvcmllbnRUeXBlKTsK
LSAgICAgICAgaWYgKG9yaWVudFR5cGUgPT0gU1ZHX01BUktFUl9PUklFTlRfQU5HTEUpCisgICAg
ICAgIGlmIChvcmllbnRUeXBlID09IE1hcmtlck9yaWVudEFuZ2xlKQogICAgICAgICAgICAgc2V0
T3JpZW50QW5nbGVCYXNlVmFsdWUoYW5nbGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MTcwLDkxICsyMDAsNiBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
CiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiB9CiAKLXZvaWQgU1ZHTWFy
a2VyRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5j
aHJvbml6ZU1hcmtlclVuaXRzKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUmVmWCgpOwotICAgICAg
ICBzeW5jaHJvbml6ZVJlZlkoKTsKLSAgICAgICAgc3luY2hyb25pemVNYXJrZXJXaWR0aCgpOwot
ICAgICAgICBzeW5jaHJvbml6ZU1hcmtlckhlaWdodCgpOwotICAgICAgICBzeW5jaHJvbml6ZU9y
aWVudEFuZ2xlKCk7Ci0gICAgICAgIHN5bmNocm9uaXplT3JpZW50VHlwZSgpOwotICAgICAgICBz
eW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHRml0VG9W
aWV3Qm94OjpzeW5jaHJvbml6ZVByb3BlcnRpZXMoYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHls
ZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0g
ICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpt
YXJrZXJVbml0c0F0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVNYXJrZXJVbml0cygpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpyZWZY
QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVJlZlgoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cmVmWUF0dHIpIHsKLSAgICAgICAg
c3luY2hyb25pemVSZWZZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6
ZU1hcmtlcldpZHRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVN
YXJrZXJIZWlnaHQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6b3JpZW50QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZU9yaWVudEFu
Z2xlKCk7Ci0gICAgICAgIHN5bmNocm9uaXplT3JpZW50VHlwZSgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0ZpdFRv
Vmlld0JveDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRml0VG9W
aWV3Qm94OjpzeW5jaHJvbml6ZVByb3BlcnRpZXMoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBTVkdNYXJrZXJFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR01hcmtlckVsZW1lbnQ6OmZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyZWZYQXR0ciwgQW5pbWF0ZWRM
ZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cmVm
WUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6bWFya2VySGVpZ2h0QXR0ciwgQW5p
bWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6bWFya2VyVW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om9yaWVudEF0dHIsIEFuaW1hdGVkQW5nbGUp
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dmlld0JveEF0
dHIsIEFuaW1hdGVkUmVjdCk7Ci19Ci0KIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFm
dGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFu
Z2UsIGNoaWxkQ291bnREZWx0YSk7CkBAIC0yNjgsMjAgKzIxMywyNiBAQCB2b2lkIFNWR01hcmtl
ckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChiCiAKIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c2V0
T3JpZW50VG9BdXRvKCkKIHsKLSAgICBzZXRPcmllbnRUeXBlQmFzZVZhbHVlKFNWR19NQVJLRVJf
T1JJRU5UX0FVVE8pOworICAgIHNldE9yaWVudFR5cGVCYXNlVmFsdWUoTWFya2VyT3JpZW50QXV0
byk7CiAgICAgc2V0T3JpZW50QW5nbGVCYXNlVmFsdWUoU1ZHQW5nbGUoKSk7CiAKLSAgICBpZiAo
UmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5l
ZWRzTGF5b3V0KHRydWUpOworICAgIC8vIE1hcmsgb3JpZW50QXR0ciBkaXJ0eSAtIHRoZSBuZXh0
IFhNTCBET00gYWNjZXNzIG9mIHRoYXQgYXR0cmlidXRlIGtpY2tzIGluIHN5bmNocm9uaXphdGlv
bi4KKyAgICBtX29yaWVudEFuZ2xlLnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKKyAgICBtX29y
aWVudFR5cGUuc2hvdWxkU3luY2hyb25pemUgPSB0cnVlOworICAgIGludmFsaWRhdGVTVkdBdHRy
aWJ1dGVzKCk7CisgICAgc3ZnQXR0cmlidXRlQ2hhbmdlZChvcmllbnRBbmdsZVByb3BlcnR5SW5m
bygpLT5hdHRyaWJ1dGVOYW1lKTsKIH0KIAogdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzZXRPcmll
bnRUb0FuZ2xlKGNvbnN0IFNWR0FuZ2xlJiBhbmdsZSkKIHsKLSAgICBzZXRPcmllbnRUeXBlQmFz
ZVZhbHVlKFNWR19NQVJLRVJfT1JJRU5UX0FOR0xFKTsKKyAgICBzZXRPcmllbnRUeXBlQmFzZVZh
bHVlKE1hcmtlck9yaWVudEFuZ2xlKTsKICAgICBzZXRPcmllbnRBbmdsZUJhc2VWYWx1ZShhbmds
ZSk7CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAg
ICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOworICAgIC8vIE1hcmsgb3JpZW50QXR0ciBk
aXJ0eSAtIHRoZSBuZXh0IFhNTCBET00gYWNjZXNzIG9mIHRoYXQgYXR0cmlidXRlIGtpY2tzIGlu
IHN5bmNocm9uaXphdGlvbi4KKyAgICBtX29yaWVudEFuZ2xlLnNob3VsZFN5bmNocm9uaXplID0g
dHJ1ZTsKKyAgICBtX29yaWVudFR5cGUuc2hvdWxkU3luY2hyb25pemUgPSB0cnVlOworICAgIGlu
dmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7CisgICAgc3ZnQXR0cmlidXRlQ2hhbmdlZChvcmllbnRB
bmdsZVByb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lKTsKIH0KIAogUmVuZGVyT2JqZWN0KiBT
VkdNYXJrZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRl
clN0eWxlKikKQEAgLTI5NywyNCArMjQ4LDM0IEBAIGJvb2wgU1ZHTWFya2VyRWxlbWVudDo6c2Vs
Zkhhc1JlbGF0aXZlTGUKICAgICAgICAgfHwgbWFya2VySGVpZ2h0KCkuaXNSZWxhdGl2ZSgpOwog
fQogCi12b2lkIFNWR01hcmtlckVsZW1lbnQ6OnN5bmNocm9uaXplT3JpZW50VHlwZSgpCit2b2lk
IFNWR01hcmtlckVsZW1lbnQ6OnN5bmNocm9uaXplT3JpZW50VHlwZSh2b2lkKiBjb250ZXh0RWxl
bWVudCkKIHsKLSAgICBpZiAoIW1fb3JpZW50VHlwZS5zaG91bGRTeW5jaHJvbml6ZSkKKyAgICBB
U1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgIFNWR01hcmtlckVsZW1lbnQqIG93bmVyVHlwZSA9
IHN0YXRpY19jYXN0PFNWR01hcmtlckVsZW1lbnQqPihjb250ZXh0RWxlbWVudCk7CisgICAgaWYg
KCFvd25lclR5cGUtPm1fb3JpZW50VHlwZS5zaG91bGRTeW5jaHJvbml6ZSkKICAgICAgICAgcmV0
dXJuOwotICAgIAorICAgCiAgICAgQXRvbWljU3RyaW5nIHZhbHVlOwotICAgIGlmIChtX29yaWVu
dFR5cGUudmFsdWUgPT0gU1ZHX01BUktFUl9PUklFTlRfQVVUTykKKyAgICBpZiAob3duZXJUeXBl
LT5tX29yaWVudFR5cGUudmFsdWUgPT0gTWFya2VyT3JpZW50QXV0bykKICAgICAgICAgdmFsdWUg
PSAiYXV0byI7Ci0gICAgZWxzZSBpZiAobV9vcmllbnRUeXBlLnZhbHVlID09IFNWR19NQVJLRVJf
T1JJRU5UX0FOR0xFKQotICAgICAgICB2YWx1ZSA9IG9yaWVudEFuZ2xlKCkudmFsdWVBc1N0cmlu
ZygpOworICAgIGVsc2UgaWYgKG93bmVyVHlwZS0+bV9vcmllbnRUeXBlLnZhbHVlID09IE1hcmtl
ck9yaWVudEFuZ2xlKQorICAgICAgICB2YWx1ZSA9IG93bmVyVHlwZS0+bV9vcmllbnRBbmdsZS52
YWx1ZS52YWx1ZUFzU3RyaW5nKCk7CiAKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25p
emVyPHRydWU+OjpzeW5jaHJvbml6ZSh0aGlzLCBTVkdOYW1lczo6b3JpZW50QXR0ciwgdmFsdWUp
OworICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5bmNocm9uaXpl
KG93bmVyVHlwZSwgb3JpZW50VHlwZVByb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lLCB2YWx1
ZSk7Cit9CisKK1Bhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gU1ZHTWFya2VyRWxlbWVu
dDo6bG9va3VwT3JDcmVhdGVPcmllbnRUeXBlV3JhcHBlcih2b2lkKiBjb250ZXh0RWxlbWVudCkK
K3sKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgIFNWR01hcmtlckVsZW1lbnQqIG93
bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR01hcmtlckVsZW1lbnQqPihjb250ZXh0RWxlbWVudCk7
CisgICAgcmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxT
VkdNYXJrZXJFbGVtZW50LCBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmPE1h
cmtlck9yaWVudFR5cGU+LCBNYXJrZXJPcmllbnRUeXBlLCB0cnVlPgorICAgICAgICAgICAob3du
ZXJUeXBlLCBvcmllbnRUeXBlUHJvcGVydHlJbmZvKCksIG93bmVyVHlwZS0+bV9vcmllbnRUeXBl
LnZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlU
ZWFyT2ZmPFNWR01hcmtlckVsZW1lbnQ6OlNWR01hcmtlck9yaWVudFR5cGU+ID4gU1ZHTWFya2Vy
RWxlbWVudDo6b3JpZW50VHlwZUFuaW1hdGVkKCkKK1Bhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvblByb3BlcnR5VGVhck9mZjxNYXJrZXJPcmllbnRUeXBlPiA+IFNWR01hcmtlckVsZW1l
bnQ6Om9yaWVudFR5cGVBbmltYXRlZCgpCiB7CiAgICAgbV9vcmllbnRUeXBlLnNob3VsZFN5bmNo
cm9uaXplID0gdHJ1ZTsKLSAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JD
cmVhdGVXcmFwcGVyPFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY8U1ZHTWFy
a2VyT3JpZW50VHlwZT4sIFNWR01hcmtlck9yaWVudFR5cGU+KHRoaXMsIFNWR05hbWVzOjpvcmll
bnRBdHRyLCBvcmllbnRUeXBlSWRlbnRpZmllcigpLCBtX29yaWVudFR5cGUudmFsdWUpOworICAg
IHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0
eVRlYXJPZmY8TWFya2VyT3JpZW50VHlwZT4gPihsb29rdXBPckNyZWF0ZU9yaWVudFR5cGVXcmFw
cGVyKHRoaXMpKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVu
dC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDIxICszNSw4MSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2VudW0gU1ZHTWFya2VyVW5pdHNUeXBlIHsKKyAgICBNYXJrZXJVbml0c1Vua25v
d24gPSAwLAorICAgIE1hcmtlclVuaXRzVXNlclNwYWNlT25Vc2UsCisgICAgTWFya2VyVW5pdHNT
dHJva2VXaWR0aAorfTsKKworZW51bSBNYXJrZXJPcmllbnRUeXBlIHsKKyAgICBNYXJrZXJPcmll
bnRVbmtub3duID0gMCwKKyAgICBNYXJrZXJPcmllbnRBdXRvLAorICAgIE1hcmtlck9yaWVudEFu
Z2xlCit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2Vy
VW5pdHNUeXBlPiB7CisgICAgc3RhdGljIFNWR01hcmtlclVuaXRzVHlwZSBoaWdoZXN0RW51bVZh
bHVlKCkgeyByZXR1cm4gTWFya2VyVW5pdHNTdHJva2VXaWR0aDsgfQorCisgICAgc3RhdGljIFN0
cmluZyB0b1N0cmluZyhTVkdNYXJrZXJVbml0c1R5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHN3
aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIE1hcmtlclVuaXRzVW5rbm93bjoKKyAgICAgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgICAgICBjYXNlIE1hcmtlclVuaXRzVXNlclNw
YWNlT25Vc2U6CisgICAgICAgICAgICByZXR1cm4gInVzZXJTcGFjZU9uVXNlIjsKKyAgICAgICAg
Y2FzZSBNYXJrZXJVbml0c1N0cm9rZVdpZHRoOgorICAgICAgICAgICAgcmV0dXJuICJzdHJva2VX
aWR0aCI7CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgfQorCisgICAgc3RhdGljIFNWR01hcmtlclVu
aXRzVHlwZSBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCisgICAgeworICAgICAgICBp
ZiAodmFsdWUgPT0gInVzZXJTcGFjZU9uVXNlIikKKyAgICAgICAgICAgIHJldHVybiBNYXJrZXJV
bml0c1VzZXJTcGFjZU9uVXNlOworICAgICAgICBpZiAodmFsdWUgPT0gInN0cm9rZVdpZHRoIikK
KyAgICAgICAgICAgIHJldHVybiBNYXJrZXJVbml0c1N0cm9rZVdpZHRoOworICAgICAgICByZXR1
cm4gTWFya2VyVW5pdHNVbmtub3duOworICAgIH0KK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBT
VkdQcm9wZXJ0eVRyYWl0czxNYXJrZXJPcmllbnRUeXBlPiB7CisgICAgc3RhdGljIE1hcmtlck9y
aWVudFR5cGUgaGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJuIE1hcmtlck9yaWVudEFuZ2xlOyB9
CisKKyAgICAvLyB0b1N0cmluZyBpcyBub3QgbmVlZGVkLCBzeW5jaHJvbml6ZU9yaWVudFR5cGUo
KSBoYW5kbGVzIHRoaXMgb24gaXRzIG93bi4KKworICAgIHN0YXRpYyBNYXJrZXJPcmllbnRUeXBl
IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSwgU1ZHQW5nbGUmIGFuZ2xlKQorICAgIHsK
KyAgICAgICAgaWYgKHZhbHVlID09ICJhdXRvIikKKyAgICAgICAgICAgIHJldHVybiBNYXJrZXJP
cmllbnRBdXRvOworCisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICBhbmds
ZS5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlLCBlYyk7CisgICAgICAgIGlmICghZWMpCisgICAgICAg
ICAgICByZXR1cm4gTWFya2VyT3JpZW50QW5nbGU7CisgICAgICAgIHJldHVybiBNYXJrZXJPcmll
bnRVbmtub3duOworICAgIH0KK307CisKIGNsYXNzIFNWR01hcmtlckVsZW1lbnQgOiBwdWJsaWMg
U1ZHU3R5bGVkRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFu
Z1NwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdGaXRUb1Zp
ZXdCb3ggewogcHVibGljOgotICAgIGVudW0gU1ZHTWFya2VyVW5pdHNUeXBlIHsKLSAgICAgICAg
U1ZHX01BUktFUlVOSVRTX1VOS05PV04gICAgICAgICAgID0gMCwKLSAgICAgICAgU1ZHX01BUktF
UlVOSVRTX1VTRVJTUEFDRU9OVVNFICAgID0gMSwKLSAgICAgICAgU1ZHX01BUktFUlVOSVRTX1NU
Uk9LRVdJRFRIICAgICAgID0gMgorICAgIGVudW0geworICAgICAgICBTVkdfTUFSS0VSVU5JVFNf
VU5LTk9XTiA9IE1hcmtlclVuaXRzVW5rbm93biwKKyAgICAgICAgU1ZHX01BUktFUlVOSVRTX1VT
RVJTUEFDRU9OVVNFID0gTWFya2VyVW5pdHNVc2VyU3BhY2VPblVzZSwKKyAgICAgICAgU1ZHX01B
UktFUlVOSVRTX1NUUk9LRVdJRFRIID0gTWFya2VyVW5pdHNTdHJva2VXaWR0aAogICAgIH07CiAK
LSAgICBlbnVtIFNWR01hcmtlck9yaWVudFR5cGUgewotICAgICAgICBTVkdfTUFSS0VSX09SSUVO
VF9VTktOT1dOICAgID0gMCwKLSAgICAgICAgU1ZHX01BUktFUl9PUklFTlRfQVVUTyAgICAgICA9
IDEsCi0gICAgICAgIFNWR19NQVJLRVJfT1JJRU5UX0FOR0xFICAgICAgPSAyCisgICAgZW51bSB7
CisgICAgICAgIFNWR19NQVJLRVJfT1JJRU5UX1VOS05PV04gPSBNYXJrZXJPcmllbnRVbmtub3du
LAorICAgICAgICBTVkdfTUFSS0VSX09SSUVOVF9BVVRPID0gTWFya2VyT3JpZW50QXV0bywKKyAg
ICAgICAgU1ZHX01BUktFUl9PUklFTlRfQU5HTEUgPSBNYXJrZXJPcmllbnRBbmdsZQogICAgIH07
CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdNYXJrZXJFbGVtZW50PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CkBAIC01OSw2ICsxMTksOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRPcmllbnRUb0F1dG8oKTsKICAgICB2b2lkIHNldE9yaWVudFRvQW5nbGUoY29u
c3QgU1ZHQW5nbGUmKTsKIAorICAgIHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIG9yaWVu
dFR5cGVQcm9wZXJ0eUluZm8oKTsKKwogcHJpdmF0ZToKICAgICBTVkdNYXJrZXJFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCkBAIC02Nyw5ICsxMjksNiBAQCBwcml2
YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7
Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
LSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFu
Z2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJD
aGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIFJlbmRl
ck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwpAQCAt
NzcsODIgKzEzNiwzNCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxh
dGl2ZUxlbmd0aHMoKSBjb25zdDsKIAorICAgIHZvaWQgc3luY2hyb25pemVPcmllbnRUeXBlKCk7
CisKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBvcmllbnRUeXBlSWRlbnRpZmllcigp
OwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG9yaWVudEFuZ2xlSWRlbnRpZmllcigp
OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9B
TklNQVRFRF9MRU5HVEgoUmVmWCwgcmVmWCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChS
ZWZZLCByZWZZKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKE1hcmtlcldpZHRoLCBtYXJr
ZXJXaWR0aCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChNYXJrZXJIZWlnaHQsIG1hcmtl
ckhlaWdodCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKE1hcmtlclVuaXRzLCBt
YXJrZXJVbml0cywgU1ZHTWFya2VyVW5pdHNUeXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURfQU5H
TEUoT3JpZW50QW5nbGUsIG9yaWVudEFuZ2xlKQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotCi0gICAgLy8gU1ZHRml0VG9W
aWV3Qm94Ci0gICAgREVDTEFSRV9BTklNQVRFRF9SRUNUKFZpZXdCb3gsIHZpZXdCb3gpCi0gICAg
REVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0UmF0aW8s
IHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR01hcmtlckVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFJl
ZlgsIHJlZlgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFJlZlksIHJlZlkpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKE1hcmtlcldpZHRoLCBtYXJrZXJXaWR0aCkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoTWFya2VySGVpZ2h0LCBtYXJrZXJIZWln
aHQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oTWFya2VyVW5pdHMsIG1h
cmtlclVuaXRzLCBTVkdNYXJrZXJVbml0c1R5cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
QU5HTEUoT3JpZW50QW5nbGUsIG9yaWVudEFuZ2xlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9SRUNUKFZpZXdCb3gsIHZpZXdCb3gpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVj
dFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRJRVMKIAogcHVibGljOgotICAgIC8vIEN1c3RvbSBhbmltYXRlZCBwcm9wZXJ0eTogb3Jp
ZW50VHlwZQotICAgIFNWR01hcmtlck9yaWVudFR5cGUmIG9yaWVudFR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX29yaWVudFR5cGUudmFsdWU7IH0KLSAgICBTVkdNYXJrZXJPcmllbnRUeXBlJiBvcmll
bnRUeXBlQmFzZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRUeXBlLnZhbHVlOyB9Ci0g
ICAgdm9pZCBzZXRPcmllbnRUeXBlQmFzZVZhbHVlKGNvbnN0IFNWR01hcmtlck9yaWVudFR5cGUm
IHR5cGUpIHsgbV9vcmllbnRUeXBlLnZhbHVlID0gdHlwZTsgfQotICAgIFBhc3NSZWZQdHI8U1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZjxTVkdNYXJrZXJPcmllbnRUeXBlPiA+
IG9yaWVudFR5cGVBbmltYXRlZCgpOworICAgIC8vIEN1c3RvbSAnb3JpZW50VHlwZScgcHJvcGVy
dHkuCisgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVPcmllbnRUeXBlKHZvaWQqIGNvbnRleHRF
bGVtZW50KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29r
dXBPckNyZWF0ZU9yaWVudFR5cGVXcmFwcGVyKHZvaWQqIGNvbnRleHRFbGVtZW50KTsKKyAgICBN
YXJrZXJPcmllbnRUeXBlJiBvcmllbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRUeXBl
LnZhbHVlOyB9CisgICAgTWFya2VyT3JpZW50VHlwZSYgb3JpZW50VHlwZUJhc2VWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZW50VHlwZS52YWx1ZTsgfQorICAgIHZvaWQgc2V0T3JpZW50VHlw
ZUJhc2VWYWx1ZShjb25zdCBNYXJrZXJPcmllbnRUeXBlJiB0eXBlKSB7IG1fb3JpZW50VHlwZS52
YWx1ZSA9IHR5cGU7IH0KKyAgICBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9w
ZXJ0eVRlYXJPZmY8TWFya2VyT3JpZW50VHlwZT4gPiBvcmllbnRUeXBlQW5pbWF0ZWQoKTsKIAog
cHJpdmF0ZToKLSAgICB2b2lkIHN5bmNocm9uaXplT3JpZW50VHlwZSgpOwotICAgIG11dGFibGUg
U1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5PFNWR01hcmtlck9yaWVudFR5cGU+IG1f
b3JpZW50VHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxT
VkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJVbml0c1R5cGU+IHsKLSAgICBzdGF0aWMgU1ZHTWFy
a2VyRWxlbWVudDo6U1ZHTWFya2VyVW5pdHNUeXBlIGhpZ2hlc3RFbnVtVmFsdWUoKSB7IHJldHVy
biBTVkdNYXJrZXJFbGVtZW50OjpTVkdfTUFSS0VSVU5JVFNfU1RST0tFV0lEVEg7IH0KLQotICAg
IHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoU1ZHTWFya2VyRWxlbWVudDo6U1ZHTWFya2VyVW5pdHNU
eXBlIHR5cGUpCi0gICAgewotICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBT
VkdNYXJrZXJFbGVtZW50OjpTVkdfTUFSS0VSVU5JVFNfVU5LTk9XTjoKLSAgICAgICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwotICAgICAgICBjYXNlIFNWR01hcmtlckVsZW1lbnQ6OlNWR19N
QVJLRVJVTklUU19VU0VSU1BBQ0VPTlVTRToKLSAgICAgICAgICAgIHJldHVybiAidXNlclNwYWNl
T25Vc2UiOwotICAgICAgICBjYXNlIFNWR01hcmtlckVsZW1lbnQ6OlNWR19NQVJLRVJVTklUU19T
VFJPS0VXSURUSDoKLSAgICAgICAgICAgIHJldHVybiAic3Ryb2tlV2lkdGgiOwotICAgICAgICB9
Ci0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwotICAgIH0KLQotICAgIHN0YXRpYyBTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJV
bml0c1R5cGUgZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQotICAgIHsKLSAgICAgICAg
aWYgKHZhbHVlID09ICJ1c2VyU3BhY2VPblVzZSIpCi0gICAgICAgICAgICByZXR1cm4gU1ZHTWFy
a2VyRWxlbWVudDo6U1ZHX01BUktFUlVOSVRTX1VTRVJTUEFDRU9OVVNFOwotICAgICAgICBpZiAo
dmFsdWUgPT0gInN0cm9rZVdpZHRoIikKLSAgICAgICAgICAgIHJldHVybiBTVkdNYXJrZXJFbGVt
ZW50OjpTVkdfTUFSS0VSVU5JVFNfU1RST0tFV0lEVEg7Ci0gICAgICAgIHJldHVybiBTVkdNYXJr
ZXJFbGVtZW50OjpTVkdfTUFSS0VSVU5JVFNfVU5LTk9XTjsKLSAgICB9Ci19OwotCi10ZW1wbGF0
ZTw+Ci1zdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyRWxlbWVudDo6U1ZHTWFya2Vy
T3JpZW50VHlwZT4gewotICAgIHN0YXRpYyBTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJPcmll
bnRUeXBlIGhpZ2hlc3RFbnVtVmFsdWUoKSB7IHJldHVybiBTVkdNYXJrZXJFbGVtZW50OjpTVkdf
TUFSS0VSX09SSUVOVF9BTkdMRTsgfQotCi0gICAgLy8gdG9TdHJpbmcgaXMgbm90IG5lZWRlZCwg
c3luY2hyb25pemVPcmllbnRUeXBlKCkgaGFuZGxlcyB0aGlzIG9uIGl0cyBvd24uCi0KLSAgICBz
dGF0aWMgU1ZHTWFya2VyRWxlbWVudDo6U1ZHTWFya2VyT3JpZW50VHlwZSBmcm9tU3RyaW5nKGNv
bnN0IFN0cmluZyYgdmFsdWUsIFNWR0FuZ2xlJiBhbmdsZSkKLSAgICB7Ci0gICAgICAgIGlmICh2
YWx1ZSA9PSAiYXV0byIpCi0gICAgICAgICAgICByZXR1cm4gU1ZHTWFya2VyRWxlbWVudDo6U1ZH
X01BUktFUl9PUklFTlRfQVVUTzsKLQotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICAgICAgYW5nbGUuc2V0VmFsdWVBc1N0cmluZyh2YWx1ZSwgZWMpOwotICAgICAgICBpZiAoIWVj
KQotICAgICAgICAgICAgcmV0dXJuIFNWR01hcmtlckVsZW1lbnQ6OlNWR19NQVJLRVJfT1JJRU5U
X0FOR0xFOwotICAgICAgICByZXR1cm4gU1ZHTWFya2VyRWxlbWVudDo6U1ZHX01BUktFUl9PUklF
TlRfVU5LTk9XTjsKLSAgICB9CisgICAgbXV0YWJsZSBTVkdTeW5jaHJvbml6YWJsZUFuaW1hdGVk
UHJvcGVydHk8TWFya2VyT3JpZW50VHlwZT4gbV9vcmllbnRUeXBlOwogfTsKIAogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDE0ICszNiwyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3Bl
cnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHTWFza0VsZW1l
bnQsIFNWR05hbWVzOjptYXNrVW5pdHNBdHRyLCBNYXNrVW5pdHMsIG1hc2tVbml0cywgU1ZHVW5p
dFR5cGVzOjpTVkdVbml0VHlwZSkKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdNYXNr
RWxlbWVudCwgU1ZHTmFtZXM6Om1hc2tDb250ZW50VW5pdHNBdHRyLCBNYXNrQ29udGVudFVuaXRz
LCBtYXNrQ29udGVudFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQotREVGSU5FX0FO
SU1BVEVEX0xFTkdUSChTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQotREVG
SU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5
KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6OndpZHRo
QXR0ciwgV2lkdGgsIHdpZHRoKQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXNrRWxlbWVu
dCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhlaWdodCwgaGVpZ2h0KQotREVGSU5FX0FOSU1BVEVE
X0JPT0xFQU4oU1ZHTWFza0VsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1B
VEVEX0VOVU1FUkFUSU9OKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6bWFza1VuaXRzQXR0ciwg
TWFza1VuaXRzLCBtYXNrVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgREVG
SU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6bWFza0Nv
bnRlbnRVbml0c0F0dHIsIE1hc2tDb250ZW50VW5pdHMsIG1hc2tDb250ZW50VW5pdHMsIFNWR1Vu
aXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXNr
RWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5H
VEgoU1ZHTWFza0VsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKKyAgICBERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0aCwg
d2lkdGgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXNrRWxlbWVudCwgU1ZHTmFt
ZXM6OmhlaWdodEF0dHIsIEhlaWdodCwgaGVpZ2h0KQorICAgIERFRklORV9BTklNQVRFRF9CT09M
RUFOKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0
dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQp
CitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdNYXNrRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShtYXNrVW5pdHMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkobWFza0NvbnRlbnRVbml0cykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WSh4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHkpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkod2lkdGgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoaGVpZ2h0KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9Q
QVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRF
RF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdNYXNrRWxlbWVudDo6U1ZHTWFza0VsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZH
U3R5bGVkTG9jYXRhYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTU3LDYgKzcwLDcg
QEAgaW5saW5lIFNWR01hc2tFbGVtZW50OjpTVkdNYXNrRWxlbWVudChjbwogICAgIC8vIFNwZWM6
IElmIHRoZSB4L3kgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMg
aWYgYSB2YWx1ZSBvZiAiLTEwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgLy8gU3BlYzogSWYgdGhl
IHdpZHRoL2hlaWdodCBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBh
cyBpZiBhIHZhbHVlIG9mICIxMjAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICBBU1NFUlQoaGFzVGFn
TmFtZShTVkdOYW1lczo6bWFza1RhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVz
Rm9yU1ZHTWFza0VsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdNYXNrRWxlbWVudD4gU1ZH
TWFza0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCkBAIC0xNTEsODggKzE2NSw2IEBAIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCh0cnVlKTsK
IH0KIAotdm9pZCBTVkdNYXNrRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkg
ewotICAgICAgICBzeW5jaHJvbml6ZU1hc2tVbml0cygpOwotICAgICAgICBzeW5jaHJvbml6ZU1h
c2tDb250ZW50VW5pdHMoKTsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHN5bmNo
cm9uaXplWSgpOwotICAgICAgICBzeW5jaHJvbml6ZVdpZHRoKCk7Ci0gICAgICAgIHN5bmNocm9u
aXplSGVpZ2h0KCk7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCgpOwotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJO
YW1lKTsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRy
TmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0
cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6bWFza1VuaXRzQXR0cikgewotICAgICAgICBzeW5jaHJvbml6
ZU1hc2tVbml0cygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjptYXNrQ29udGVudFVuaXRzQXR0cikgewotICAgICAgICBzeW5jaHJvbml6
ZU1hc2tDb250ZW50VW5pdHMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlB
dHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVXaWR0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hy
b25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAg
ICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdNYXNrRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1
cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdNYXNrRWxlbWVu
dDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6
ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhB
dHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmlt
YXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjptYXNrVW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om1hc2tDb250ZW50VW5pdHNBdHRyLCBBbmltYXRl
ZEVudW1lcmF0aW9uKTsKLX0KLQogdm9pZCBTVkdNYXNrRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hh
bmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxk
cmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNo
aWxkQ291bnREZWx0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkocmV2
aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTAsMjUgKzUwLDI2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBv
cnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lk
IGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmly
dHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBO
b2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENv
dW50RGVsdGEgPSAwKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhh
c1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVj
bGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihNYXNrVW5pdHMsIG1h
c2tVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKLSAgICBERUNMQVJFX0FOSU1BVEVE
X0VOVU1FUkFUSU9OKE1hc2tDb250ZW50VW5pdHMsIG1hc2tDb250ZW50VW5pdHMsIFNWR1VuaXRU
eXBlczo6U1ZHVW5pdFR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVO
R1RIKFdpZHRoLCB3aWR0aCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhl
aWdodCkKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJF
X0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZH
TWFza0VsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oTWFza1Vu
aXRzLCBtYXNrVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfRU5VTUVSQVRJT04oTWFza0NvbnRlbnRVbml0cywgbWFza0NvbnRlbnRVbml0
cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEgoWCwgeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8gU1ZH
VGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBT
VkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hy
b25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVTeXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3Vh
Z2UodGhpcyk7IH0KIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNaXNzaW5n
R2x5cGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWlz
c2luZ0dseXBoRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNyAr
MzYsNiBAQCBQYXNzUmVmUHRyPFNWR01pc3NpbmdHbHlwaEVsZW1lbnQ+IFNWR01pCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTVkdNaXNzaW5nR2x5cGhFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KSk7CiB9CiAKLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdNaXNzaW5nR2x5cGhFbGVt
ZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQot
Ci12b2lkIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCi17Ci0gICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkpOwotfQotCiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoU1ZHX0ZPTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01p
c3NpbmdHbHlwaEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWlzc2luZ0dseXBoRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMy
LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdNaXNzaW5nR2x5cGhFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KICAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIHsgcmV0dXJu
IGZhbHNlOyB9CiB9OwogCkBAIC00Miw1ICszOSwzIEBAIHByaXZhdGU6CiAKICNlbmRpZiAvLyBF
TkFCTEUoU1ZHX0ZPTlRTKQogI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0
NiwzMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRl
ZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR1BhdGhFbGVtZW50LCBTVkdOYW1l
czo6cGF0aExlbmd0aEF0dHIsIFBhdGhMZW5ndGgsIHBhdGhMZW5ndGgpCi1ERUZJTkVfQU5JTUFU
RURfQk9PTEVBTihTVkdQYXRoRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorLy8gRGVmaW5lIGN1c3RvbSBhbmltYXRlZCBwcm9wZXJ0eSAnZCcuCitjb25zdCBT
VkdQcm9wZXJ0eUluZm8qIFNWR1BhdGhFbGVtZW50OjpkUHJvcGVydHlJbmZvKCkKK3sKKyAgICBz
dGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBzX3Byb3BlcnR5SW5mbyA9IDA7CisgICAgaWYg
KCFzX3Byb3BlcnR5SW5mbykgeworICAgICAgICBzX3Byb3BlcnR5SW5mbyA9IG5ldyBTVkdQcm9w
ZXJ0eUluZm8oQW5pbWF0ZWRQYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU1ZHTmFtZXM6OmRBdHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6OmRBdHRyLmxvY2FsTmFtZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNWR1BhdGhFbGVtZW50OjpzeW5j
aHJvbml6ZUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
U1ZHUGF0aEVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIpOworICAgIH0KKyAgICByZXR1
cm4gc19wcm9wZXJ0eUluZm87Cit9CisKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVT
CisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdQYXRoRWxlbWVudCwgU1ZHTmFtZXM6OnBh
dGhMZW5ndGhBdHRyLCBQYXRoTGVuZ3RoLCBwYXRoTGVuZ3RoKQorICAgIERFRklORV9BTklNQVRF
RF9CT09MRUFOKFNWR1BhdGhFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdQYXRoRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWShkKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZ
KHBhdGhMZW5ndGgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9QQVJFTlRf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9Q
RVJUSUVTCiAKIGlubGluZSBTVkdQYXRoRWxlbWVudDo6U1ZHUGF0aEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC01Niw2ICs3OSw3IEBA
IGlubGluZSBTVkdQYXRoRWxlbWVudDo6U1ZHUGF0aEVsZW1lbnQoY28KICAgICAsIG1fcGF0aFNl
Z0xpc3QoUGF0aFNlZ1VuYWx0ZXJlZFJvbGUpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZH
TmFtZXM6OnBhdGhUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1Bh
dGhFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHUGF0aEVsZW1lbnQ+IFNWR1BhdGhFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQpAQCAtMjM4LDcgKzI2Miw3IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQKICAgICBSZW5kZXJTVkdQYXRoKiByZW5kZXJlciA9IHN0YXRpY19jYXN0PFJlbmRl
clNWR1BhdGgqPih0aGlzLT5yZW5kZXJlcigpKTsKIAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6ZEF0dHIpIHsKLSAgICAgICAgaWYgKG1fYW5pbWF0YWJsZVBhdGhTZWdMaXN0KSB7Cisg
ICAgICAgIGlmIChTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBXcmFwcGVyPFNWR0FuaW1hdGVk
UGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+KHRoaXMsIGRQcm9wZXJ0eUluZm8oKSkpIHsKICAg
ICAgICAgICAgIFNWR1BhdGhTZWdMaXN0IG5ld0xpc3QoUGF0aFNlZ1VuYWx0ZXJlZFJvbGUpOwog
ICAgICAgICAgICAgU1ZHUGF0aFBhcnNlckZhY3RvcnkqIGZhY3RvcnkgPSBTVkdQYXRoUGFyc2Vy
RmFjdG9yeTo6c2VsZigpOwogICAgICAgICAgICAgZmFjdG9yeS0+YnVpbGRTVkdQYXRoU2VnTGlz
dEZyb21CeXRlU3RyZWFtKG1fcGF0aEJ5dGVTdHJlYW0uZ2V0KCksIHRoaXMsIG5ld0xpc3QsIFVu
YWx0ZXJlZFBhcnNpbmcpOwpAQCAtMjUzLDgwICsyNzcsMzIgQEAgdm9pZCBTVkdQYXRoRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0Zv
ckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyKTsKIH0KIAotdm9p
ZCBTVkdQYXRoRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKK1Bhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gU1ZHUGF0aEVsZW1l
bnQ6Omxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIodm9pZCogY29udGV4dEVsZW1lbnQpCiB7Ci0gICAg
aWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVEKCk7Ci0g
ICAgICAgIHN5bmNocm9uaXplUGF0aExlbmd0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJv
cGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAg
ICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6ZEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVEKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplUGF0aExlbmd0aCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIEFTU0VSVChjb250ZXh0RWxl
bWVudCk7CisgICAgU1ZHUGF0aEVsZW1lbnQqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR1Bh
dGhFbGVtZW50Kj4oY29udGV4dEVsZW1lbnQpOwogCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3du
QXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9w
ZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBTVkdQ
YXRoUGFyc2VyRmFjdG9yeSogZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7
CisgICAgZmFjdG9yeS0+YnVpbGRTVkdQYXRoU2VnTGlzdEZyb21CeXRlU3RyZWFtKG93bmVyVHlw
ZS0+bV9wYXRoQnl0ZVN0cmVhbS5nZXQoKSwgb3duZXJUeXBlLCBvd25lclR5cGUtPm1fcGF0aFNl
Z0xpc3QudmFsdWUsIFVuYWx0ZXJlZFBhcnNpbmcpOwogCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBl
cjxTVkdQYXRoRWxlbWVudCwgU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZiwg
U1ZHUGF0aFNlZ0xpc3QsIHRydWU+CisgICAgICAgICAgIChvd25lclR5cGUsIGRQcm9wZXJ0eUlu
Zm8oKSwgb3duZXJUeXBlLT5tX3BhdGhTZWdMaXN0LnZhbHVlKTsKIH0KIAotdm9pZCBTVkdQYXRo
RWxlbWVudDo6c3luY2hyb25pemVEKCkKK3ZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXpl
RCh2b2lkKiBjb250ZXh0RWxlbWVudCkKIHsKLSAgICBpZiAoIW1fcGF0aFNlZ0xpc3Quc2hvdWxk
U3luY2hyb25pemUpCisgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICBTVkdQYXRoRWxl
bWVudCogb3duZXJUeXBlID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aEVsZW1lbnQqPihjb250ZXh0RWxl
bWVudCk7CisgICAgaWYgKCFvd25lclR5cGUtPm1fcGF0aFNlZ0xpc3Quc2hvdWxkU3luY2hyb25p
emUpCiAgICAgICAgIHJldHVybjsKLQotICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6
ZXI8dHJ1ZT46OnN5bmNocm9uaXplKHRoaXMsIFNWR05hbWVzOjpkQXR0ciwgbV9wYXRoU2VnTGlz
dC52YWx1ZS52YWx1ZUFzU3RyaW5nKCkpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgU1ZHUGF0aEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHUGF0aEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
LQotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZEF0dHIsIEFuaW1hdGVkUGF0aCk7
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwYXRoTGVuZ3Ro
QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6
ZXI8dHJ1ZT46OnN5bmNocm9uaXplKG93bmVyVHlwZSwgZFByb3BlcnR5SW5mbygpLT5hdHRyaWJ1
dGVOYW1lLCBvd25lclR5cGUtPm1fcGF0aFNlZ0xpc3QudmFsdWUudmFsdWVBc1N0cmluZygpKTsK
IH0KIAogU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYqIFNWR1BhdGhFbGVtZW50OjpwYXRo
U2VnTGlzdCgpCiB7Ci0gICAgaWYgKCFtX2FuaW1hdGFibGVQYXRoU2VnTGlzdCkgewotICAgICAg
ICBtX3BhdGhTZWdMaXN0LnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKLQotICAgICAgICBTVkdQ
YXRoUGFyc2VyRmFjdG9yeSogZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7
Ci0gICAgICAgIGZhY3RvcnktPmJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbShtX3Bh
dGhCeXRlU3RyZWFtLmdldCgpLCB0aGlzLCBtX3BhdGhTZWdMaXN0LnZhbHVlLCBVbmFsdGVyZWRQ
YXJzaW5nKTsKLQotICAgICAgICBtX2FuaW1hdGFibGVQYXRoU2VnTGlzdCA9IFNWR0FuaW1hdGVk
UHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJv
cGVydHlUZWFyT2ZmLCBTVkdQYXRoU2VnTGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICh0aGlzLCBTVkdOYW1lczo6ZEF0dHIsIFNWR05hbWVzOjpkQXR0ci5sb2NhbE5hbWUo
KSwgbV9wYXRoU2VnTGlzdC52YWx1ZSk7Ci0gICAgfQotCisgICAgbV9wYXRoU2VnTGlzdC5zaG91
bGRTeW5jaHJvbml6ZSA9IHRydWU7CisgICAgaWYgKCFtX2FuaW1hdGFibGVQYXRoU2VnTGlzdCkK
KyAgICAgICAgbV9hbmltYXRhYmxlUGF0aFNlZ0xpc3QgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PFNW
R0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+KGxvb2t1cE9yQ3JlYXRlRFdyYXBw
ZXIodGhpcykpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTGlzdFByb3BlcnR5
VGVhck9mZio+KG1fYW5pbWF0YWJsZVBhdGhTZWdMaXN0LT5iYXNlVmFsKFBhdGhTZWdVbmFsdGVy
ZWRSb2xlKSk7CiB9CiAKQEAgLTMzOCwxNiArMzE0LDkgQEAgU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0
eVRlYXJPZmYqIFNWR1BhdGhFbAogCiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZiogU1ZH
UGF0aEVsZW1lbnQ6OmFuaW1hdGVkUGF0aFNlZ0xpc3QoKQogewotICAgIGlmICghbV9hbmltYXRh
YmxlUGF0aFNlZ0xpc3QpIHsKLSAgICAgICAgbV9wYXRoU2VnTGlzdC5zaG91bGRTeW5jaHJvbml6
ZSA9IHRydWU7Ci0KLSAgICAgICAgU1ZHUGF0aFBhcnNlckZhY3RvcnkqIGZhY3RvcnkgPSBTVkdQ
YXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpOwotICAgICAgICBmYWN0b3J5LT5idWlsZFNWR1BhdGhT
ZWdMaXN0RnJvbUJ5dGVTdHJlYW0obV9wYXRoQnl0ZVN0cmVhbS5nZXQoKSwgdGhpcywgbV9wYXRo
U2VnTGlzdC52YWx1ZSwgVW5hbHRlcmVkUGFyc2luZyk7Ci0KLSAgICAgICAgbV9hbmltYXRhYmxl
UGF0aFNlZ0xpc3QgPSBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBPckNyZWF0ZVdyYXBwZXI8
U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZiwgU1ZHUGF0aFNlZ0xpc3Q+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcywgU1ZHTmFtZXM6OmRBdHRyLCBT
VkdOYW1lczo6ZEF0dHIubG9jYWxOYW1lKCksIG1fcGF0aFNlZ0xpc3QudmFsdWUpOwotICAgIH0K
LQorICAgIG1fcGF0aFNlZ0xpc3Quc2hvdWxkU3luY2hyb25pemUgPSB0cnVlOworICAgIGlmICgh
bV9hbmltYXRhYmxlUGF0aFNlZ0xpc3QpCisgICAgICAgIG1fYW5pbWF0YWJsZVBhdGhTZWdMaXN0
ID0gc3RhdGljX3BvaW50ZXJfY2FzdDxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFy
T2ZmPihsb29rdXBPckNyZWF0ZURXcmFwcGVyKHRoaXMpKTsKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYqPihtX2FuaW1hdGFibGVQYXRoU2VnTGlz
dC0+YW5pbVZhbChQYXRoU2VnVW5hbHRlcmVkUm9sZSkpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsMTEgKzkxLDEyIEBAIHB1
YmxpYzoKICAgICBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZiogYW5pbWF0ZWROb3JtYWxp
emVkUGF0aFNlZ0xpc3QoKTsKIAogICAgIFNWR1BhdGhCeXRlU3RyZWFtKiBwYXRoQnl0ZVN0cmVh
bSgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aEJ5dGVTdHJlYW0uZ2V0KCk7IH0KLSAgICBTVkdBbmlt
YXRlZFByb3BlcnR5KiBhbmltYXRhYmxlUGF0aFNlZ0xpc3QoKSBjb25zdCB7IHJldHVybiBtX2Fu
aW1hdGFibGVQYXRoU2VnTGlzdC5nZXQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRvUGF0aERh
dGEoUGF0aCYpIGNvbnN0OwogICAgIHZvaWQgcGF0aFNlZ0xpc3RDaGFuZ2VkKFNWR1BhdGhTZWdS
b2xlKTsKIAorICAgIHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIGRQcm9wZXJ0eUluZm8o
KTsKKwogcHJpdmF0ZToKICAgICBTVkdQYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKIApAQCAtMTA0LDIxICsxMDUsMjQgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wg
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1
YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwog
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c01hcmtlcnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FO
SU1BVEVEX05VTUJFUihQYXRoTGVuZ3RoLCBwYXRoTGVuZ3RoKQotCi0gICAgLy8gU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIC8vIEN1
c3RvbSAnZCcgcHJvcGVydHkKKyAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZUQodm9pZCogY29u
dGV4dEVsZW1lbnQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+
IGxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIodm9pZCogY29udGV4dEVsZW1lbnQpOworCisgICAgQkVH
SU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1BhdGhFbGVtZW50KQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX05VTUJFUihQYXRoTGVuZ3RoLCBwYXRoTGVuZ3RoKQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVT
CisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVk
RmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNW
R1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25p
emVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogCi0gICAgdm9pZCBzeW5jaHJvbml6ZUQoKTsKLQot
cHJvdGVjdGVkOgorcHJpdmF0ZToKICAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IG1fcGF0
aEJ5dGVTdHJlYW07CiAgICAgbXV0YWJsZSBTVkdTeW5jaHJvbml6YWJsZUFuaW1hdGVkUHJvcGVy
dHk8U1ZHUGF0aFNlZ0xpc3Q+IG1fcGF0aFNlZ0xpc3Q7CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVk
UGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+IG1fYW5pbWF0YWJsZVBhdGhTZWdMaXN0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdXaXRoQ29udGV4dC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnV2l0aENvbnRleHQuaAkocmV2aXNpb24g
OTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ1dpdGhDb250ZXh0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFBhdGhT
ZWdVbmRlZmluZWRSb2xlOgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGNhc2UgUGF0
aFNlZ1VuYWx0ZXJlZFJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gbV9lbGVtZW50LT5hbmltYXRh
YmxlUGF0aFNlZ0xpc3QoKTsKKyAgICAgICAgICAgIHJldHVybiBTVkdBbmltYXRlZFByb3BlcnR5
Ojpsb29rdXBXcmFwcGVyPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+KG1f
ZWxlbWVudC5nZXQoKSwgU1ZHUGF0aEVsZW1lbnQ6OmRQcm9wZXJ0eUluZm8oKSk7CiAgICAgICAg
IGNhc2UgUGF0aFNlZ05vcm1hbGl6ZWRSb2xlOgogICAgICAgICAgICAgLy8gRklYTUU6IGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQxMiAtIEltcGxlbWVudCBub3Jt
YWxpemVkIHBhdGggc2VnbWVudCBsaXN0cyEKICAgICAgICAgICAgIHJldHVybiAwOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDE4ICs0MiwzNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1h
dGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1BhdHRl
cm5FbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RI
KFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCi1ERUZJTkVfQU5JTUFU
RURfTEVOR1RIKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0aCwg
d2lkdGgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1l
czo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQpCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJ
T04oU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRyLCBQYXR0ZXJu
VW5pdHMsIHBhdHRlcm5Vbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKLURFRklORV9B
TklNQVRFRF9FTlVNRVJBVElPTihTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnBhdHRlcm5D
b250ZW50VW5pdHNBdHRyLCBQYXR0ZXJuQ29udGVudFVuaXRzLCBwYXR0ZXJuQ29udGVudFVuaXRz
LCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQotREVGSU5FX0FOSU1BVEVEX1RSQU5TRk9STV9M
SVNUKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIsIFBh
dHRlcm5UcmFuc2Zvcm0sIHBhdHRlcm5UcmFuc2Zvcm0pIAotREVGSU5FX0FOSU1BVEVEX1NUUklO
RyhTVkdQYXR0ZXJuRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCi1E
RUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQotREVGSU5FX0FOSU1BVEVEX1JFQ1QoU1ZHUGF0dGVybkVs
ZW1lbnQsIFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgVmlld0JveCwgdmlld0JveCkKLURFRklORV9B
TklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6
cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNw
ZWN0UmF0aW8pIAorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVf
QU5JTUFURURfTEVOR1RIKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgp
CisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6
OnlBdHRyLCBZLCB5KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUGF0dGVybkVsZW1l
bnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKKyAgICBERUZJTkVfQU5JTUFU
RURfTEVOR1RIKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0
LCBoZWlnaHQpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR1BhdHRlcm5FbGVt
ZW50LCBTVkdOYW1lczo6cGF0dGVyblVuaXRzQXR0ciwgUGF0dGVyblVuaXRzLCBwYXR0ZXJuVW5p
dHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1F
UkFUSU9OKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6cGF0dGVybkNvbnRlbnRVbml0c0F0
dHIsIFBhdHRlcm5Db250ZW50VW5pdHMsIHBhdHRlcm5Db250ZW50VW5pdHMsIFNWR1VuaXRUeXBl
czo6U1ZHVW5pdFR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFNWR1Bh
dHRlcm5FbGVtZW50LCBTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIsIFBhdHRlcm5UcmFu
c2Zvcm0sIHBhdHRlcm5UcmFuc2Zvcm0pIAorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZH
UGF0dGVybkVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQorICAgIERF
RklORV9BTklNQVRFRF9CT09MRUFOKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgREVGSU5FX0FOSU1BVEVEX1JFQ1QoU1ZHUGF0dGVy
bkVsZW1lbnQsIFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgVmlld0JveCwgdmlld0JveCkKKyAgICBE
RUZJTkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZH
TmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVz
ZXJ2ZUFzcGVjdFJhdGlvKSAKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJ
Tl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1BhdHRlcm5FbGVtZW50KQorICAgIFJF
R0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh3
aWR0aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShoZWlnaHQpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocGF0dGVyblVuaXRzKQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHBhdHRlcm5Db250ZW50VW5pdHMpCisgICAgUkVH
SVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocGF0dGVyblRyYW5zZm9ybSkKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShocmVmKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkodmlld0JveCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShwcmVzZXJ2ZUFzcGVjdFJhdGlvKSAKKyAgICBSRUdJU1RFUl9QQVJFTlRf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVO
VF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BS
T1BFUlRJRVMKIAogaW5saW5lIFNWR1BhdHRlcm5FbGVtZW50OjpTVkdQYXR0ZXJuRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBT
VkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQpAQCAtNjUsNiArODIsNyBAQCBpbmxp
bmUgU1ZHUGF0dGVybkVsZW1lbnQ6OlNWR1BhdHRlcm5FbGVtCiAgICAgLCBtX3BhdHRlcm5Db250
ZW50VW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKQogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpwYXR0ZXJuVGFnKSk7CisgICAgcmVnaXN0
ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdQYXR0ZXJuRWxlbWVudCgpOwogfQogCiBQYXNzUmVm
UHRyPFNWR1BhdHRlcm5FbGVtZW50PiBTVkdQYXR0ZXJuRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTE4MCwxMTAgKzE5
OCw2IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW4KICAgICAgICAg
b2JqZWN0LT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KIAotdm9pZCBTVkdQYXR0ZXJuRWxlbWVu
dDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsg
ICAgCi0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25p
emVQYXR0ZXJuVW5pdHMoKTsKLSAgICAgICAgc3luY2hyb25pemVQYXR0ZXJuQ29udGVudFVuaXRz
KCk7Ci0gICAgICAgIHN5bmNocm9uaXplUGF0dGVyblRyYW5zZm9ybSgpOwotICAgICAgICBzeW5j
aHJvbml6ZVgoKTsKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
V2lkdGgoKTsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAgICAgc3luY2hyb25p
emVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigp
OwotICAgICAgICBTVkdGaXRUb1ZpZXdCb3g6OnN5bmNocm9uaXplUHJvcGVydGllcyhhdHRyTmFt
ZSk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5h
bWUpOwotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJO
YW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXpl
UHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplUGF0dGVyblVuaXRzKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50VW5pdHNBdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplUGF0dGVybkNvbnRlbnRVbml0cygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwYXR0ZXJuVHJhbnNmb3JtQXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZVBhdHRlcm5UcmFuc2Zvcm0oKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpIHsKLSAgICAgICAg
c3luY2hyb25pemVYKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0
dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaXRUb1ZpZXdCb3g6OnN5bmNocm9uaXpl
UHJvcGVydGllcyhhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
U1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBz
eW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdU
ZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGVzdHM6OnN5
bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIFNWR1BhdHRlcm5FbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
Ci17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
c19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3Ro
KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBB
bmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnBhdHRlcm5Vbml0c0F0dHIs
IEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6cGF0dGVybkNvbnRlbnRVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24p
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cGF0dGVyblRy
YW5zZm9ybUF0dHIsIEFuaW1hdGVkVHJhbnNmb3JtTGlzdCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp2aWV3Qm94QXR0ciwg
QW5pbWF0ZWRSZWN0KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8p
OwotfQotCiB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFu
Z2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBj
aGlsZENvdW50RGVsdGEpCiB7CiAgICAgU1ZHU3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERl
bHRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCShyZXZpc2lv
biA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MCwzMyArNjAsMzAgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9y
dGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5j
aHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5v
ZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291
bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFz
UmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNs
YXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQotICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKFksIHkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgs
IHdpZHRoKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQotICAg
IERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oUGF0dGVyblVuaXRzLCBwYXR0ZXJuVW5pdHMs
IFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJB
VElPTihQYXR0ZXJuQ29udGVudFVuaXRzLCBwYXR0ZXJuQ29udGVudFVuaXRzLCBTVkdVbml0VHlw
ZXM6OlNWR1VuaXRUeXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURfVFJBTlNGT1JNX0xJU1QoUGF0
dGVyblRyYW5zZm9ybSwgcGF0dGVyblRyYW5zZm9ybSkKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5j
ZQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCi0KLSAgICAvLyBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi0KLSAg
ICAvLyBTVkdQYXR0ZXJuRWxlbWVudAotICAgIERFQ0xBUkVfQU5JTUFURURfUkVDVChWaWV3Qm94
LCB2aWV3Qm94KQotICAgIERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVz
ZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSAKKyAgICBCRUdJTl9ERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUGF0dGVybkVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKFgsIHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFks
IHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfRU5VTUVSQVRJT04oUGF0dGVyblVuaXRzLCBwYXR0ZXJuVW5pdHMsIFNWR1Vu
aXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJ
T04oUGF0dGVybkNvbnRlbnRVbml0cywgcGF0dGVybkNvbnRlbnRVbml0cywgU1ZHVW5pdFR5cGVz
OjpTVkdVbml0VHlwZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChQ
YXR0ZXJuVHJhbnNmb3JtLCBwYXR0ZXJuVHJhbnNmb3JtKQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4o
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9SRUNUKFZpZXdCb3gsIHZpZXdCb3gpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBw
cmVzZXJ2ZUFzcGVjdFJhdGlvKSAKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVT
CisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVk
RmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNW
R1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25p
emVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDEyICszNSwzNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVk
IHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdQb2x5RWxl
bWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorLy8gRGVmaW5lIGN1
c3RvbSBhbmltYXRlZCBwcm9wZXJ0eSAncG9pbnRzJy4KK2NvbnN0IFNWR1Byb3BlcnR5SW5mbyog
U1ZHUG9seUVsZW1lbnQ6OnBvaW50c1Byb3BlcnR5SW5mbygpCit7CisgICAgc3RhdGljIGNvbnN0
IFNWR1Byb3BlcnR5SW5mbyogc19wcm9wZXJ0eUluZm8gPSAwOworICAgIGlmICghc19wcm9wZXJ0
eUluZm8pIHsKKyAgICAgICAgc19wcm9wZXJ0eUluZm8gPSBuZXcgU1ZHUHJvcGVydHlJbmZvKEFu
aW1hdGVkUG9pbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU1ZHTmFtZXM6OnBvaW50c0F0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTVkdOYW1lczo6cG9pbnRzQXR0ci5sb2NhbE5hbWUoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTVkdQb2x5RWxlbWVudDo6c3lu
Y2hyb25pemVQb2ludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmU1ZHUG9seUVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlUG9pbnRzV3JhcHBlcik7CisgICAg
fQorICAgIHJldHVybiBzX3Byb3BlcnR5SW5mbzsKK30KKworQkVHSU5fREVGSU5FX0FOSU1BVEVE
X1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdQb2x5RWxlbWVudCwg
U1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorRU5EX0RFRklORV9BTklNQVRF
RF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUG9s
eUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocG9pbnRzKQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBTVkdQ
b2x5RWxlbWVudDo6U1ZHUG9seUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpCiB7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JT
VkdQb2x5RWxlbWVudCgpOyAgICAKIH0KIAogYm9vbCBTVkdQb2x5RWxlbWVudDo6aXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBAIC02OCw4ICs5MSw4
IEBAIHZvaWQgU1ZHUG9seUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXQKICAgICAgICAgaWYg
KCFwb2ludHNMaXN0RnJvbVNWR0RhdGEobmV3TGlzdCwgdmFsdWUpKQogICAgICAgICAgICAgZG9j
dW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5yZXBvcnRFcnJvcigiUHJvYmxlbSBwYXJz
aW5nIHBvaW50cz1cIiIgKyB2YWx1ZSArICJcIiIpOwogCi0gICAgICAgIGlmIChTVkdBbmltYXRl
ZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiogbGlzdCA9IG1fYW5pbWF0YWJsZVBv
aW50c0xpc3QuZ2V0KCkpCi0gICAgICAgICAgICBsaXN0LT5kZXRhY2hMaXN0V3JhcHBlcnMobmV3
TGlzdC5zaXplKCkpOworICAgICAgICBpZiAoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSogd3JhcHBlciA9
IFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cFdyYXBwZXI8U1ZHQW5pbWF0ZWRMaXN0UHJvcGVy
dHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4gPih0aGlzLCBwb2ludHNQcm9wZXJ0eUluZm8oKSkpCisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZH
UG9pbnRMaXN0Pio+KHdyYXBwZXIpLT5kZXRhY2hMaXN0V3JhcHBlcnMobmV3TGlzdC5zaXplKCkp
OwogCiAgICAgICAgIG1fcG9pbnRzLnZhbHVlID0gbmV3TGlzdDsKICAgICAgICAgcmV0dXJuOwpA
QCAtMTE1LDY3ICsxMzgsMzMgQEAgdm9pZCBTVkdQb2x5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR1BvbHlFbGVtZW50
OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQordm9p
ZCBTVkdQb2x5RWxlbWVudDo6c3luY2hyb25pemVQb2ludHModm9pZCogY29udGV4dEVsZW1lbnQp
CiB7Ci0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVy
dHkoYXR0ck5hbWUpOwotCi0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAg
ICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHN5bmNo
cm9uaXplUG9pbnRzKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXMo
dGhpcywgYXR0ck5hbWUpOworICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7CisgICAgU1ZHUG9s
eUVsZW1lbnQqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR1BvbHlFbGVtZW50Kj4oY29udGV4
dEVsZW1lbnQpOworICAgIGlmICghb3duZXJUeXBlLT5tX3BvaW50cy5zaG91bGRTeW5jaHJvbml6
ZSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKLSAgICAgICAgc3luY2hyb25p
emVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnBvaW50c0F0dHIpCi0gICAgICAgIHN5bmNocm9uaXplUG9pbnRzKCk7Ci0gICAg
ZWxzZSBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAgICBT
VkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKKyAgICBTVkdB
bmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPHRydWU+OjpzeW5jaHJvbml6ZShvd25lclR5cGUs
IHBvaW50c1Byb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lLCBvd25lclR5cGUtPm1fcG9pbnRz
LnZhbHVlLnZhbHVlQXNTdHJpbmcoKSk7CiB9CiAKLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBTVkdQb2x5RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQorUGFzc1JlZlB0
cjxTVkdBbmltYXRlZFByb3BlcnR5PiBTVkdQb2x5RWxlbWVudDo6bG9va3VwT3JDcmVhdGVQb2lu
dHNXcmFwcGVyKHZvaWQqIGNvbnRleHRFbGVtZW50KQogewotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQot
dm9pZCBTVkdQb2x5RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsK
LSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjpwb2ludHNBdHRyLCBBbmltYXRlZFBvaW50cyk7Ci19Ci0KLXZv
aWQgU1ZHUG9seUVsZW1lbnQ6OnN5bmNocm9uaXplUG9pbnRzKCkKLXsKLSAgICBpZiAoIW1fcG9p
bnRzLnNob3VsZFN5bmNocm9uaXplKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTVkdBbmltYXRl
ZFByb3BlcnR5U3luY2hyb25pemVyPHRydWU+OjpzeW5jaHJvbml6ZSh0aGlzLCBTVkdOYW1lczo6
cG9pbnRzQXR0ciwgbV9wb2ludHMudmFsdWUudmFsdWVBc1N0cmluZygpKTsKKyAgICBBU1NFUlQo
Y29udGV4dEVsZW1lbnQpOworICAgIFNWR1BvbHlFbGVtZW50KiBvd25lclR5cGUgPSBzdGF0aWNf
Y2FzdDxTVkdQb2x5RWxlbWVudCo+KGNvbnRleHRFbGVtZW50KTsKKyAgICByZXR1cm4gU1ZHQW5p
bWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR1BvbHlFbGVtZW50LCBTVkdB
bmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiwgU1ZHUG9pbnRMaXN0LCB0
cnVlPgorICAgICAgICAgICAob3duZXJUeXBlLCBwb2ludHNQcm9wZXJ0eUluZm8oKSwgb3duZXJU
eXBlLT5tX3BvaW50cy52YWx1ZSk7CiB9CiAKIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9p
bnRMaXN0PiogU1ZHUG9seUVsZW1lbnQ6OnBvaW50cygpCiB7Ci0gICAgaWYgKCFtX2FuaW1hdGFi
bGVQb2ludHNMaXN0KSB7Ci0gICAgICAgIG1fcG9pbnRzLnNob3VsZFN5bmNocm9uaXplID0gdHJ1
ZTsKLSAgICAgICAgbV9hbmltYXRhYmxlUG9pbnRzTGlzdCA9IFNWR0FuaW1hdGVkUHJvcGVydHk6
Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZH
UG9pbnRMaXN0PiAsIFNWR1BvaW50TGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICh0aGlzLCBTVkdOYW1lczo6cG9pbnRzQXR0ciwgU1ZHTmFtZXM6OnBvaW50c0F0dHIubG9j
YWxOYW1lKCksIG1fcG9pbnRzLnZhbHVlKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8U1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3Q+Kj4obV9hbmltYXRhYmxlUG9p
bnRzTGlzdC0+YmFzZVZhbCgpKTsKKyAgICBtX3BvaW50cy5zaG91bGRTeW5jaHJvbml6ZSA9IHRy
dWU7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9p
bnRMaXN0Pio+KHN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFy
T2ZmPFNWR1BvaW50TGlzdD4gPihsb29rdXBPckNyZWF0ZVBvaW50c1dyYXBwZXIodGhpcykpLT5i
YXNlVmFsKCkpOwogfQogCiBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4qIFNW
R1BvbHlFbGVtZW50OjphbmltYXRlZFBvaW50cygpCiB7Ci0gICAgaWYgKCFtX2FuaW1hdGFibGVQ
b2ludHNMaXN0KSB7Ci0gICAgICAgIG1fcG9pbnRzLnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsK
LSAgICAgICAgbV9hbmltYXRhYmxlUG9pbnRzTGlzdCA9IFNWR0FuaW1hdGVkUHJvcGVydHk6Omxv
b2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9p
bnRMaXN0PiAsIFNWR1BvaW50TGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICh0aGlzLCBTVkdOYW1lczo6cG9pbnRzQXR0ciwgU1ZHTmFtZXM6OnBvaW50c0F0dHIubG9jYWxO
YW1lKCksIG1fcG9pbnRzLnZhbHVlKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
U1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3Q+Kj4obV9hbmltYXRhYmxlUG9pbnRz
TGlzdC0+YW5pbVZhbCgpKTsKKyAgICBtX3BvaW50cy5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRM
aXN0Pio+KHN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2Zm
PFNWR1BvaW50TGlzdD4gPihsb29rdXBPckNyZWF0ZVBvaW50c1dyYXBwZXIodGhpcykpLT5hbmlt
VmFsKCkpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAkocmV2
aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOCBAQCBwdWJsaWM6CiAKICAgICBTVkdQb2ludExpc3Qm
IHBvaW50TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRzLnZhbHVlOyB9CiAKKyAgICBzdGF0
aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBwb2ludHNQcm9wZXJ0eUluZm8oKTsKKwogcHJvdGVj
dGVkOgogICAgIFNWR1BvbHlFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OwogCkBAIC01MSwyMCArNTMsMjQgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7IAogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNNYXJrZXJzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgLy8g
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVB
TihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQot
Ci0gICAgdm9pZCBzeW5jaHJvbml6ZVBvaW50cygpOworICAgIC8vIEN1c3RvbSAncG9pbnRzJyBw
cm9wZXJ0eQorICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXplUG9pbnRzKHZvaWQqIGNvbnRleHRF
bGVtZW50KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29r
dXBPckNyZWF0ZVBvaW50c1dyYXBwZXIodm9pZCogY29udGV4dEVsZW1lbnQpOworCisgICAgQkVH
SU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1BvbHlFbGVtZW50KQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVT
CisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVk
RmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNW
R1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25p
emVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSBTVkdT
eW5jaHJvbml6YWJsZUFuaW1hdGVkUHJvcGVydHk8U1ZHUG9pbnRMaXN0PiBtX3BvaW50czsKLSAg
ICBSZWZQdHI8U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4gPiBt
X2FuaW1hdGFibGVQb2ludHNMaXN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDEyICs0MCwyMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVf
QU5JTUFURURfTEVOR1RIKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmN4QXR0
ciwgQ3gsIGN4KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQsIFNWR05hbWVzOjpjeUF0dHIsIEN5LCBjeSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6ckF0dHIsIFIsIHIpCi1ERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmZ4QXR0ciwg
RngsIGZ4KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQs
IFNWR05hbWVzOjpmeUF0dHIsIEZ5LCBmeSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJU
SUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQs
IFNWR05hbWVzOjpjeEF0dHIsIEN4LCBjeCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmN5QXR0ciwgQ3ksIGN5KQorICAgIERF
RklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6
ckF0dHIsIFIsIHIpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQsIFNWR05hbWVzOjpmeEF0dHIsIEZ4LCBmeCkKKyAgICBERUZJTkVfQU5JTUFURURf
TEVOR1RIKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmZ5QXR0ciwgRnksIGZ5
KQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50KQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKGN4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKGN5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHIpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZngpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoZnkpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHR3JhZGllbnRFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJ
RVMKIAogaW5saW5lIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6U1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
ICAgICA6IFNWR0dyYWRpZW50RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTU3LDYgKzY3
LDcgQEAgaW5saW5lIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6U1ZHUmFkaQogewogICAgIC8v
IFNwZWM6IElmIHRoZSBjeC9jeS9yIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZm
ZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjUwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnJhZGlhbEdyYWRpZW50VGFnKSk7CisgICAgcmVnaXN0ZXJB
bmltYXRlZFByb3BlcnRpZXNGb3JTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQoKTsKIH0KIAogUGFz
c1JlZlB0cjxTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ+IFNWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCkKQEAgLTEyOSw2OSArMTQwLDYgQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2
Z0F0dHJpYgogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCi12b2lk
IFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkg
ewotICAgICAgICBzeW5jaHJvbml6ZUN4KCk7Ci0gICAgICAgIHN5bmNocm9uaXplQ3koKTsKLSAg
ICAgICAgc3luY2hyb25pemVGeCgpOwotICAgICAgICBzeW5jaHJvbml6ZUZ5KCk7Ci0gICAgICAg
IHN5bmNocm9uaXplUigpOwotICAgICAgICBTVkdHcmFkaWVudEVsZW1lbnQ6OnN5bmNocm9uaXpl
UHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFp
c1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHR3JhZGllbnRFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6Y3hBdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplQ3goKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6Y3lBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplQ3koKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZnhBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplRngoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZnlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplRnkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6ckF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVSKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1
cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhp
cy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR0dyYWRpZW50RWxlbWVu
dDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OmN4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6Y3lBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZnhBdHRyLCBBbmltYXRl
ZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpm
eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLX0KLQogUmVuZGVyT2JqZWN0KiBTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5
bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdy
YWRpZW50KHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDIwICs0MiwxOCBA
QCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBz
ZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0
eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeCwgY3gpCi0gICAg
REVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3ksIGN5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVO
R1RIKFIsIHIpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoRngsIGZ4KQotICAgIERFQ0xB
UkVfQU5JTUFURURfTEVOR1RIKEZ5LCBmeSkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX0xFTkdUSChDeCwgY3gpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN5LCBj
eSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUiwgcikKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoRngsIGZ4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdU
SChGeSwgZnkpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE0ICszMiwyNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFU
RURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCi1ERUZJTkVf
QU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCi1E
RUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRy
LCBXaWR0aCwgd2lkdGgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBT
VkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQpCi1ERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6cnhBdHRyLCBSeCwgcngpCi1ERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6cnlBdHRyLCBSeSwgcnkpCi1E
RUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAg
ICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIs
IFgsIHgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdSZWN0RWxlbWVudCwgU1ZHTmFt
ZXM6OnlBdHRyLCBZLCB5KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1l
bnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKKyAgICBERUZJTkVfQU5JTUFU
RURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBo
ZWlnaHQpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdSZWN0RWxlbWVudCwgU1ZHTmFt
ZXM6OnJ4QXR0ciwgUngsIHJ4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVs
ZW1lbnQsIFNWR05hbWVzOjpyeUF0dHIsIFJ5LCByeSkKKyAgICBERUZJTkVfQU5JTUFURURfQk9P
TEVBTihTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRB
dHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHUmVjdEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkoeCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5KQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHdpZHRoKQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGhlaWdodCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShyeCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShy
eSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAog
aW5saW5lIFNWR1JlY3RFbGVtZW50OjpTVkdSZWN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTUxLDYgKzY0LDcgQEAgaW5saW5lIFNW
R1JlY3RFbGVtZW50OjpTVkdSZWN0RWxlbWVudChjbwogICAgICwgbV9yeShMZW5ndGhNb2RlSGVp
Z2h0KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpyZWN0VGFnKSk7CisgICAg
cmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdSZWN0RWxlbWVudCgpOwogfQogCiBQYXNz
UmVmUHRyPFNWR1JlY3RFbGVtZW50PiBTVkdSZWN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTE3MCw4OCArMTg0LDYg
QEAgdm9pZCBTVkdSZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR1JlY3RFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9
PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJv
bml6ZVkoKTsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6
ZUhlaWdodCgpOwotICAgICAgICBzeW5jaHJvbml6ZVJ4KCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
UnkoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0g
ICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwot
ICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0
eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9y
dGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplWCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjp5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhB
dHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikgewotICAgICAg
ICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjpyeEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVSeCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
OjpyeUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVSeSgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25p
emVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgU1ZHUmVjdEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHUmVjdEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
LQotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3Ro
KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBB
bmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnJ4QXR0ciwgQW5pbWF0ZWRM
ZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cnlB
dHRyLCBBbmltYXRlZExlbmd0aCk7Ci19Ci0KIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnRvUGF0aERh
dGEoUGF0aCYgcGF0aCkgY29uc3QKIHsKICAgICBBU1NFUlQocGF0aC5pc0VtcHR5KCkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDI0
ICs0NywyNSBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShB
dHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHRvUGF0aERh
dGEoUGF0aCYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0
aHMoKSBjb25zdDsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAg
IERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoWSwgeSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwgd2lkdGgpCi0gICAg
REVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCi0gICAgREVDTEFSRV9BTklN
QVRFRF9MRU5HVEgoUngsIHJ4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFJ5LCByeSkK
LQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1B
VEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUmVjdEVs
ZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVO
R1RIKFdpZHRoLCB3aWR0aCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0
LCBoZWlnaHQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFJ4LCByeCkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUnksIHJ5KQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBT
VkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5j
aHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5j
aHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5n
dWFnZSh0aGlzKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDE0ICs1Niwy
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmlu
aXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjp4
QXR0ciwgWCwgeCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHU1ZHRWxlbWVudCwgU1ZHTmFt
ZXM6OnlBdHRyLCBZLCB5KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdTVkdFbGVtZW50LCBT
VkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0aCwgd2lkdGgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RI
KFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdodCkKLURF
RklORV9BTklNQVRFRF9CT09MRUFOKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCkKLURFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNW
R1NWR0VsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgUHJlc2VydmVB
c3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKLURFRklORV9BTklNQVRFRF9SRUNUKFNW
R1NWR0VsZW1lbnQsIFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgVmlld0JveCwgdmlld0JveCkKK0JF
R0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdU
SChTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCisgICAgREVGSU5FX0FOSU1B
VEVEX0xFTkdUSChTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCisgICAgREVG
SU5FX0FOSU1BVEVEX0xFTkdUSChTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBX
aWR0aCwgd2lkdGgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdTVkdFbGVtZW50LCBT
VkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQpCisgICAgREVGSU5FX0FOSU1BVEVE
X0JPT0xFQU4oU1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQorICAgIERFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR1NWR0VsZW1l
bnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgUHJlc2VydmVBc3BlY3RSYXRp
bywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICBERUZJTkVfQU5JTUFURURfUkVDVChTVkdTVkdF
bGVtZW50LCBTVkdOYW1lczo6dmlld0JveEF0dHIsIFZpZXdCb3gsIHZpZXdCb3gpCitFTkRfREVG
SU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdTVkdFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZ
KHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeSkKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh3aWR0aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShoZWlnaHQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWSh2aWV3Qm94KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZ
KHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJU
SUVTCiAKIGlubGluZSBTVkdTVkdFbGVtZW50OjpTVkdTVkdFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdTdHlsZWRMb2NhdGFibGVF
bGVtZW50KHRhZ05hbWUsIGRvYykKQEAgLTc3LDYgKzkwLDcgQEAgaW5saW5lIFNWR1NWR0VsZW1l
bnQ6OlNWR1NWR0VsZW1lbnQoY29ucwogICAgICwgbV9oYXNTZXRDb250YWluZXJTaXplKGZhbHNl
KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpzdmdUYWcpKTsKKyAgICByZWdp
c3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1NWR0VsZW1lbnQoKTsKICAgICBkb2MtPnJlZ2lz
dGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOwogfQogCkBAIC0zNTUsNTUg
KzM2OSw2IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCgKICAgICBT
VkdTdHlsZWRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotdm9p
ZCBTVkdTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgc3luY2hy
b25pemVXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAgICBzeW5j
aHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHRml0VG9WaWV3
Qm94OjpzeW5jaHJvbml6ZVByb3BlcnRpZXMoYXR0ck5hbWUpOwotICAgICAgICBTVkdUZXN0czo6
c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHU3R5bGVk
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBz
eW5jaHJvbml6ZVgoKTsKLSAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIp
Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjp3aWR0aEF0dHIpCi0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICBlbHNlIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgc3luY2hyb25pemVI
ZWlnaHQoKTsKLSAgICBlbHNlIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKCk7Ci0gICAgZWxzZSBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgCi0gICAgICAgIFNWR0ZpdFRvVmlld0JveDo6c3luY2hyb25pemVQ
cm9wZXJ0aWVzKGF0dHJOYW1lKTsKLSAgICBlbHNlIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXMo
dGhpcywgYXR0ck5hbWUpOwotICAgIGVsc2UKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBTVkdTVkdFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwOwotfQotCi12b2lkIFNWR1NWR0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmlt
YXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
Ojp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0
aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp2aWV3Qm94
QXR0ciwgQW5pbWF0ZWRSZWN0KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBBbmltYXRlZFByZXNlcnZlQXNwZWN0
UmF0aW8pOwotfQotCiB1bnNpZ25lZCBTVkdTVkdFbGVtZW50OjpzdXNwZW5kUmVkcmF3KHVuc2ln
bmVkIC8qIG1heFdhaXRNaWxsaXNlY29uZHMgKi8pCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBtZSAoc2VlIGJ1ZyAxMTI3NSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAko
cmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDUsMjcgKzE0NSwyNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmly
dHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIAogICAgIHZvaWQgaW5o
ZXJpdFZpZXdBdHRyaWJ1dGVzKFNWR1ZpZXdFbGVtZW50Kik7CiAKLSAgICAvLyBBbmltYXRlZCBw
cm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQot
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEgoV2lkdGgsIHdpZHRoKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwg
aGVpZ2h0KQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xB
UkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKQotCi0gICAgLy8gU1ZHRml0VG9WaWV3Qm94Ci0gICAgREVDTEFSRV9B
TklNQVRFRF9SRUNUKFZpZXdCb3gsIHZpZXdCb3gpCi0gICAgREVDTEFSRV9BTklNQVRFRF9QUkVT
RVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8p
Ci0gCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1NWR0VsZW1lbnQp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKFksIHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdp
ZHRoLCB3aWR0aCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWln
aHQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX1JFQ1QoVmlld0JveCwgdmlld0JveCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUkVT
RVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8p
CisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8gU1ZHVGVzdHMK
KyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0
czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVS
ZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVT
eXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhp
cyk7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSgpOwog
ICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjgsMjEgKzI4LDI5IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdGF0aWNQ
cm9wZXJ0eVRlYXJPZmYuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2UuaCIKICNpbmNs
dWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVG
SU5FX0FOSU1BVEVEX1NUUklORyhTVkdTY3JpcHRFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0
ciwgSHJlZiwgaHJlZikKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1NjcmlwdEVsZW1lbnQs
IFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9BTklN
QVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdTY3JpcHRFbGVt
ZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKKyAgICBERUZJTkVfQU5JTUFU
RURfQk9PTEVBTihTVkdTY3JpcHRFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNU
RVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTY3JpcHRFbGVtZW50KQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKGhyZWYpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9SRUdJU1RFUl9BTklNQVRF
RF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdTY3JpcHRFbGVtZW50OjpTVkdTY3JpcHRFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCB3
YXNJbnNlcnRlZEJ5UGFyc2VyLCBib29sIGFscmVhZHlTdGFydGVkKQogICAgIDogU1ZHRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIFNjcmlwdEVsZW1lbnQodGhpcywgd2FzSW5zZXJ0
ZWRCeVBhcnNlciwgYWxyZWFkeVN0YXJ0ZWQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZH
TmFtZXM6OnNjcmlwdFRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZH
U2NyaXB0RWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR1NjcmlwdEVsZW1lbnQ+IFNWR1Nj
cmlwdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQsIGJvb2wgaW5zZXJ0ZWRCeVBhcnNlcikKQEAgLTEyMCw0NCArMTI4LDYgQEAg
dm9pZCBTVkdTY3JpcHRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZwogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09
IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICBTVkdFbGVtZW50Ojpz
eW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0Vs
ZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfSAgIAotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1VSSVJl
ZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25p
emVIcmVmKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1NjcmlwdEVsZW1lbnQ6
OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZv
aWQgU1ZHU2NyaXB0RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpLnNldChYTGlua05hbWVzOjpocmVmQXR0
ciwgQW5pbWF0ZWRTdHJpbmcpOwotfQotCiB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6Omluc2VydGVk
SW50b0RvY3VtZW50KCkKIHsKICAgICBTVkdFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUxLDkgKzUxLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5D
aGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9
IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAg
ICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRl
KikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogCkBA
IC03NSwxMyArNzIsMTAgQEAgcHJpdmF0ZToKIAogICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY2xv
bmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpIGNvbnN0OwogCi0gICAgLy8g
QW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0KLSAgICAvLyBTVkdVUklSZWZlcmVuY2UK
LSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQotCi0gICAgLy8gU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJF
R0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTY3JpcHRFbGVtZW50KQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICBT
dHJpbmcgbV90eXBlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNw
cAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNCArMzMsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVE
X05VTUJFUihTVkdTdG9wRWxlbWVudCwgU1ZHTmFtZXM6Om9mZnNldEF0dHIsIE9mZnNldCwgb2Zm
c2V0KQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFU
RURfTlVNQkVSKFNWR1N0b3BFbGVtZW50LCBTVkdOYW1lczo6b2Zmc2V0QXR0ciwgT2Zmc2V0LCBv
ZmZzZXQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdTdG9wRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWShvZmZzZXQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHU3R5bGVkRWxlbWVudCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJU
SUVTCiAKIGlubGluZSBTVkdTdG9wRWxlbWVudDo6U1ZHU3RvcEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fb2Zmc2V0KDApCiB7CiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN0b3BUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJv
cGVydGllc0ZvclNWR1N0b3BFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHU3RvcEVsZW1l
bnQ+IFNWR1N0b3BFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtOTUsNDEgKzEwMiw2IEBAIHZvaWQgU1ZHU3RvcEVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAot
dm9pZCBTVkdTdG9wRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAg
ICAgICBzeW5jaHJvbml6ZU9mZnNldCgpOwotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5j
aHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxl
ZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpvZmZzZXRBdHRyKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplT2Zmc2V0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IFNWR1N0b3BFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwOwotfQotCi12b2lkIFNWR1N0b3BFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0K
LSAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChTVkdOYW1lczo6b2Zmc2V0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotfQotCiBS
ZW5kZXJPYmplY3QqIFNWR1N0b3BFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZH
R3JhZGllbnRTdG9wKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgJ
KHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDE2ICszOSwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAg
ICAgdmlydHVhbCBib29sIGlzR3JhZGllbnRTdG9wKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwg
UmVuZGVyU3R5bGUqKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwot
ICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKE9mZnNldCwgb2Zmc2V0KQorICAgIEJFR0lOX0RF
Q0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdG9wRWxlbWVudCkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9OVU1CRVIoT2Zmc2V0LCBvZmZzZXQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDExICs0NCwxNyBAQAogI2luY2x1ZGUgIlNWR1VzZUVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3Bl
cnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR1N0eWxlZEVsZW1lbnQs
IEhUTUxOYW1lczo6Y2xhc3NBdHRyLCBDbGFzc05hbWUsIGNsYXNzTmFtZSkKK0JFR0lOX0RFRklO
RV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdTdHls
ZWRFbGVtZW50LCBIVE1MTmFtZXM6OmNsYXNzQXR0ciwgQ2xhc3NOYW1lLCBjbGFzc05hbWUpCitF
TkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdTdHlsZWRFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVE
X1BST1BFUlRZKGNsYXNzTmFtZSkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAK
IHVzaW5nIG5hbWVzcGFjZSBTVkdOYW1lczsKIApAQCAtNjIsNiArNjgsNyBAQCB2b2lkIG1hcEF0
dHJpYnV0ZVRvQ1NTUHJvcGVydHkoSGFzaE1hcDxBCiBTVkdTdHlsZWRFbGVtZW50OjpTVkdTdHls
ZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCkKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CisgICAgcmVnaXN0ZXJB
bmltYXRlZFByb3BlcnRpZXNGb3JTVkdTdHlsZWRFbGVtZW50KCk7CiB9CiAKIFNWR1N0eWxlZEVs
ZW1lbnQ6On5TVkdTdHlsZWRFbGVtZW50KCkKQEAgLTIwNSwxMCArMjEyLDExIEBAIGludCBTVkdT
dHlsZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1YKICAgICByZXR1cm4gcHJvcGVydHlOYW1l
VG9JZE1hcC0+Z2V0KGF0dHJOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKK3R5cGVkZWYg
SGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZFByb3BlcnR5VHlwZT4gQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXA7CiBzdGF0aWMgaW5saW5lIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBjc3NQcm9wZXJ0eVRvVHlwZU1hcCgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19jc3NQcm9wZXJ0eU1hcCwgKCkpOwotICAgIAorCiAg
ICAgaWYgKCFzX2Nzc1Byb3BlcnR5TWFwLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHNfY3Nz
UHJvcGVydHlNYXA7CiAKQEAgLTI2OSwxMiArMjc3LDE1IEBAIHN0YXRpYyBpbmxpbmUgQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAKICAgICByZXR1cm4gc19jc3NQcm9wZXJ0eU1hcDsKIH0KIAot
QW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIFNWR1N0eWxlZEVsZW1lbnQ6OmFuaW1hdGVkUHJvcGVydHlU
eXBlRm9yQ1NTUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit2b2lkIFNW
R1N0eWxlZEVsZW1lbnQ6OmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBWZWN0b3I8QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+JiBwcm9w
ZXJ0eVR5cGVzKQogeworICAgIFNWR0VsZW1lbnQ6OmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0
cmlidXRlKGF0dHJOYW1lLCBwcm9wZXJ0eVR5cGVzKTsKKyAgICBpZiAoIXByb3BlcnR5VHlwZXMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKICAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgY3NzUHJvcGVydHlUeXBlTWFwID0gY3NzUHJvcGVydHlUb1R5cGVNYXAoKTsKICAgICBp
ZiAoY3NzUHJvcGVydHlUeXBlTWFwLmNvbnRhaW5zKGF0dHJOYW1lKSkKLSAgICAgICAgcmV0dXJu
IGNzc1Byb3BlcnR5VHlwZU1hcC5nZXQoYXR0ck5hbWUpOwotICAgIHJldHVybiBBbmltYXRlZFVu
a25vd247CisgICAgICAgIHByb3BlcnR5VHlwZXMuYXBwZW5kKGNzc1Byb3BlcnR5VHlwZU1hcC5n
ZXQoYXR0ck5hbWUpKTsKIH0KIAogYm9vbCBTVkdTdHlsZWRFbGVtZW50Ojppc0FuaW1hdGFibGVD
U1NQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKQEAgLTI4MiwxMSArMjkz
LDYgQEAgYm9vbCBTVkdTdHlsZWRFbGVtZW50Ojppc0FuaW1hdGFibGVDU1NQcgogICAgIHJldHVy
biBjc3NQcm9wZXJ0eVRvVHlwZU1hcCgpLmNvbnRhaW5zKGF0dHJOYW1lKTsKIH0KIAotdm9pZCBT
VkdTdHlsZWRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKQotewot
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChIVE1MTmFtZXM6OmNsYXNzQXR0ciwg
QW5pbWF0ZWRTdHJpbmcpOwotfQotCiBib29sIFNWR1N0eWxlZEVsZW1lbnQ6Om1hcFRvRW50cnko
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1
bHQpIGNvbnN0CiB7CiAgICAgaWYgKFNWR1N0eWxlZEVsZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JT
VkdBdHRyaWJ1dGVOYW1lKGF0dHJOYW1lKSA+IDApIHsKQEAgLTM1MSwxMiArMzU3LDYgQEAgdm9p
ZCBTVkdTdHlsZWRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZwogICAgIH0KIH0KIAotdm9pZCBT
VkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpIHx8IGF0dHJOYW1l
ID09IEhUTUxOYW1lczo6Y2xhc3NBdHRyKQotICAgICAgICBzeW5jaHJvbml6ZUNsYXNzTmFtZSgp
OwotfQotCiB2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OmF0dGFjaCgpCiB7CiAgICAgU1ZHRWxlbWVu
dDo6YXR0YWNoKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgJKHJl
dmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQZW5k
aW5nUmVzb3VyY2VzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRIYXNQZW5kaW5nUmVzb3VyY2VzKGJv
b2wpOwogCi0gICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlRm9y
Q1NTUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBhbmlt
YXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgVmVjdG9y
PEFuaW1hdGVkUHJvcGVydHlUeXBlPiYpOwogICAgIHN0YXRpYyBib29sIGlzQW5pbWF0YWJsZUNT
U1Byb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIHZpcnR1YWwgQWZmaW5lVHJh
bnNmb3JtIGxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2Nv
cGUpIGNvbnN0OwpAQCAtNjIsMTUgKzYyLDExIEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOiAKICAg
ICBTVkdTdHlsZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotCiAg
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRl
eHQmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9u
aXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotCi0gICAgdm9pZCBmaWxsUGFzc2Vk
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJ
bnRvRG9jdW1lbnQoKTsKQEAgLTk0LDggKzkwLDkgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hTZXQ8
U1ZHU3R5bGVkRWxlbWVudCo+IG1fZWxlbWVudHNXaXRoUmVsYXRpdmVMZW5ndGhzOwogCi0gICAg
Ly8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9T
VFJJTkcoQ2xhc3NOYW1lLCBjbGFzc05hbWUpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR1N0eWxlZEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RS
SU5HKENsYXNzTmFtZSwgY2xhc3NOYW1lKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcAkocmV2aXNp
b24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMiArMzIsMTkgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FO
SU1BVEVEX1RSQU5TRk9STV9MSVNUKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LCBTVkdO
YW1lczo6dHJhbnNmb3JtQXR0ciwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCitCRUdJTl9ERUZJTkVf
QU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwgU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIsIFRy
YW5zZm9ybSwgdHJhbnNmb3JtKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JF
R0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkodHJhbnNmb3JtKQor
ICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZExvY2F0YWJs
ZUVsZW1lbnQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudDo6U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5
bGVkTG9jYXRhYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKKyAgICByZWdpc3RlckFu
aW1hdGVkUHJvcGVydGllc0ZvclNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KCk7CiB9CiAK
IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojp+U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQoKQpAQCAtMTE5LDI3ICsxMjYsNiBAQCB2b2lkIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50OjpzdmdBCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsK
LSAgICAgICAgc3luY2hyb25pemVUcmFuc2Zvcm0oKTsKLSAgICAgICAgU1ZHU3R5bGVkTG9jYXRh
YmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewot
ICAgICAgICBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6dHJhbnNmb3JtQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVRyYW5zZm9ybSgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0KIFNWR0VsZW1lbnQqIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpuZWFyZXN0Vmll
d3BvcnRFbGVtZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtYWJsZTo6bmVh
cmVzdFZpZXdwb3J0RWxlbWVudCh0aGlzKTsKQEAgLTE2MSwxMyArMTQ3LDYgQEAgUmVuZGVyT2Jq
ZWN0KiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbQogICAgIHJldHVybiBuZXcgKGFyZW5hKSBS
ZW5kZXJTVkdQYXRoKHRoaXMpOwogfQogCi12b2lkIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKQotewotICAgIFNWR1N0eWxl
ZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgCi0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLCBBbmltYXRlZFRyYW5zZm9ybUxpc3QpOwotfQot
CiB2b2lkIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojp0b0NsaXBQYXRoKFBhdGgmIHBh
dGgpIGNvbnN0CiB7CiAgICAgdG9QYXRoRGF0YShwYXRoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCShyZXZpc2lvbiA5
MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxMSArNTgsMTAgQEAgcHJvdGVjdGVkOgogICAgIGJv
b2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZv
aWQgZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFRyYW5zZm9ybSwgdHJhbnNmb3JtKQor
ICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChUcmFu
c2Zvcm0sIHRyYW5zZm9ybSkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAK
IHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzU3R5bGVkVHJhbnNmb3JtYWJsZSgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMyArMjgsMjEgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FO
SU1BVEVEX0JPT0xFQU4oU1ZHU3dpdGNoRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJ
TkVfQU5JTUFURURfQk9PTEVBTihTVkdTd2l0Y2hFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVH
SU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTd2l0Y2hFbGVtZW50KQorICAgIFJF
R0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQp
CisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZH
U3dpdGNoRWxlbWVudDo6U1ZHU3dpdGNoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1l
czo6c3dpdGNoVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdTd2l0
Y2hFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHU3dpdGNoRWxlbWVudD4gU1ZHU3dpdGNo
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCkKQEAgLTY1LDMzICs3Myw2IEBAIFJlbmRlck9iamVjdCogU1ZHU3dpdGNoRWxlbWVu
dDo6Y3JlYXRlUmUKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHVHJhbnNmb3JtYWJs
ZUNvbnRhaW5lcih0aGlzKTsKIH0KIAotdm9pZCBTVkdTd2l0Y2hFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLQot
ICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQ
cm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0g
ICAgZWxzZSBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAg
ICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLX0KLQot
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1N3aXRjaEVsZW1lbnQ6OmF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAg
cmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHU3dpdGNo
RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkpOwotfQotCiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCShyZXZp
c2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDE1ICs0NiwxNSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKIAogICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7
Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwotICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0
aW9ucworICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTd2l0Y2hFbGVt
ZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUSUVTCiAKLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVS
ZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVx
dWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lv
bnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgp
IHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxl
bWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJv
bEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxNSArMjksMjQgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5F
X0FOSU1BVEVEX0JPT0xFQU4oU1ZHU3ltYm9sRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKQotREVGSU5FX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oU1ZH
U3ltYm9sRWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBQcmVzZXJ2
ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSAKLURFRklORV9BTklNQVRFRF9SRUNU
KFNWR1N5bWJvbEVsZW1lbnQsIFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgVmlld0JveCwgdmlld0Jv
eCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVE
X0JPT0xFQU4oU1ZHU3ltYm9sRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorICAgIERFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR1N5bWJv
bEVsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgUHJlc2VydmVBc3Bl
Y3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykgCisgICAgREVGSU5FX0FOSU1BVEVEX1JFQ1Qo
U1ZHU3ltYm9sRWxlbWVudCwgU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBWaWV3Qm94LCB2aWV3Qm94
KQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdTeW1ib2xFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkodmlld0JveCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShwcmVzZXJ2ZUFzcGVjdFJhdGlvKSAKKyAgICBSRUdJU1RFUl9QQVJFTlRf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1B
VEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1N5bWJvbEVsZW1lbnQ6OlNWR1N5bWJvbEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAg
IDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShTVkdOYW1lczo6c3ltYm9sVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3Bl
cnRpZXNGb3JTVkdTeW1ib2xFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHU3ltYm9sRWxl
bWVudD4gU1ZHU3ltYm9sRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTg3LDQ4ICs5Niw2IEBAIHZvaWQgU1ZHU3ltYm9s
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmcKICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhz
SW5mb3JtYXRpb24oKTsKIH0KIAotdm9pZCBTVkdTeW1ib2xFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFt
ZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCgpOwotICAgICAgICBTVkdGaXRUb1ZpZXdCb3g6OnN5bmNocm9uaXplUHJvcGVydGll
cyhhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVy
dHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBv
cnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaXRUb1ZpZXdCb3g6OnN5bmNo
cm9uaXplUHJvcGVydGllcyhhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IFNWR1N5bWJvbEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHU3ltYm9sRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwotCi0gICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBBbmltYXRlZFJlY3QpOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RS
YXRpb0F0dHIsIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7Ci19Ci0KIGJvb2wgU1ZHU3lt
Ym9sRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGhhc0F0dHJpYnV0ZShTVkdOYW1lczo6dmlld0JveEF0dHIpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU3ltYm9sRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDIxICs0NywxNSBA
QCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1
YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRl
ZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKLSAKLSAgICAvLyBTVkdGaXRUb1ZpZXdC
b3gKLSAgICBERUNMQVJFX0FOSU1BVEVEX1JFQ1QoVmlld0JveCwgdmlld0JveCkKLSAgICBERUNM
QVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oUHJlc2VydmVBc3BlY3RSYXRpbywgcHJl
c2VydmVBc3BlY3RSYXRpbykgCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR1N5bWJvbEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX1JFQ1QoVmlld0JveCwgdmlld0JveCkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNl
cnZlQXNwZWN0UmF0aW8pIAorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
UmVmRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZF
bGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJl
ZkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMyArMzcsMjAgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5F
X0FOSU1BVEVEX1NUUklORyhTVkdUUmVmRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhy
ZWYsIGhyZWYpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9B
TklNQVRFRF9TVFJJTkcoU1ZHVFJlZkVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVm
LCBocmVmKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVS
X0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVFJlZkVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJP
UEVSVElFUyhTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVE
X1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1RSZWZFbGVtZW50OjpTVkdUUmVmRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdU
ZXh0UG9zaXRpb25pbmdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKFNWR05hbWVzOjp0cmVmVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3Bl
cnRpZXNGb3JTVkdUUmVmRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR1RSZWZFbGVtZW50
PiBTVkdUUmVmRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKQEAgLTE2NCw0MSArMTcxLDYgQEAgdm9pZCBTVkdUUmVmRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12
b2lkIFNWR1RSZWZFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1RSZWZFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVy
biBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR1RSZWZFbGVtZW50
OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Ojpm
aWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpo
cmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotfQotCiBSZW5kZXJPYmplY3QqIFNWR1RSZWZFbGVt
ZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsK
ICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHSW5saW5lKHRoaXMpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQyLDYg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
Kik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIGNo
aWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OwpAQCAtNTYsMTAgKzUzLDkgQEAg
cHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZSgpOwogCi0g
ICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0KLSAgICAvLyBTVkdVUklSZWZl
cmVuY2UKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgIEJFR0lO
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUUmVmRWxlbWVudCkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKKyAgICBFTkRfREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUSUVTCiAKICAgICBSZWZQdHI8U3VidHJlZU1vZGlmaWNhdGlvbkV2ZW50TGlzdGVu
ZXI+IG1fZXZlbnRMaXN0ZW5lcjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNw
YW5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5F
bGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNw
YW5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTkgKzc0LDYgQEAgYm9vbCBTVkdU
U3BhbkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoYwogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1RTcGFuRWxlbWVudDo6YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICBy
ZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdUU3BhbkVs
ZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17ICAgICAgICAKLSAgICBT
VkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKSk7Ci19Ci0KIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUU3BhbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VFNwYW5FbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RTcGFuRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw5ICszNiw2IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwg
UmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJl
cihOb2RlKikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
Tm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYg
KzMyLDQ5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gRGVmaW5lIGN1c3RvbSBub24t
YW5pbWF0ZWQgcHJvcGVydHkgJ3JlcXVpcmVkRmVhdHVyZXMnLgorY29uc3QgU1ZHUHJvcGVydHlJ
bmZvKiBTVkdUZXN0czo6cmVxdWlyZWRGZWF0dXJlc1Byb3BlcnR5SW5mbygpCit7CisgICAgc3Rh
dGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogc19wcm9wZXJ0eUluZm8gPSAwOworICAgIGlmICgh
c19wcm9wZXJ0eUluZm8pIHsKKyAgICAgICAgc19wcm9wZXJ0eUluZm8gPSBuZXcgU1ZHUHJvcGVy
dHlJbmZvKEFuaW1hdGVkVW5rbm93biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNWR05hbWVzOjpyZXF1aXJlZEZlYXR1cmVzQXR0ciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpyZXF1aXJlZEZlYXR1
cmVzQXR0ci5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICB9CisgICAg
cmV0dXJuIHNfcHJvcGVydHlJbmZvOworfQorCisKKy8vIERlZmluZSBjdXN0b20gbm9uLWFuaW1h
dGVkIHByb3BlcnR5ICdyZXF1aXJlZEV4dGVuc2lvbnMnLgorY29uc3QgU1ZHUHJvcGVydHlJbmZv
KiBTVkdUZXN0czo6cmVxdWlyZWRFeHRlbnNpb25zUHJvcGVydHlJbmZvKCkKK3sKKyAgICBzdGF0
aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBzX3Byb3BlcnR5SW5mbyA9IDA7CisgICAgaWYgKCFz
X3Byb3BlcnR5SW5mbykgeworICAgICAgICBzX3Byb3BlcnR5SW5mbyA9IG5ldyBTVkdQcm9wZXJ0
eUluZm8oQW5pbWF0ZWRVbmtub3duLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU1ZHTmFtZXM6OnJlcXVpcmVkRXh0ZW5zaW9uc0F0dHIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6cmVxdWlyZWRFeHRl
bnNpb25zQXR0ci5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgIH0K
KyAgICByZXR1cm4gc19wcm9wZXJ0eUluZm87Cit9CisKKy8vIERlZmluZSBjdXN0b20gbm9uLWFu
aW1hdGVkIHByb3BlcnR5ICdzeXN0ZW1MYW5ndWFnZScuCitjb25zdCBTVkdQcm9wZXJ0eUluZm8q
IFNWR1Rlc3RzOjpzeXN0ZW1MYW5ndWFnZVByb3BlcnR5SW5mbygpCit7CisgICAgc3RhdGljIGNv
bnN0IFNWR1Byb3BlcnR5SW5mbyogc19wcm9wZXJ0eUluZm8gPSAwOworICAgIGlmICghc19wcm9w
ZXJ0eUluZm8pIHsKKyAgICAgICAgc19wcm9wZXJ0eUluZm8gPSBuZXcgU1ZHUHJvcGVydHlJbmZv
KEFuaW1hdGVkVW5rbm93biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNWR05hbWVzOjpzeXN0ZW1MYW5ndWFnZUF0dHIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6c3lzdGVtTGFuZ3VhZ2VBdHRyLmxv
Y2FsTmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JlNWR0VsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICB9CisgICAgcmV0dXJuIHNfcHJv
cGVydHlJbmZvOworfQorCiBTVkdUZXN0czo6U1ZHVGVzdHMoKQogICAgIDogbV9yZXF1aXJlZEZl
YXR1cmVzKFNWR05hbWVzOjpyZXF1aXJlZEZlYXR1cmVzQXR0cikKICAgICAsIG1fcmVxdWlyZWRF
eHRlbnNpb25zKFNWR05hbWVzOjpyZXF1aXJlZEV4dGVuc2lvbnNBdHRyKQpAQCAtMzksNiArODIs
MTcgQEAgU1ZHVGVzdHM6OlNWR1Rlc3RzKCkKIHsKIH0KIAorU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0
eU1hcCYgU1ZHVGVzdHM6OmF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKQoreworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCwgbWFwLCAoKSk7CisgICAgaWYg
KCFtYXAuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbWFwOworICAgIG1hcC5hZGRQcm9wZXJ0
eShyZXF1aXJlZEZlYXR1cmVzUHJvcGVydHlJbmZvKCkpOworICAgIG1hcC5hZGRQcm9wZXJ0eShy
ZXF1aXJlZEV4dGVuc2lvbnNQcm9wZXJ0eUluZm8oKSk7CisgICAgbWFwLmFkZFByb3BlcnR5KHN5
c3RlbUxhbmd1YWdlUHJvcGVydHlJbmZvKCkpOworICAgIHJldHVybiBtYXA7Cit9CisKIGJvb2wg
U1ZHVGVzdHM6Omhhc0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKSBjb25zdAogewogICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgbWUhCkBAIC0xMTUsNDUgKzE2OSwzMSBAQCB2b2lkIFNWR1Rlc3RzOjph
ZGRTdXBwb3J0ZWRBdHRyaWJ1dGVzKEhhCiAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5hZGQoU1ZH
TmFtZXM6OnN5c3RlbUxhbmd1YWdlQXR0cik7CiB9CiAKLXZvaWQgU1ZHVGVzdHM6OnN5bmNocm9u
aXplUHJvcGVydGllcyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAg
ICAgICAgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKGNvbnRleHRFbGVtZW50KTsKLSAgICAg
ICAgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoY29udGV4dEVsZW1lbnQpOwotICAgICAg
ICBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKGNvbnRleHRFbGVtZW50KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cmVxdWlyZWRGZWF0
dXJlc0F0dHIpCi0gICAgICAgIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyhjb250ZXh0RWxl
bWVudCk7Ci0gICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJlcXVpcmVkRXh0ZW5z
aW9uc0F0dHIpCi0gICAgICAgIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKGNvbnRleHRF
bGVtZW50KTsKLSAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3lzdGVtTGFuZ3Vh
Z2VBdHRyKQotICAgICAgICBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKGNvbnRleHRFbGVtZW50
KTsKLX0KLQogdm9pZCBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKFNWR0Vs
ZW1lbnQqIGNvbnRleHRFbGVtZW50KQogeworICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7CiAg
ICAgaWYgKCFtX3JlcXVpcmVkRmVhdHVyZXMuc2hvdWxkU3luY2hyb25pemUpCiAgICAgICAgIHJl
dHVybjsKICAgICBBdG9taWNTdHJpbmcgdmFsdWUobV9yZXF1aXJlZEZlYXR1cmVzLnZhbHVlLnZh
bHVlQXNTdHJpbmcoKSk7Ci0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjx0cnVl
Pjo6c3luY2hyb25pemUoY29udGV4dEVsZW1lbnQsIFNWR05hbWVzOjpyZXF1aXJlZEZlYXR1cmVz
QXR0ciwgdmFsdWUpOworICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46
OnN5bmNocm9uaXplKGNvbnRleHRFbGVtZW50LCByZXF1aXJlZEZlYXR1cmVzUHJvcGVydHlJbmZv
KCktPmF0dHJpYnV0ZU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBTVkdUZXN0czo6c3luY2hyb25p
emVSZXF1aXJlZEV4dGVuc2lvbnMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiB7CisgICAg
QVNTRVJUKGNvbnRleHRFbGVtZW50KTsKICAgICBpZiAoIW1fcmVxdWlyZWRFeHRlbnNpb25zLnNo
b3VsZFN5bmNocm9uaXplKQogICAgICAgICByZXR1cm47CiAgICAgQXRvbWljU3RyaW5nIHZhbHVl
KG1fcmVxdWlyZWRFeHRlbnNpb25zLnZhbHVlLnZhbHVlQXNTdHJpbmcoKSk7Ci0gICAgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUoY29udGV4dEVsZW1l
bnQsIFNWR05hbWVzOjpyZXF1aXJlZEV4dGVuc2lvbnNBdHRyLCB2YWx1ZSk7CisgICAgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUoY29udGV4dEVsZW1l
bnQsIHJlcXVpcmVkRXh0ZW5zaW9uc1Byb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lLHZhbHVl
KTsKIH0KIAogdm9pZCBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZShTVkdFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCkKIHsKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwogICAg
IGlmICghbV9zeXN0ZW1MYW5ndWFnZS5zaG91bGRTeW5jaHJvbml6ZSkKICAgICAgICAgcmV0dXJu
OwogICAgIEF0b21pY1N0cmluZyB2YWx1ZShtX3N5c3RlbUxhbmd1YWdlLnZhbHVlLnZhbHVlQXNT
dHJpbmcoKSk7Ci0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3lu
Y2hyb25pemUoY29udGV4dEVsZW1lbnQsIFNWR05hbWVzOjpzeXN0ZW1MYW5ndWFnZUF0dHIsIHZh
bHVlKTsKKyAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPHRydWU+OjpzeW5jaHJv
bml6ZShjb250ZXh0RWxlbWVudCwgc3lzdGVtTGFuZ3VhZ2VQcm9wZXJ0eUluZm8oKS0+YXR0cmli
dXRlTmFtZSwgdmFsdWUpOwogfQogCiBTVkdTdHJpbmdMaXN0JiBTVkdUZXN0czo6cmVxdWlyZWRG
ZWF0dXJlcygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaAkocmV2aXNpb24gOTA0NTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIs
NyBAQAogI2RlZmluZSBTVkdUZXN0c19oCiAKICNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNW
R0FuaW1hdGVkUHJvcGVydHkuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5TWFjcm9z
LmgiCiAjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdC5oIgogCkBAIC00NSwxOCArNDYsMjcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBhZGRTdXBwb3J0ZWRBdHRyaWJ1dGVzKEhhc2hTZXQ8UXVhbGlmaWVk
TmFtZT4mKTsKICAgICBib29sIGhhbmRsZUF0dHJpYnV0ZUNoYW5nZShjb25zdCBTVkdFbGVtZW50
KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0aWVz
KFNWR0VsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CisKKyAgICBzdGF0aWMgU1ZHQXR0
cmlidXRlVG9Qcm9wZXJ0eU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpOwogCiBwcm90ZWN0
ZWQ6CiAgICAgU1ZHVGVzdHMoKTsKIAotcHJpdmF0ZToKLSAgICB2b2lkIHN5bmNocm9uaXplUmVx
dWlyZWRGZWF0dXJlcyhTVkdFbGVtZW50Kik7Ci0gICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVk
RXh0ZW5zaW9ucyhTVkdFbGVtZW50Kik7Ci0gICAgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1
YWdlKFNWR0VsZW1lbnQqKTsKKyAgICB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyhT
VkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7CisgICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVk
RXh0ZW5zaW9ucyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7CisgICAgdm9pZCBzeW5jaHJv
bml6ZVN5c3RlbUxhbmd1YWdlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KTsKIAorcHJpdmF0
ZToKKyAgICAvLyBDdXN0b20gJ3JlcXVpcmVkRmVhdHVyZXMnIHByb3BlcnR5CisgICAgc3RhdGlj
IGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogcmVxdWlyZWRGZWF0dXJlc1Byb3BlcnR5SW5mbygpOwog
ICAgIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdTdHJpbmdMaXN0PiBtX3Jl
cXVpcmVkRmVhdHVyZXM7CisKKyAgICAvLyBDdXN0b20gJ3JlcXVpcmVkRXh0ZW5zaW9ucycgcHJv
cGVydHkKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiByZXF1aXJlZEV4dGVuc2lv
bnNQcm9wZXJ0eUluZm8oKTsKICAgICBTVkdTeW5jaHJvbml6YWJsZUFuaW1hdGVkUHJvcGVydHk8
U1ZHU3RyaW5nTGlzdD4gbV9yZXF1aXJlZEV4dGVuc2lvbnM7CisKKyAgICAvLyBDdXN0b20gJ3N5
c3RlbUxhbmd1YWdlJyBwcm9wZXJ0eQorICAgIHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8q
IHN5c3RlbUxhbmd1YWdlUHJvcGVydHlJbmZvKCk7CiAgICAgU1ZHU3luY2hyb25pemFibGVBbmlt
YXRlZFByb3BlcnR5PFNWR1N0cmluZ0xpc3Q+IG1fc3lzdGVtTGFuZ3VhZ2U7CiB9OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAkocmV2aXNp
b24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjQgKzM4LDU4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9F
TlVNRVJBVElPTihTVkdUZXh0Q29udGVudEVsZW1lbnQsIFNWR05hbWVzOjpsZW5ndGhBZGp1c3RB
dHRyLCBMZW5ndGhBZGp1c3QsIGxlbmd0aEFkanVzdCwgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpT
VkdMZW5ndGhBZGp1c3RUeXBlKQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHVGV4dENvbnRl
bnRFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisvLyBEZWZp
bmUgY3VzdG9tIGFuaW1hdGVkIHByb3BlcnR5ICd0ZXh0TGVuZ3RoJy4KK2NvbnN0IFNWR1Byb3Bl
cnR5SW5mbyogU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojp0ZXh0TGVuZ3RoUHJvcGVydHlJbmZvKCkK
K3sKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBzX3Byb3BlcnR5SW5mbyA9IDA7
CisgICAgaWYgKCFzX3Byb3BlcnR5SW5mbykgeworICAgICAgICBzX3Byb3BlcnR5SW5mbyA9IG5l
dyBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6dGV4dExlbmd0aEF0dHIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6dGV4dExlbmd0
aEF0dHIubG9jYWxOYW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzeW5jaHJvbml6ZVRleHRMZW5ndGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU1ZHVGV4dENvbnRl
bnRFbGVtZW50Ojpsb29rdXBPckNyZWF0ZVRleHRMZW5ndGhXcmFwcGVyKTsKKyAgICB9CisgICAg
cmV0dXJuIHNfcHJvcGVydHlJbmZvOworfQorCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVS
VElFUworICAgIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdUZXh0Q29udGVudEVsZW1l
bnQsIFNWR05hbWVzOjpsZW5ndGhBZGp1c3RBdHRyLCBMZW5ndGhBZGp1c3QsIGxlbmd0aEFkanVz
dCwgTGVuZ3RoQWRqdXN0VHlwZSkKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdUZXh0
Q29udGVudEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwg
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VO
RF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR1RleHRDb250ZW50RWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWSh0ZXh0TGVuZ3RoKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKGxlbmd0aEFkanVzdCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVsZW1lbnQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElF
UwogCiBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OlNWR1RleHRDb250ZW50RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHls
ZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAgICwgbV9zcGVjaWZpZWRUZXh0TGVuZ3Ro
KExlbmd0aE1vZGVPdGhlcikKICAgICAsIG1fdGV4dExlbmd0aChMZW5ndGhNb2RlT3RoZXIpCi0g
ICAgLCBtX2xlbmd0aEFkanVzdChMRU5HVEhBREpVU1RfU1BBQ0lORykKKyAgICAsIG1fc3BlY2lm
aWVkVGV4dExlbmd0aChMZW5ndGhNb2RlT3RoZXIpCisgICAgLCBtX2xlbmd0aEFkanVzdChMZW5n
dGhBZGp1c3RTcGFjaW5nKQogeworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZH
VGV4dENvbnRlbnRFbGVtZW50KCk7CiB9CiAKLXZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojpz
eW5jaHJvbml6ZVRleHRMZW5ndGgoKQordm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN5bmNo
cm9uaXplVGV4dExlbmd0aCh2b2lkKiBjb250ZXh0RWxlbWVudCkKIHsKLSAgICBpZiAoIW1fdGV4
dExlbmd0aC5zaG91bGRTeW5jaHJvbml6ZSkKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwor
ICAgIFNWR1RleHRDb250ZW50RWxlbWVudCogb3duZXJUeXBlID0gc3RhdGljX2Nhc3Q8U1ZHVGV4
dENvbnRlbnRFbGVtZW50Kj4oY29udGV4dEVsZW1lbnQpOworICAgIGlmICghb3duZXJUeXBlLT5t
X3RleHRMZW5ndGguc2hvdWxkU3luY2hyb25pemUpCiAgICAgICAgIHJldHVybjsKLSAgICBBdG9t
aWNTdHJpbmcgdmFsdWUoU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTGVuZ3RoPjo6dG9TdHJpbmcobV9z
cGVjaWZpZWRUZXh0TGVuZ3RoKSk7Ci0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXpl
cjx0cnVlPjo6c3luY2hyb25pemUodGhpcywgU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyLCB2YWx1
ZSk7CisgICAgQXRvbWljU3RyaW5nIHZhbHVlKFNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aD46
OnRvU3RyaW5nKG93bmVyVHlwZS0+bV9zcGVjaWZpZWRUZXh0TGVuZ3RoKSk7CisgICAgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUob3duZXJUeXBlLCB0
ZXh0TGVuZ3RoUHJvcGVydHlJbmZvKCktPmF0dHJpYnV0ZU5hbWUsIHZhbHVlKTsKK30KKworUGFz
c1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBTVkdUZXh0Q29udGVudEVsZW1lbnQ6Omxvb2t1
cE9yQ3JlYXRlVGV4dExlbmd0aFdyYXBwZXIodm9pZCogY29udGV4dEVsZW1lbnQpCit7CisgICAg
QVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQqIG93bmVy
VHlwZSA9IHN0YXRpY19jYXN0PFNWR1RleHRDb250ZW50RWxlbWVudCo+KGNvbnRleHRFbGVtZW50
KTsKKyAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVy
PFNWR1RleHRDb250ZW50RWxlbWVudCwgU1ZHQW5pbWF0ZWRMZW5ndGgsIFNWR0xlbmd0aCwgdHJ1
ZT4KKyAgICAgICAgICAgKG93bmVyVHlwZSwgdGV4dExlbmd0aFByb3BlcnR5SW5mbygpLCBvd25l
clR5cGUtPm1fdGV4dExlbmd0aC52YWx1ZSk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IFNWR1RleHRDb250ZW50RWxlbWVudDo6dGV4dExlbmd0aEFuaW1hdGVkKCkKQEAgLTY4
LDcgKzEwMiw4IEBAIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IFNWR1RleHRDb24KICAg
ICB9CiAKICAgICBtX3RleHRMZW5ndGguc2hvdWxkU3luY2hyb25pemUgPSB0cnVlOwotICAgIHJl
dHVybiBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBPckNyZWF0ZVdyYXBwZXI8U1ZHQW5pbWF0
ZWRMZW5ndGgsIFNWR0xlbmd0aD4odGhpcywgU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyLCBTVkdO
YW1lczo6dGV4dExlbmd0aEF0dHIubG9jYWxOYW1lKCksIG1fdGV4dExlbmd0aC52YWx1ZSk7Cisg
ICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHQW5pbWF0ZWRMZW5ndGg+KGxvb2t1cE9y
Q3JlYXRlVGV4dExlbmd0aFdyYXBwZXIodGhpcykpOworCiB9CiAKIHVuc2lnbmVkIFNWR1RleHRD
b250ZW50RWxlbWVudDo6Z2V0TnVtYmVyT2ZDaGFycygpIGNvbnN0CkBAIC0yMDIsNyArMjM3LDcg
QEAgdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnBhcnNlTWFwcGVkQQogICAgIH0KIAogICAg
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIpIHsKLSAgICAg
ICAgU1ZHTGVuZ3RoQWRqdXN0VHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8
U1ZHTGVuZ3RoQWRqdXN0VHlwZT46OmZyb21TdHJpbmcoYXR0ci0+dmFsdWUoKSk7CisgICAgICAg
IExlbmd0aEFkanVzdFR5cGUgcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPExlbmd0
aEFkanVzdFR5cGU+Ojpmcm9tU3RyaW5nKGF0dHItPnZhbHVlKCkpOwogICAgICAgICBpZiAocHJv
cGVydHlWYWx1ZSA+IDApCiAgICAgICAgICAgICBzZXRMZW5ndGhBZGp1c3RCYXNlVmFsdWUocHJv
cGVydHlWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTIzNiw0NSArMjcxLDYgQEAgdm9pZCBT
VkdUZXh0Q29udGVudEVsZW1lbnQ6OnBhcnNlTWFwcGVkQQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCi12b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0g
YW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUxlbmd0aEFkanVzdCgpOwotICAgICAg
ICBzeW5jaHJvbml6ZVRleHRMZW5ndGgoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRp
ZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICgh
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1l
bnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpsZW5ndGhBZGp1c3RBdHRyKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplTGVuZ3RoQWRqdXN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplVGV4dExlbmd0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0
aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCiB2b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAo
IWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewpAQCAtMjk0LDE0ICsyOTAsNiBAQCB2
b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlCiAgICAgICAgIFJlbmRlclNW
R1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVu
ZGVyZXIpOwogfQogCi12b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCkKLXsKLSAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsUGFzc2Vk
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwot
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp0ZXh0TGVuZ3Ro
QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6bGVuZ3RoQWRqdXN0QXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci19Ci0K
IGJvb2wgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29u
c3QKIHsKICAgICAvLyBBbnkgZWxlbWVudCBvZiB0aGUgPHRleHQ+IHN1YnRyZWUgaXMgYWR2ZXJ0
aXplZCBhcyB1c2luZyByZWxhdGl2ZSBsZW5ndGhzLgpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRDb250ZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE1
ICszMiw1MSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2VudW0gTGVuZ3RoQWRqdXN0VHlw
ZSB7CisgICAgTGVuZ3RoQWRqdXN0VW5rbm93biwKKyAgICBMZW5ndGhBZGp1c3RTcGFjaW5nLAor
ICAgIExlbmd0aEFkanVzdFNwYWNpbmdBbmRHbHlwaHMKK307CisKK3RlbXBsYXRlPD4KK3N0cnVj
dCBTVkdQcm9wZXJ0eVRyYWl0czxMZW5ndGhBZGp1c3RUeXBlPiB7CisgICAgc3RhdGljIExlbmd0
aEFkanVzdFR5cGUgaGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJuIExlbmd0aEFkanVzdFNwYWNp
bmdBbmRHbHlwaHM7IH0KKworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoTGVuZ3RoQWRqdXN0
VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2Ug
TGVuZ3RoQWRqdXN0VW5rbm93bjoKKyAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwor
ICAgICAgICBjYXNlIExlbmd0aEFkanVzdFNwYWNpbmc6CisgICAgICAgICAgICByZXR1cm4gInNw
YWNpbmciOworICAgICAgICBjYXNlIExlbmd0aEFkanVzdFNwYWNpbmdBbmRHbHlwaHM6CisgICAg
ICAgICAgICByZXR1cm4gInNwYWNpbmdBbmRHbHlwaHMiOworICAgICAgICB9CisKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAg
IH0KKworICAgIHN0YXRpYyBMZW5ndGhBZGp1c3RUeXBlIGZyb21TdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICh2YWx1ZSA9PSAic3BhY2luZ0FuZEdseXBocyIp
CisgICAgICAgICAgICByZXR1cm4gTGVuZ3RoQWRqdXN0U3BhY2luZ0FuZEdseXBoczsKKyAgICAg
ICAgaWYgKHZhbHVlID09ICJzcGFjaW5nIikKKyAgICAgICAgICAgIHJldHVybiBMZW5ndGhBZGp1
c3RTcGFjaW5nOworICAgICAgICByZXR1cm4gTGVuZ3RoQWRqdXN0VW5rbm93bjsKKyAgICB9Cit9
OworCiBjbGFzcyBTVkdUZXh0Q29udGVudEVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0cywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdMYW5nU3BhY2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCB7
CiBwdWJsaWM6Ci0gICAgZW51bSBTVkdMZW5ndGhBZGp1c3RUeXBlIHsKLSAgICAgICAgTEVOR1RI
QURKVVNUX1VOS05PV04gICAgICAgICAgICA9IDAsCi0gICAgICAgIExFTkdUSEFESlVTVF9TUEFD
SU5HICAgICAgICAgICAgPSAxLAotICAgICAgICBMRU5HVEhBREpVU1RfU1BBQ0lOR0FOREdMWVBI
UyAgID0gMgorICAgIC8vIEZvcndhcmQgZGVjbGFyZSB0aGVzZSBlbnVtcyBpbiB0aGUgdzNjIG5h
bWluZyBzY2hlbWUsIGZvciBJREwgZ2VuZXJhdGlvbgorICAgIGVudW0geworICAgICAgICBMRU5H
VEhBREpVU1RfVU5LTk9XTiA9IExlbmd0aEFkanVzdFVua25vd24sCisgICAgICAgIExFTkdUSEFE
SlVTVF9TUEFDSU5HID0gTGVuZ3RoQWRqdXN0U3BhY2luZywKKyAgICAgICAgTEVOR1RIQURKVVNU
X1NQQUNJTkdBTkRHTFlQSFMgPSBMZW5ndGhBZGp1c3RTcGFjaW5nQW5kR2x5cGhzCiAgICAgfTsK
IAogICAgIHVuc2lnbmVkIGdldE51bWJlck9mQ2hhcnMoKSBjb25zdDsKQEAgLTU5LDYgKzk1LDcg
QEAgcHVibGljOgogICAgIC8vIGFzIGl0cyBnZXR0ZXIgbmVlZHMgc3BlY2lhbCBoYW5kbGluZyAo
cmV0dXJuIGdldENvbXB1dGVkVGV4dExlbmd0aCgpLCBpbnN0ZWFkIG9mIG1fdGV4dExlbmd0aCku
CiAgICAgU1ZHTGVuZ3RoJiBzcGVjaWZpZWRUZXh0TGVuZ3RoKCkgeyByZXR1cm4gbV9zcGVjaWZp
ZWRUZXh0TGVuZ3RoOyB9CiAgICAgUGFzc1JlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gdGV4dExl
bmd0aEFuaW1hdGVkKCk7CisgICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogdGV4dExl
bmd0aFByb3BlcnR5SW5mbygpOwogCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHVGV4dENvbnRlbnRFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwpAQCAtNjgsOCArMTA1LDYgQEAg
cHJvdGVjdGVkOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotICAgIHZvaWQgZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJik7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhh
c1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5n
ZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwg
Tm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CkBAIC03Nyw0
MyArMTEyLDIxIEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzVGV4
dENvbnRlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAvLyBBbmltYXRlZCBwcm9w
ZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICB2b2lkIHN5bmNocm9uaXplVGV4dExlbmd0aCgpOwotICAg
IFNWR0xlbmd0aCBtX3NwZWNpZmllZFRleHRMZW5ndGg7CisgICAgLy8gQ3VzdG9tICd0ZXh0TGVu
Z3RoJyBwcm9wZXJ0eQorICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXplVGV4dExlbmd0aCh2b2lk
KiBjb250ZXh0RWxlbWVudCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eT4gbG9va3VwT3JDcmVhdGVUZXh0TGVuZ3RoV3JhcHBlcih2b2lkKiBjb250ZXh0RWxlbWVu
dCk7CiAgICAgbXV0YWJsZSBTVkdTeW5jaHJvbml6YWJsZUFuaW1hdGVkUHJvcGVydHk8U1ZHTGVu
Z3RoPiBtX3RleHRMZW5ndGg7Ci0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihMZW5n
dGhBZGp1c3QsIGxlbmd0aEFkanVzdCwgU1ZHTGVuZ3RoQWRqdXN0VHlwZSkKLQotICAgIC8vIFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4o
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkgCi19
OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVGV4dENvbnRlbnRF
bGVtZW50OjpTVkdMZW5ndGhBZGp1c3RUeXBlPiB7Ci0gICAgc3RhdGljIFNWR1RleHRDb250ZW50
RWxlbWVudDo6U1ZHTGVuZ3RoQWRqdXN0VHlwZSBoaWdoZXN0RW51bVZhbHVlKCkgeyByZXR1cm4g
U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpMRU5HVEhBREpVU1RfU1BBQ0lOR0FOREdMWVBIUzsgfQot
Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhTVkdUZXh0Q29udGVudEVsZW1lbnQ6OlNWR0xl
bmd0aEFkanVzdFR5cGUgdHlwZSkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAodHlwZSkgewotICAg
ICAgICBjYXNlIFNWR1RleHRDb250ZW50RWxlbWVudDo6TEVOR1RIQURKVVNUX1VOS05PV046Ci0g
ICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICAgICAgY2FzZSBTVkdUZXh0Q29u
dGVudEVsZW1lbnQ6OkxFTkdUSEFESlVTVF9TUEFDSU5HOgotICAgICAgICAgICAgcmV0dXJuICJz
cGFjaW5nIjsKLSAgICAgICAgY2FzZSBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OkxFTkdUSEFESlVT
VF9TUEFDSU5HQU5ER0xZUEhTOgotICAgICAgICAgICAgcmV0dXJuICJzcGFjaW5nQW5kR2x5cGhz
IjsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICB9CisgICAgU1ZHTGVuZ3RoIG1fc3BlY2lmaWVkVGV4
dExlbmd0aDsKIAotICAgIHN0YXRpYyBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OlNWR0xlbmd0aEFk
anVzdFR5cGUgZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQotICAgIHsKLSAgICAgICAg
aWYgKHZhbHVlID09ICJzcGFjaW5nQW5kR2x5cGhzIikKLSAgICAgICAgICAgIHJldHVybiBTVkdU
ZXh0Q29udGVudEVsZW1lbnQ6OkxFTkdUSEFESlVTVF9TUEFDSU5HQU5ER0xZUEhTOwotICAgICAg
ICBpZiAodmFsdWUgPT0gInNwYWNpbmciKQotICAgICAgICAgICAgcmV0dXJuIFNWR1RleHRDb250
ZW50RWxlbWVudDo6TEVOR1RIQURKVVNUX1NQQUNJTkc7Ci0gICAgICAgIHJldHVybiBTVkdUZXh0
Q29udGVudEVsZW1lbnQ6OkxFTkdUSEFESlVTVF9VTktOT1dOOwotICAgIH0KKyAgICBCRUdJTl9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGV4dENvbnRlbnRFbGVtZW50KQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKExlbmd0aEFkanVzdCwgbGVuZ3RoQWRqdXN0
LCBMZW5ndGhBZGp1c3RUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkgCisgICAg
RU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3lu
Y2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJl
ZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1M
YW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0K
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUZXh0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMyArMzUsMjAgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVG
SU5FX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFNWR1RleHRFbGVtZW50LCBTVkdOYW1lczo6dHJh
bnNmb3JtQXR0ciwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCitCRUdJTl9ERUZJTkVfQU5JTUFURURf
UFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChTVkdUZXh0RWxl
bWVudCwgU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIsIFRyYW5zZm9ybSwgdHJhbnNmb3JtKQorQkVH
SU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdUZXh0RWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWSh0cmFuc2Zvcm0pCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9Q
RVJUSUVTCiAKIGlubGluZSBTVkdUZXh0RWxlbWVudDo6U1ZHVGV4dEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR1RleHRQb3NpdGlv
bmluZ0VsZW1lbnQodGFnTmFtZSwgZG9jKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05h
bWVzOjp0ZXh0VGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdUZXh0
RWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR1RleHRFbGVtZW50PiBTVkdUZXh0RWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCkKQEAgLTE2MCw0MSArMTY3LDYgQEAgdm9pZCBTVkdUZXh0RWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR1RleHRFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQot
ewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
VHJhbnNmb3JtKCk7Ci0gICAgICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN5bmNocm9u
aXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGV4dFBvc2l0
aW9uaW5nRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRyYW5zZm9ybUF0
dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVUcmFuc2Zvcm0oKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgU1ZHVGV4dEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkK
LXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBz
X2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHVGV4dEVsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKLQotICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmZpbGxQYXNzZWRBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLCBB
bmltYXRlZFRyYW5zZm9ybUxpc3QpOwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2
LDEyICs1NiwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0
ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKICAgICAgICAgICAgIAogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVh
bCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAK
LSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1B
VEVEX1RSQU5TRk9STV9MSVNUKFRyYW5zZm9ybSwgdHJhbnNmb3JtKQorICAgIEJFR0lOX0RFQ0xB
UkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9UUkFOU0ZPUk1fTElTVChUcmFuc2Zvcm0sIHRyYW5zZm9ybSkKKyAgICBFTkRfREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICAvLyBVc2VkIGJ5IDxhbmltYXRlTW90aW9u
PgogICAgIE93blB0cjxBZmZpbmVUcmFuc2Zvcm0+IG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAJKHJldmlzaW9u
IDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDE5ICszMSwyOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RI
KFNWR1RleHRQYXRoRWxlbWVudCwgU1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0ciwgU3RhcnRPZmZz
ZXQsIHN0YXJ0T2Zmc2V0KQotREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR1RleHRQYXRo
RWxlbWVudCwgU1ZHTmFtZXM6Om1ldGhvZEF0dHIsIE1ldGhvZCwgbWV0aG9kLCBTVkdUZXh0UGF0
aE1ldGhvZFR5cGUpCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHVGV4dFBhdGhFbGVt
ZW50LCBTVkdOYW1lczo6c3BhY2luZ0F0dHIsIFNwYWNpbmcsIHNwYWNpbmcsIFNWR1RleHRQYXRo
U3BhY2luZ1R5cGUpCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR1RleHRQYXRoRWxlbWVudCwg
WExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCitCRUdJTl9ERUZJTkVfQU5JTUFURURf
UFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHVGV4dFBhdGhFbGVtZW50
LCBTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyLCBTdGFydE9mZnNldCwgc3RhcnRPZmZzZXQpCisg
ICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR1RleHRQYXRoRWxlbWVudCwgU1ZHTmFt
ZXM6Om1ldGhvZEF0dHIsIE1ldGhvZCwgbWV0aG9kLCBTVkdUZXh0UGF0aE1ldGhvZFR5cGUpCisg
ICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR1RleHRQYXRoRWxlbWVudCwgU1ZHTmFt
ZXM6OnNwYWNpbmdBdHRyLCBTcGFjaW5nLCBzcGFjaW5nLCBTVkdUZXh0UGF0aFNwYWNpbmdUeXBl
KQorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHVGV4dFBhdGhFbGVtZW50LCBYTGlua05h
bWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElF
UworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1RleHRQYXRoRWxlbWVu
dCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShzdGFydE9mZnNldCkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShtZXRob2QpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc3BhY2luZykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShocmVmKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR1RleHRDb250ZW50RWxlbWVudCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJU
SUVTCiAKIGlubGluZSBTVkdUZXh0UGF0aEVsZW1lbnQ6OlNWR1RleHRQYXRoRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdU
ZXh0Q29udGVudEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3N0YXJ0T2Zmc2V0
KExlbmd0aE1vZGVPdGhlcikKLSAgICAsIG1fbWV0aG9kKFNWR19URVhUUEFUSF9NRVRIT0RUWVBF
X0FMSUdOKQotICAgICwgbV9zcGFjaW5nKFNWR19URVhUUEFUSF9TUEFDSU5HVFlQRV9FWEFDVCkK
KyAgICAsIG1fbWV0aG9kKFRleHRQYXRoTWV0aG9kQWxpZ24pCisgICAgLCBtX3NwYWNpbmcoVGV4
dFBhdGhTcGFjaW5nRXhhY3QpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRl
eHRQYXRoVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdUZXh0UGF0
aEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdUZXh0UGF0aEVsZW1lbnQ+IFNWR1RleHRQ
YXRoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKQEAgLTExMiw2MiArMTIyLDYgQEAgdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYQogICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91
dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKG9iamVjdCk7CiB9CiAKLXZvaWQgU1ZHVGV4
dFBhdGhFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplU3RhcnRPZmZzZXQoKTsKLSAgICAgICAgc3luY2hyb25pemVNZXRob2QoKTsKLSAg
ICAgICAgc3luY2hyb25pemVTcGFjaW5nKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwot
ICAgICAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5h
bWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplU3RhcnRPZmZzZXQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1ldGhvZEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25p
emVNZXRob2QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnNwYWNpbmdBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplU3BhY2lu
ZygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGlmIChTVkdVUklSZWZlcmVu
Y2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSHJl
ZigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdUZXh0UGF0aEVsZW1lbnQ6OmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAo
KSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQg
U1ZHVGV4dFBhdGhFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewot
ICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdUZXh0Q29u
dGVudEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjpzdGFydE9mZnNldEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om1ldGhvZEF0dHIsIEFuaW1hdGVkRW51
bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
c3BhY2luZ0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotfQot
CiBSZW5kZXJPYmplY3QqIFNWR1RleHRQYXRoRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJl
bmRlclNWR1RleHRQYXRoKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQ
YXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0
aEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4
dFBhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcxICsyOCwyOSBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBlbnVtIFNWR1RleHRQYXRoTWV0aG9kVHlwZSB7Ci0gICAgU1ZHX1RF
WFRQQVRIX01FVEhPRFRZUEVfVU5LTk9XTiA9IDAsCi0gICAgU1ZHX1RFWFRQQVRIX01FVEhPRFRZ
UEVfQUxJR04gPSAxLAotICAgIFNWR19URVhUUEFUSF9NRVRIT0RUWVBFX1NUUkVUQ0ggPSAyCisg
ICAgVGV4dFBhdGhNZXRob2RVbmtub3duID0gMCwKKyAgICBUZXh0UGF0aE1ldGhvZEFsaWduID0g
MSwKKyAgICBUZXh0UGF0aE1ldGhvZFN0cmV0Y2ggPSAyCiB9OwogCiBlbnVtIFNWR1RleHRQYXRo
U3BhY2luZ1R5cGUgewotICAgIFNWR19URVhUUEFUSF9TUEFDSU5HVFlQRV9VTktOT1dOID0gMCwK
LSAgICBTVkdfVEVYVFBBVEhfU1BBQ0lOR1RZUEVfQVVUTyA9IDEsCi0gICAgU1ZHX1RFWFRQQVRI
X1NQQUNJTkdUWVBFX0VYQUNUID0gMgotfTsKLQotY2xhc3MgU1ZHVGV4dFBhdGhFbGVtZW50IDog
cHVibGljIFNWR1RleHRDb250ZW50RWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1YmxpYyBTVkdVUklSZWZlcmVuY2UgewotcHVibGljOgotICAgIC8vIEZvcndhcmQgZGVjbGFy
ZSB0aGVzZSBlbnVtcyBpbiB0aGUgdzNjIG5hbWluZyBzY2hlbWUsIGZvciBJREwgZ2VuZXJhdGlv
bgotICAgIGVudW0gewotICAgICAgICBURVhUUEFUSF9NRVRIT0RUWVBFX1VOS05PV04gPSBTVkdf
VEVYVFBBVEhfTUVUSE9EVFlQRV9VTktOT1dOLAotICAgICAgICBURVhUUEFUSF9NRVRIT0RUWVBF
X0FMSUdOID0gU1ZHX1RFWFRQQVRIX01FVEhPRFRZUEVfQUxJR04sCi0gICAgICAgIFRFWFRQQVRI
X01FVEhPRFRZUEVfU1RSRVRDSCA9IFNWR19URVhUUEFUSF9NRVRIT0RUWVBFX1NUUkVUQ0gsCi0g
ICAgICAgIFRFWFRQQVRIX1NQQUNJTkdUWVBFX1VOS05PV04gPSBTVkdfVEVYVFBBVEhfU1BBQ0lO
R1RZUEVfVU5LTk9XTiwKLSAgICAgICAgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfQVVUTyA9IFNWR19U
RVhUUEFUSF9TUEFDSU5HVFlQRV9BVVRPLAotICAgICAgICBURVhUUEFUSF9TUEFDSU5HVFlQRV9F
WEFDVCA9IFNWR19URVhUUEFUSF9TUEFDSU5HVFlQRV9FWEFDVAotICAgIH07Ci0KLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTVkdUZXh0UGF0aEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQqKTsKLSAKLXByaXZhdGU6Ci0gICAgU1ZHVGV4dFBhdGhFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotCi0gICAgdmlydHVhbCB2b2lkIGluc2Vy
dGVkSW50b0RvY3VtZW50KCk7Ci0KLSAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKik7Ci0gICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7Ci0gICAgdmlydHVh
bCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OwotICAgIHZpcnR1
YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7Ci0K
LSAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwotCi0gICAg
Ly8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEgoU3RhcnRPZmZzZXQsIHN0YXJ0T2Zmc2V0KQotICAgIERFQ0xBUkVfQU5JTUFURURfRU5V
TUVSQVRJT04oTWV0aG9kLCBtZXRob2QsIFNWR1RleHRQYXRoTWV0aG9kVHlwZSkKLSAgICBERUNM
QVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNwYWNpbmcsIHNwYWNpbmcsIFNWR1RleHRQYXRoU3Bh
Y2luZ1R5cGUpCi0KLSAgICAvLyBTVkdVUklSZWZlcmVuY2UKLSAgICBERUNMQVJFX0FOSU1BVEVE
X1NUUklORyhIcmVmLCBocmVmKQorICAgIFRleHRQYXRoU3BhY2luZ1Vua25vd24gPSAwLAorICAg
IFRleHRQYXRoU3BhY2luZ0F1dG8gPSAxLAorICAgIFRleHRQYXRoU3BhY2luZ0V4YWN0ID0gMgog
fTsKIAogdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1RleHRQYXRoTWV0
aG9kVHlwZT4gewotICAgIHN0YXRpYyBTVkdUZXh0UGF0aE1ldGhvZFR5cGUgaGlnaGVzdEVudW1W
YWx1ZSgpIHsgcmV0dXJuIFNWR19URVhUUEFUSF9NRVRIT0RUWVBFX1NUUkVUQ0g7IH0KKyAgICBz
dGF0aWMgU1ZHVGV4dFBhdGhNZXRob2RUeXBlIGhpZ2hlc3RFbnVtVmFsdWUoKSB7IHJldHVybiBU
ZXh0UGF0aE1ldGhvZFN0cmV0Y2g7IH0KIAogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoU1ZH
VGV4dFBhdGhNZXRob2RUeXBlIHR5cGUpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsK
LSAgICAgICAgY2FzZSBTVkdfVEVYVFBBVEhfTUVUSE9EVFlQRV9VTktOT1dOOgorICAgICAgICBj
YXNlIFRleHRQYXRoTWV0aG9kVW5rbm93bjoKICAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwotICAgICAgICBjYXNlIFNWR19URVhUUEFUSF9NRVRIT0RUWVBFX0FMSUdOOgorICAgICAg
ICBjYXNlIFRleHRQYXRoTWV0aG9kQWxpZ246CiAgICAgICAgICAgICByZXR1cm4gImFsaWduIjsK
LSAgICAgICAgY2FzZSBTVkdfVEVYVFBBVEhfTUVUSE9EVFlQRV9TVFJFVENIOgorICAgICAgICBj
YXNlIFRleHRQYXRoTWV0aG9kU3RyZXRjaDoKICAgICAgICAgICAgIHJldHVybiAic3RyZXRjaCI7
CiAgICAgICAgIH0KICAgICAKQEAgLTEwMywyNSArNjEsMjUgQEAgc3RydWN0IFNWR1Byb3BlcnR5
VHJhaXRzPFNWR1RleHRQYXRoTWV0aAogICAgIHN0YXRpYyBTVkdUZXh0UGF0aE1ldGhvZFR5cGUg
ZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKHZhbHVl
ID09ICJhbGlnbiIpCi0gICAgICAgICAgICByZXR1cm4gU1ZHX1RFWFRQQVRIX01FVEhPRFRZUEVf
QUxJR047CisgICAgICAgICAgICByZXR1cm4gVGV4dFBhdGhNZXRob2RBbGlnbjsKICAgICAgICAg
aWYgKHZhbHVlID09ICJzdHJldGNoIikKLSAgICAgICAgICAgIHJldHVybiBTVkdfVEVYVFBBVEhf
TUVUSE9EVFlQRV9TVFJFVENIOwotICAgICAgICByZXR1cm4gU1ZHX1RFWFRQQVRIX01FVEhPRFRZ
UEVfVU5LTk9XTjsKKyAgICAgICAgICAgIHJldHVybiBUZXh0UGF0aE1ldGhvZFN0cmV0Y2g7Cisg
ICAgICAgIHJldHVybiBUZXh0UGF0aE1ldGhvZFVua25vd247CiAgICAgfQogfTsKIAogdGVtcGxh
dGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1RleHRQYXRoU3BhY2luZ1R5cGU+IHsK
LSAgICBzdGF0aWMgU1ZHVGV4dFBhdGhTcGFjaW5nVHlwZSBoaWdoZXN0RW51bVZhbHVlKCkgeyBy
ZXR1cm4gU1ZHX1RFWFRQQVRIX1NQQUNJTkdUWVBFX0VYQUNUOyB9CisgICAgc3RhdGljIFNWR1Rl
eHRQYXRoU3BhY2luZ1R5cGUgaGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJuIFRleHRQYXRoU3Bh
Y2luZ0V4YWN0OyB9CiAKICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFNWR1RleHRQYXRoU3Bh
Y2luZ1R5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBj
YXNlIFNWR19URVhUUEFUSF9TUEFDSU5HVFlQRV9VTktOT1dOOgorICAgICAgICBjYXNlIFRleHRQ
YXRoU3BhY2luZ1Vua25vd246CiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAg
ICAgICAgY2FzZSBTVkdfVEVYVFBBVEhfU1BBQ0lOR1RZUEVfQVVUTzoKKyAgICAgICAgY2FzZSBU
ZXh0UGF0aFNwYWNpbmdBdXRvOgogICAgICAgICAgICAgcmV0dXJuICJhdXRvIjsKLSAgICAgICAg
Y2FzZSBTVkdfVEVYVFBBVEhfU1BBQ0lOR1RZUEVfRVhBQ1Q6CisgICAgICAgIGNhc2UgVGV4dFBh
dGhTcGFjaW5nRXhhY3Q6CiAgICAgICAgICAgICByZXR1cm4gImV4YWN0IjsKICAgICAgICAgfQog
CkBAIC0xMzIsMTMgKzkwLDUxIEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdUZXh0UGF0
aFNwYWMKICAgICBzdGF0aWMgU1ZHVGV4dFBhdGhTcGFjaW5nVHlwZSBmcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYgdmFsdWUpCiAgICAgewogICAgICAgICBpZiAodmFsdWUgPT0gImF1dG8iKQotICAg
ICAgICAgICAgcmV0dXJuIFNWR19URVhUUEFUSF9TUEFDSU5HVFlQRV9BVVRPOworICAgICAgICAg
ICAgcmV0dXJuIFRleHRQYXRoU3BhY2luZ0F1dG87CiAgICAgICAgIGlmICh2YWx1ZSA9PSAiZXhh
Y3QiKQotICAgICAgICAgICAgcmV0dXJuIFNWR19URVhUUEFUSF9TUEFDSU5HVFlQRV9FWEFDVDsK
LSAgICAgICAgcmV0dXJuIFNWR19URVhUUEFUSF9TUEFDSU5HVFlQRV9VTktOT1dOOworICAgICAg
ICAgICAgcmV0dXJuIFRleHRQYXRoU3BhY2luZ0V4YWN0OworICAgICAgICByZXR1cm4gVGV4dFBh
dGhTcGFjaW5nVW5rbm93bjsKICAgICB9CiB9OwogCitjbGFzcyBTVkdUZXh0UGF0aEVsZW1lbnQg
OiBwdWJsaWMgU1ZHVGV4dENvbnRlbnRFbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIFNWR1VSSVJlZmVyZW5jZSB7CitwdWJsaWM6CisgICAgLy8gRm9yd2FyZCBkZWNs
YXJlIHRoZXNlIGVudW1zIGluIHRoZSB3M2MgbmFtaW5nIHNjaGVtZSwgZm9yIElETCBnZW5lcmF0
aW9uCisgICAgZW51bSB7CisgICAgICAgIFRFWFRQQVRIX01FVEhPRFRZUEVfVU5LTk9XTiA9IFRl
eHRQYXRoTWV0aG9kVW5rbm93biwKKyAgICAgICAgVEVYVFBBVEhfTUVUSE9EVFlQRV9BTElHTiA9
IFRleHRQYXRoTWV0aG9kQWxpZ24sCisgICAgICAgIFRFWFRQQVRIX01FVEhPRFRZUEVfU1RSRVRD
SCA9IFRleHRQYXRoTWV0aG9kU3RyZXRjaCwKKyAgICAgICAgVEVYVFBBVEhfU1BBQ0lOR1RZUEVf
VU5LTk9XTiA9IFRleHRQYXRoU3BhY2luZ1Vua25vd24sCisgICAgICAgIFRFWFRQQVRIX1NQQUNJ
TkdUWVBFX0FVVE8gPSBUZXh0UGF0aFNwYWNpbmdBdXRvLAorICAgICAgICBURVhUUEFUSF9TUEFD
SU5HVFlQRV9FWEFDVCA9IFRleHRQYXRoU3BhY2luZ0V4YWN0CisgICAgfTsKKworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNWR1RleHRQYXRoRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCopOworIAorcHJpdmF0ZToKKyAgICBTVkdUZXh0UGF0aEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisKKyAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0
ZWRJbnRvRG9jdW1lbnQoKTsKKworICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShB
dHRyaWJ1dGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7CisKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNo
b3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVy
ZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOworCisgICAgdmlydHVhbCBi
b29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKKworICAgIEJFR0lOX0RFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0UGF0aEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKFN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9FTlVNRVJBVElPTihNZXRob2QsIG1ldGhvZCwgU1ZHVGV4dFBhdGhNZXRob2RU
eXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNwYWNpbmcsIHNwYWNp
bmcsIFNWR1RleHRQYXRoU3BhY2luZ1R5cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RS
SU5HKEhyZWYsIGhyZWYpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworfTsK
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmlu
Z0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNiArMzMsMjcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5F
X0FOSU1BVEVEX0xFTkdUSF9MSVNUKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR05hbWVz
Ojp4QXR0ciwgWCwgeCkKLURFRklORV9BTklNQVRFRF9MRU5HVEhfTElTVChTVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCi1ERUZJTkVfQU5JTUFURURfTEVO
R1RIX0xJU1QoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTmFtZXM6OmR4QXR0ciwgRHgs
IGR4KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSF9MSVNUKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQsIFNWR05hbWVzOjpkeUF0dHIsIER5LCBkeSkKLURFRklORV9BTklNQVRFRF9OVU1CRVJfTElT
VChTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdOYW1lczo6cm90YXRlQXR0ciwgUm90YXRl
LCByb3RhdGUpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9B
TklNQVRFRF9MRU5HVEhfTElTVChTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdOYW1lczo6
eEF0dHIsIFgsIHgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSF9MSVNUKFNWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKKyAgICBERUZJTkVfQU5JTUFU
RURfTEVOR1RIX0xJU1QoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTmFtZXM6OmR4QXR0
ciwgRHgsIGR4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEhfTElTVChTVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50LCBTVkdOYW1lczo6ZHlBdHRyLCBEeSwgZHkpCisgICAgREVGSU5FX0FOSU1B
VEVEX05VTUJFUl9MSVNUKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR05hbWVzOjpyb3Rh
dGVBdHRyLCBSb3RhdGUsIHJvdGF0ZSkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUwor
CitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1RleHRQb3NpdGlvbmluZ0Vs
ZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeCkKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1B
VEVEX1BST1BFUlRZKGR4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGR5
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHJvdGF0ZSkKKyAgICBSRUdJ
U1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0Q29udGVudEVsZW1lbnQpCitF
TkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBTVkdUZXh0UG9zaXRpb25pbmdFbGVt
ZW50OjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1RleHRDb250ZW50RWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkKIHsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQoKTsKIH0KIAogYm9vbCBTVkdUZXh0UG9zaXRpb25pbmdFbGVt
ZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
QEAgLTEzOSw2MiArMTUwLDYgQEAgdm9pZCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzdmdB
dHRyaQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR1RleHRQb3NpdGlv
bmluZ0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICBzeW5jaHJvbml6
ZUR4KCk7Ci0gICAgICAgIHN5bmNocm9uaXplRHkoKTsKLSAgICAgICAgc3luY2hyb25pemVSb3Rh
dGUoKTsKLSAgICAgICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1RleHRDb250ZW50RWxlbWVudDo6
c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplWCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjp5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZHhBdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplRHgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6ZHlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRHkoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
cm90YXRlQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVJvdGF0ZSgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCkK
LXsKLSAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0KLSAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0aExpc3Qp
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFu
aW1hdGVkTGVuZ3RoTGlzdCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjpkeEF0dHIsIEFuaW1hdGVkTGVuZ3RoTGlzdCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpkeUF0dHIsIEFuaW1hdGVkTGVuZ3RoTGlzdCk7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyb3RhdGVBdHRyLCBB
bmltYXRlZE51bWJlckxpc3QpOwotfQotCiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KiBTVkdU
ZXh0UG9zaXRpb25pbmdFbGVtZW50OjplbGVtZW50RnJvbVJlbmRlcmVyKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCiB7CiAgICAgaWYgKCFyZW5kZXJlcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCwxNSArMzgsMTQgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9u
aXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZvaWQgZmlsbFBhc3NlZEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJik7CiAK
LSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1B
VEVEX0xFTkdUSF9MSVNUKFgsIHgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEhfTElTVChZ
LCB5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIX0xJU1QoRHgsIGR4KQotICAgIERFQ0xB
UkVfQU5JTUFURURfTEVOR1RIX0xJU1QoRHksIGR5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVN
QkVSX0xJU1QoUm90YXRlLCByb3RhdGUpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfTEVOR1RIX0xJU1QoWCwgeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEhfTElT
VChZLCB5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSF9MSVNUKER4LCBkeCkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEhfTElTVChEeSwgZHkpCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfTlVNQkVSX0xJU1QoUm90YXRlLCByb3RhdGUpCisgICAgRU5EX0RFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYwLDE4ICs2MCw2IEBAIHZvaWQgU1ZHVGl0bGVFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm8K
ICAgICAgICAgZG9jdW1lbnQoKS0+c2V0VGl0bGVFbGVtZW50KFN0cmluZ1dpdGhEaXJlY3Rpb24o
dGV4dENvbnRlbnQoKSwgTFRSKSwgdGhpcyk7CiB9CiAKLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBTVkdUaXRsZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXA7CiB9CiAKLXZvaWQgU1ZHVGl0bGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQoteyAgICAgICAgCi0gICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbFBh
c3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkpOwotfQotCi19Ci0KLS8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDkgKzQwLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5v
ZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7
IHJldHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTUsMTMgKzU1LDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQg
cHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHVXNlRWxlbWVu
dCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdVc2VF
bGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNW
R1VzZUVsZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKLURFRklORV9B
TklNQVRFRF9MRU5HVEgoU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhlaWdo
dCwgaGVpZ2h0KQotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdVc2VFbGVtZW50LCBYTGlua05h
bWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1Vz
ZUVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RF
RklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdV
c2VFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xF
TkdUSChTVkdVc2VFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCisgICAgREVGSU5FX0FO
SU1BVEVEX0xFTkdUSChTVkdVc2VFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0aCwg
d2lkdGgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdVc2VFbGVtZW50LCBTVkdOYW1l
czo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQpCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklO
RyhTVkdVc2VFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKKyAgICBE
RUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdVc2VFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVH
SU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdVc2VFbGVtZW50KQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh3aWR0
aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShoZWlnaHQpCisgICAgUkVH
SVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVS
X1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5E
X1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1VzZUVsZW1lbnQ6OlNW
R1VzZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCkBAIC03Myw2ICs4NSw3IEBAIGlubGluZSBTVkdVc2VFbGVtZW50OjpTVkdVc2VFbGVtZW50
KGNvbnMKICAgICAsIG1fbmVlZHNTaGFkb3dUcmVlUmVjcmVhdGlvbihmYWxzZSkKIHsKICAgICBB
U1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6dXNlVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRl
ZFByb3BlcnRpZXNGb3JTVkdVc2VFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHVXNlRWxl
bWVudD4gU1ZHVXNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTI0Myw4MSArMjU2LDYgQEAgdm9pZCBTVkdVc2VFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
Ci12b2lkIFNWR1VzZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAg
ICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICBz
eW5jaHJvbml6ZVdpZHRoKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAg
IHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBzeW5jaHJv
bml6ZUhyZWYoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlz
LCBhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5j
aHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0
dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplWSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjp3aWR0aEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRB
dHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVVJJUmVmZXJl
bmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUhy
ZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdUZXN0czo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJv
cGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNW
R1VzZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXA7Ci19Ci0KLXZvaWQgU1ZHVXNlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAg
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVk
TGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Ondp
ZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJp
bmcpOwotfQotCiBzdGF0aWMgdm9pZCB1cGRhdGVDb250YWluZXJTaXplKFNWR0VsZW1lbnRJbnN0
YW5jZSogdGFyZ2V0SW5zdGFuY2UpCiB7CiAgICAgLy8gRGVwdGgtZmlyc3QgdXNlZCB0byB3cml0
ZSB0aGUgbWV0aG9kIGluIGVhcmx5IGV4aXQgc3R5bGUsIG5vIHBhcnRpY3VsYXIgb3RoZXIgcmVh
c29uLgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTYzLDkgKzYzLDYgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZWNh
bGNTdHlsZShTdHlsZUNoYW5nZSA9IE5vQ2hhbmdlKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwpAQCAtMTA2LDE3
ICsxMDMsMTkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUNvbnRhaW5lck9mZnNldHMoKTsK
ICAgICB2b2lkIHVwZGF0ZUNvbnRhaW5lclNpemVzKCk7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9w
ZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQotICAg
IERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoV2lkdGgsIHdpZHRoKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVp
Z2h0KQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJ
TkcoSHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHVXNlRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwg
eCkKKyAgICAJREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKKyAgICAJREVDTEFSRV9BTklN
QVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQorICAgIAlERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChI
ZWlnaHQsIGhlaWdodCkKKyAgICAJREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikK
KyAgICAJREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVElFUworCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVS
ZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVz
KHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25z
KCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5
bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KIAogICAgIGJvb2wgbV91cGRhdGVzQmxv
Y2tlZDsKICAgICBib29sIG1fbmVlZHNTaGFkb3dUcmVlUmVjcmVhdGlvbjsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNiAr
MzEsMjUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBk
ZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHVmlld0VsZW1lbnQsIFNWR05h
bWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKLURFRklORV9BTklNQVRFRF9SRUNUKFNW
R1ZpZXdFbGVtZW50LCBTVkdOYW1lczo6dmlld0JveEF0dHIsIFZpZXdCb3gsIHZpZXdCb3gpCi1E
RUZJTkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhTVkdWaWV3RWxlbWVudCwgU1ZHTmFt
ZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2
ZUFzcGVjdFJhdGlvKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJ
TkVfQU5JTUFURURfQk9PTEVBTihTVkdWaWV3RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKQorICAgIERFRklORV9BTklNQVRFRF9SRUNUKFNWR1ZpZXdFbGVtZW50
LCBTVkdOYW1lczo6dmlld0JveEF0dHIsIFZpZXdCb3gsIHZpZXdCb3gpCisgICAgREVGSU5FX0FO
SU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oU1ZHVmlld0VsZW1lbnQsIFNWR05hbWVzOjpwcmVz
ZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RS
YXRpbykKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR1ZpZXdFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkodmlld0JveCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgIFJFR0lTVEVSX1BBUkVOVF9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVsZW1lbnQpCitFTkRfUkVHSVNURVJfQU5JTUFU
RURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHVmlld0VsZW1lbnQ6OlNWR1ZpZXdFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNW
R1N0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3ZpZXdUYXJnZXQoU1ZH
TmFtZXM6OnZpZXdUYXJnZXRBdHRyKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVz
Ojp2aWV3VGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdWaWV3RWxl
bWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR1ZpZXdFbGVtZW50PiBTVkdWaWV3RWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
QEAgLTgyLDUxICs5MSw2IEBAIHZvaWQgU1ZHVmlld0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dXQKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdWaWV3RWxlbWVudDo6
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAg
ICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHRml0VG9WaWV3Qm94OjpzeW5jaHJv
bml6ZVByb3BlcnRpZXMoYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5j
aHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxl
ZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp2aWV3VGFyZ2V0QXR0cikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAg
U1ZHRml0VG9WaWV3Qm94OjpzeW5jaHJvbml6ZVByb3BlcnRpZXMoYXR0ck5hbWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdWaWV3RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4g
c19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdWaWV3RWxlbWVudDo6
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbFBhc3NlZEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBB
bmltYXRlZFJlY3QpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7
Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVmlld0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Vmlld0VsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Vmlld0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsMjAgKzQ4LDE0IEBAIHByaXZhdGU6
CiAgICAgLy8gRklYTUU6IHN2Z0F0dHJpYnV0ZUNoYW5nZWQgbWlzc2luZy4KICAgICBib29sIGlz
U3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7Ci0gICAgdmlydHVhbCB2b2lkIHN5
bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAg
dmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQm
KSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRp
b25zCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9B
TklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQpCi0gCi0gICAgLy8gU1ZHRml0VG9WaWV3Qm94Ci0gICAgREVDTEFSRV9BTklN
QVRFRF9SRUNUKFZpZXdCb3gsIHZpZXdCb3gpCi0gICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJW
RUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisg
ICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1ZpZXdFbGVtZW50KQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwg
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9SRUNU
KFZpZXdCb3gsIHZpZXdCb3gpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BF
Q1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgIEVO
RF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogICAgIFNWR1N0cmluZ0xpc3QgbV92aWV3
VGFyZ2V0OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcAkocmV2aXNpb24g
OTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCwxMyArMzAsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmlt
YXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1JFQ1QoU1ZHVmlld1Nw
ZWMsIFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgVmlld0JveCwgdmlld0JveCkKLURFRklORV9BTklN
QVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR1ZpZXdTcGVjLCBTVkdOYW1lczo6cHJlc2VydmVB
c3BlY3RSYXRpb0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8p
CitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9S
RUNUKFNWR1ZpZXdTcGVjLCBTVkdOYW1lczo6dmlld0JveEF0dHIsIFZpZXdCb3gsIHZpZXdCb3gp
CisgICAgREVGSU5FX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oU1ZHVmlld1NwZWMsIFNW
R05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJl
c2VydmVBc3BlY3RSYXRpbykKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJ
Tl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1ZpZXdTcGVjKQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHZpZXdCb3gpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkocHJlc2VydmVBc3BlY3RSYXRpbykKK0VORF9SRUdJU1RFUl9BTklNQVRF
RF9QUk9QRVJUSUVTCiAKIFNWR1ZpZXdTcGVjOjpTVkdWaWV3U3BlYyhTVkdFbGVtZW50KiBjb250
ZXh0RWxlbWVudCkKICAgICA6IG1fY29udGV4dEVsZW1lbnQoY29udGV4dEVsZW1lbnQpCiB7Cisg
ICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0
aWVzRm9yU1ZHVmlld1NwZWMoKTsKIH0KIAogdm9pZCBTVkdWaWV3U3BlYzo6c2V0VHJhbnNmb3Jt
KGNvbnN0IFN0cmluZyYgdHJhbnNmb3JtKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Zp
ZXdTcGVjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmgJ
KHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU1LDExICs1NSwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNW
R0VsZW1lbnQqIG1fY29udGV4dEVsZW1lbnQ7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBk
ZWNsYXJhdGlvbnMKLQotICAgIC8vIFNWR0ZpdFRvVmlld0JveAotICAgIERFQ0xBUkVfQU5JTUFU
RURfUkVDVChWaWV3Qm94LCB2aWV3Qm94KQotICAgIERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVB
U1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAg
IEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdWaWV3U3BlYykKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9SRUNUKFZpZXdCb3gsIHZpZXdCb3gpCisgICAgCURFQ0xBUkVfQU5J
TUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFz
cGVjdFJhdGlvKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogICAgIFNW
R1RyYW5zZm9ybUxpc3QgbV90cmFuc2Zvcm07CiAgICAgU3RyaW5nIG1fdmlld1RhcmdldFN0cmlu
ZzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRW51bWVy
YXRpb25Qcm9wZXJ0eVRlYXJPZmYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmgJKHJldmlz
aW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvblByb3BlcnR5VGVhck9mZi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw4
IEBAIHB1YmxpYzoKICAgICAgICAgU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmY8aW50
Pjo6c2V0QmFzZVZhbChwcm9wZXJ0eSwgZWMpOwogICAgIH0KIAorICAgIEVudW1UeXBlJiByYXdB
bmltYXRlZFZhbHVlKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxFbnVtVHlwZSY+KFNWR0Fu
aW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmPGludD46OnJhd0FuaW1hdGVkVmFsdWUoKSk7IH0K
KwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlU
ZWFyT2ZmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDEwIEBAIHB1YmxpYzoKICAgICBQcm9wZXJ0eVR5
cGUmIHZhbHVlcygpIHsgcmV0dXJuIG1fdmFsdWVzOyB9CiAgICAgTGlzdFdyYXBwZXJDYWNoZSYg
d3JhcHBlcnMoKSB7IHJldHVybiBtX3dyYXBwZXJzOyB9CiAKKyAgICAvLyBGSVhNRTogYW5pbVZh
bCBzdXBwb3J0LgorICAgIGJvb2wgaXNBbmltYXRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIFByb3BlcnR5VHlwZSYgcmF3QW5pbWF0ZWRWYWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWVz
OyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxNSArMjEs
MTQgQEAKICNkZWZpbmUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eV9oCiAKICNpZiBFTkFCTEUoU1ZHKQot
I2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5
RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZHUHJv
cGVydHlJbmZvLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBTVkdFbGVtZW50OwotY2xhc3MgU1ZHUHJvcGVydHk7CiAKIGNsYXNz
IFNWR0FuaW1hdGVkUHJvcGVydHkgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdBbmltYXRlZFByb3Bl
cnR5PiB7CiBwdWJsaWM6CkBAIC00NCw2ICs0Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNBbmltYXRlZExpc3RUZWFyT2ZmKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbVZhbCh2b2lkKikgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQogCiAgICAgLy8gQ2FjaGluZyBmYWNpbGl0aWVzLgogICAgIHR5cGVkZWYgSGFz
aE1hcDxTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24sIFJlZlB0cjxTVkdBbmltYXRlZFBy
b3BlcnR5PiwgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uSGFzaCwgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eURlc2NyaXB0aW9uSGFzaFRyYWl0cz4gQ2FjaGU7CkBAIC02MSwyMyArNjEsNDQgQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVGVhck9m
ZlR5cGUsIHR5cGVuYW1lIFByb3BlcnR5VHlwZT4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZWFy
T2ZmVHlwZT4gbG9va3VwT3JDcmVhdGVXcmFwcGVyKFNWR0VsZW1lbnQqIGVsZW1lbnQsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmli
dXRlSWRlbnRpZmllciwgUHJvcGVydHlUeXBlJiBwcm9wZXJ0eSkKLSAgICB7Ci0gICAgICAgIFNW
R0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbiBrZXkoZWxlbWVudCwgYXR0cmlidXRlSWRlbnRp
Zmllcik7Ci0gICAgICAgIFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiB3cmFwcGVyID0gYW5p
bWF0ZWRQcm9wZXJ0eUNhY2hlKCktPmdldChrZXkpOwotICAgICAgICBpZiAoIXdyYXBwZXIpIHsK
LSAgICAgICAgICAgIHdyYXBwZXIgPSBUZWFyT2ZmVHlwZTo6Y3JlYXRlKGVsZW1lbnQsIGF0dHJp
YnV0ZU5hbWUsIHByb3BlcnR5KTsKLSAgICAgICAgICAgIGFuaW1hdGVkUHJvcGVydHlDYWNoZSgp
LT5zZXQoa2V5LCB3cmFwcGVyKTsKLSAgICAgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRl
YXJPZmZUeXBlLCB0eXBlbmFtZSBQcm9wZXJ0eVR5cGUsIGJvb2wgaXNEZXJpdmVkRnJvbVNWR0Vs
ZW1lbnQ+CisJc3RydWN0IEhlbHBlcjsKIAotICAgICAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJf
Y2FzdDxUZWFyT2ZmVHlwZT4od3JhcHBlcikucmVsZWFzZSgpOworCXRlbXBsYXRlPHR5cGVuYW1l
IFRlYXJPZmZUeXBlLCB0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+CisJc3RydWN0IEhlbHBlcjxUZWFy
T2ZmVHlwZSwgUHJvcGVydHlUeXBlLCBmYWxzZT4geworICAgIAlzdGF0aWMgUGFzc1JlZlB0cjxU
ZWFyT2ZmVHlwZT4gbG9va3VwT3JDcmVhdGVXcmFwcGVyKHZvaWQqLCBjb25zdCBTVkdQcm9wZXJ0
eUluZm8qLCBQcm9wZXJ0eVR5cGUmKQorCQl7CisJCQlBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKwkJ
CXJldHVybiBQYXNzUmVmUHRyPFRlYXJPZmZUeXBlPigpOworCQl9CisJfTsKKworCXRlbXBsYXRl
PHR5cGVuYW1lIFRlYXJPZmZUeXBlLCB0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+CisJc3RydWN0IEhl
bHBlcjxUZWFyT2ZmVHlwZSwgUHJvcGVydHlUeXBlLCB0cnVlPiB7CisgICAgCXN0YXRpYyBQYXNz
UmVmUHRyPFRlYXJPZmZUeXBlPiBsb29rdXBPckNyZWF0ZVdyYXBwZXIoU1ZHRWxlbWVudCogZWxl
bWVudCwgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBpbmZvLCBQcm9wZXJ0eVR5cGUmIHByb3BlcnR5
KQorCQl7CisgICAgICAgIAlBU1NFUlQoaW5mbyk7CisJCQlTVkdBbmltYXRlZFByb3BlcnR5RGVz
Y3JpcHRpb24ga2V5KGVsZW1lbnQsIGluZm8tPnByb3BlcnR5SWRlbnRpZmllcik7CisJCQlSZWZQ
dHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gd3JhcHBlciA9IGFuaW1hdGVkUHJvcGVydHlDYWNoZSgp
LT5nZXQoa2V5KTsKKwkJCWlmICghd3JhcHBlcikgeworCQkJCXdyYXBwZXIgPSBUZWFyT2ZmVHlw
ZTo6Y3JlYXRlKGVsZW1lbnQsIGluZm8tPmF0dHJpYnV0ZU5hbWUsIHByb3BlcnR5KTsKKwkJCQlh
bmltYXRlZFByb3BlcnR5Q2FjaGUoKS0+c2V0KGtleSwgd3JhcHBlcik7CisJCQl9CisJCQlyZXR1
cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxUZWFyT2ZmVHlwZT4od3JhcHBlcikucmVsZWFzZSgpOwor
CQl9CisJfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgdHlwZW5hbWUgVGVh
ck9mZlR5cGUsIHR5cGVuYW1lIFByb3BlcnR5VHlwZSwgYm9vbCBpc0Rlcml2ZWRGcm9tU1ZHRWxl
bWVudD4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZWFyT2ZmVHlwZT4gbG9va3VwT3JDcmVhdGVX
cmFwcGVyKE93bmVyVHlwZSogZWxlbWVudCwgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBpbmZvLCBQ
cm9wZXJ0eVR5cGUmIHByb3BlcnR5KQorICAgIHsKKwkJcmV0dXJuIEhlbHBlcjxUZWFyT2ZmVHlw
ZSwgUHJvcGVydHlUeXBlLCBpc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudD46Omxvb2t1cE9yQ3JlYXRl
V3JhcHBlcihlbGVtZW50LCBpbmZvLCBwcm9wZXJ0eSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVGVhck9mZlR5cGU+Ci0gICAgc3RhdGljIFRlYXJPZmZUeXBlKiBsb29rdXBXcmFw
cGVyKFNWR0VsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlSWRl
bnRpZmllcikKKyAgICBzdGF0aWMgVGVhck9mZlR5cGUqIGxvb2t1cFdyYXBwZXIoU1ZHRWxlbWVu
dCogZWxlbWVudCwgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBpbmZvKQogICAgIHsKLSAgICAgICAg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uIGtleShlbGVtZW50LCBhdHRyaWJ1dGVJZGVu
dGlmaWVyKTsKKyAgICAgICAgQVNTRVJUKGluZm8pOworICAgICAgICBTVkdBbmltYXRlZFByb3Bl
cnR5RGVzY3JpcHRpb24ga2V5KGVsZW1lbnQsIGluZm8tPnByb3BlcnR5SWRlbnRpZmllcik7CiAg
ICAgICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PFRlYXJPZmZUeXBlPihhbmltYXRlZFBy
b3BlcnR5Q2FjaGUoKS0+Z2V0KGtleSkpLmdldCgpOwogICAgIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlN
YWNyb3MuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAtMjAxMS4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsNyArMjMsNyBAQAogI2RlZmlu
ZSBTVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zX2gKIAogI2lmIEVOQUJMRShTVkcpCi0jaW5jbHVk
ZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oIgorI2luY2x1ZGUgIlNWR0F0dHJp
YnV0ZVRvUHJvcGVydHlNYXAuaCIKICNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0cy5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NCwxNCArNTQsMjQgQEAgc3RydWN0IEdldE93bmVyRWxl
bWVudEZvclR5cGU8T3duZXJUeXBlLAogdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgogc3Ry
dWN0IElzRGVyaXZlZEZyb21TVkdFbGVtZW50IHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1
ZSA9IHRydWU7CisgICAgdHlwZWRlZiBPd25lclR5cGUgRm9yd2FyZGVkT3duZXJUeXBlOwogfTsK
IAogY2xhc3MgU1ZHVmlld1NwZWM7CiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgSXNEZXJpdmVkRnJvbVNW
R0VsZW1lbnQ8U1ZHVmlld1NwZWM+IHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZh
bHNlOworICAgIHR5cGVkZWYgU1ZHRWxlbWVudCBGb3J3YXJkZWRPd25lclR5cGU7CiB9OwogCitj
bGFzcyBTVkdUZXN0czsKK3RlbXBsYXRlPD4KK3N0cnVjdCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVu
dDxTVkdUZXN0cz4geworICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7CisgICAg
dHlwZWRlZiBTVkdFbGVtZW50IEZvcndhcmRlZE93bmVyVHlwZTsKK307CisKKwogLy8gU1ZHU3lu
Y2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5IGltcGxlbWVudGF0aW9uCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBQcm9wZXJ0eVR5cGU+CiBzdHJ1Y3QgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3Bl
cnR5IHsKQEAgLTg5LDYwICs5OSwxMjEgQEAgc3RydWN0IFNWR1N5bmNocm9uaXphYmxlQW5pbWF0
ZWRQcm9wZXJ0eQogICAgIGJvb2wgc2hvdWxkU3luY2hyb25pemUgOiAxOwogfTsKIAotI2RlZmlu
ZSBERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RP
TUF0dHJpYnV0ZUlkZW50aWZpZXIsIFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJv
cGVydHksIExvd2VyUHJvcGVydHkpIFwKLXZvaWQgT3duZXJUeXBlOjpzeW5jaHJvbml6ZSMjVXBw
ZXJQcm9wZXJ0eSgpIFwKKy8vIFByb3BlcnR5IHJlZ2lzdHJhdGlvbiBoZWxwZXJzCisjZGVmaW5l
IEJFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoT3duZXJUeXBlKSBcCitTVkdBdHRy
aWJ1dGVUb1Byb3BlcnR5TWFwJiBPd25lclR5cGU6OmF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKSBc
CiB7IFwKLSAgICBpZiAoIW1fIyNMb3dlclByb3BlcnR5LnNob3VsZFN5bmNocm9uaXplKSBcCi0g
ICAgICAgICByZXR1cm47IFwKLSAgICBBdG9taWNTdHJpbmcgdmFsdWUoU1ZHUHJvcGVydHlUcmFp
dHM8UHJvcGVydHlUeXBlPjo6dG9TdHJpbmcoTG93ZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKCkpKTsg
XAotICAgIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50ID0gR2V0T3duZXJFbGVtZW50Rm9yVHlw
ZTxPd25lclR5cGUsIElzRGVyaXZlZEZyb21TVkdFbGVtZW50PE93bmVyVHlwZT46OnZhbHVlPjo6
b3duZXJFbGVtZW50KHRoaXMpOyBcCi0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXpl
cjxJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5cGU+Ojp2YWx1ZT46OnN5bmNocm9uaXpl
KGNvbnRleHRFbGVtZW50LCBET01BdHRyaWJ1dGUsIHZhbHVlKTsgXAorICAgIERFRklORV9TVEFU
SUNfTE9DQUwoU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5
TWFwLCAoKSk7IFwKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5TWFwOyBcCiB9IFwK
IFwKLVBhc3NSZWZQdHI8VGVhck9mZlR5cGU+IE93bmVyVHlwZTo6TG93ZXJQcm9wZXJ0eSMjQW5p
bWF0ZWQoKSBcCitzdGF0aWMgdm9pZCByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvciMjT3du
ZXJUeXBlKCkgXAogeyBcCi0gICAgbV8jI0xvd2VyUHJvcGVydHkuc2hvdWxkU3luY2hyb25pemUg
PSB0cnVlOyBcCi0gICAgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQgPSBHZXRPd25lckVsZW1l
bnRGb3JUeXBlPE93bmVyVHlwZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8T3duZXJUeXBlPjo6
dmFsdWU+Ojpvd25lckVsZW1lbnQodGhpcyk7IFwKLSAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5cGU+KGNv
bnRleHRFbGVtZW50LCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIG1f
IyNMb3dlclByb3BlcnR5LnZhbHVlKTsgXAotfQorICAgIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlN
YXAmIG1hcCA9IE93bmVyVHlwZTo6YXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpOyBcCisgICAgaWYg
KCFtYXAuaXNFbXB0eSgpKSBcCisgICAgICAgIHJldHVybjsgXAorICAgIHR5cGVkZWYgT3duZXJU
eXBlIFVzZU93bmVyVHlwZTsKKworI2RlZmluZSBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWShMb3dlclByb3BlcnR5KSBcCisgICAgIG1hcC5hZGRQcm9wZXJ0eShVc2VPd25lclR5cGU6
Okxvd2VyUHJvcGVydHkjI1Byb3BlcnR5SW5mbygpKTsKKworI2RlZmluZSBSRUdJU1RFUl9QQVJF
TlRfQU5JTUFURURfUFJPUEVSVElFUyhDbGFzc05hbWUpIFwKKyAgICAgbWFwLmFkZFByb3BlcnRp
ZXMoQ2xhc3NOYW1lOjphdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCkpOyBcCisKKyNkZWZpbmUgRU5E
X1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMgfQorCisvLyBQcm9wZXJ0eSBkZWZpbml0aW9u
IGhlbHBlcnMgKHVzZWQgaW4gU1ZHKi5jcHAgZmlsZXMpCisjZGVmaW5lIEJFR0lOX0RFRklORV9B
TklNQVRFRF9QUk9QRVJUSUVTCisKKyNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFu
aW1hdGVkUHJvcGVydHlUeXBlRW51bSwgT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0
dHJpYnV0ZUlkZW50aWZpZXIsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKK2NvbnN0
IFNWR1Byb3BlcnR5SW5mbyogT3duZXJUeXBlOjpMb3dlclByb3BlcnR5IyNQcm9wZXJ0eUluZm8o
KSB7IFwKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBzX3Byb3BlcnR5SW5mbyA9
IDA7IFwKKyAgICBpZiAoIXNfcHJvcGVydHlJbmZvKSBcCisgICAgICAgIHNfcHJvcGVydHlJbmZv
ID0gbmV3IFNWR1Byb3BlcnR5SW5mbyhBbmltYXRlZFByb3BlcnR5VHlwZUVudW0sIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPTUF0dHJpYnV0ZSwgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRE9NQXR0cmli
dXRlSWRlbnRpZmllciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJk93bmVyVHlwZTo6c3luY2hyb25pemUjI1VwcGVyUHJvcGVydHksIFwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZPd25lclR5cGU6Omxvb2t1cE9y
Q3JlYXRlIyNVcHBlclByb3BlcnR5IyNXcmFwcGVyKTsgXAorICAgIFwKKyAgICByZXR1cm4gc19w
cm9wZXJ0eUluZm87IFwKK30gCisKKyNkZWZpbmUgRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJU
SUVTCisKKy8vIFByb3BlcnR5IGRlY2xhcmF0aW9uIGhlbHBlcnMgKHVzZWQgaW4gU1ZHKi5oIGZp
bGVzKQorI2RlZmluZSBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoT3duZXJUeXBl
KSBcCitwdWJsaWM6IFwKKyAgICBzdGF0aWMgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgYXR0
cmlidXRlVG9Qcm9wZXJ0eU1hcCgpOyBcCisgICAgdmlydHVhbCBTVkdBdHRyaWJ1dGVUb1Byb3Bl
cnR5TWFwJiBsb2NhbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKSBcCisgICAgeyBcCisgICAgICAg
IHJldHVybiBhdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCk7IFwKKyAgICB9XAorICAgIHR5cGVkZWYg
T3duZXJUeXBlIFVzZU93bmVyVHlwZTsKIAogI2RlZmluZSBERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRZKFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVy
dHkpIFwKIHB1YmxpYzogXAotUHJvcGVydHlUeXBlJiBMb3dlclByb3BlcnR5KCkgY29uc3QgXAot
eyBcCi0gICAgcmV0dXJuIG1fIyNMb3dlclByb3BlcnR5LnZhbHVlOyBcCi19IFwKLVwKLVByb3Bl
cnR5VHlwZSYgTG93ZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKCkgY29uc3QgXAoteyBcCi0gICAgcmV0
dXJuIG1fIyNMb3dlclByb3BlcnR5LnZhbHVlOyBcCi19IFwKLVwKLXZvaWQgc2V0IyNVcHBlclBy
b3BlcnR5IyNCYXNlVmFsdWUoY29uc3QgUHJvcGVydHlUeXBlJiB0eXBlKSBcCi17IFwKLSAgICBt
XyMjTG93ZXJQcm9wZXJ0eS52YWx1ZSA9IHR5cGU7IFwKLX0gXAotXAotUGFzc1JlZlB0cjxUZWFy
T2ZmVHlwZT4gTG93ZXJQcm9wZXJ0eSMjQW5pbWF0ZWQoKTsgXAotXAorICAgIHN0YXRpYyBjb25z
dCBTVkdQcm9wZXJ0eUluZm8qIExvd2VyUHJvcGVydHkjI1Byb3BlcnR5SW5mbygpOyBcCisgICAg
UHJvcGVydHlUeXBlJiBMb3dlclByb3BlcnR5KCkgY29uc3QgXAorICAgIHsgXAorICAgICAgICBT
VkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCA9IEdldE93bmVyRWxlbWVudEZvclR5cGU8VXNlT3du
ZXJUeXBlLCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxVc2VPd25lclR5cGU+Ojp2YWx1ZT46Om93
bmVyRWxlbWVudChjb25zdF9jYXN0PFVzZU93bmVyVHlwZSo+KHRoaXMpKTsgXAorICAgICAgICBp
ZiAoVGVhck9mZlR5cGUqIHdyYXBwZXIgPSBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBXcmFw
cGVyPFRlYXJPZmZUeXBlPihjb250ZXh0RWxlbWVudCwgTG93ZXJQcm9wZXJ0eSMjUHJvcGVydHlJ
bmZvKCkpKSB7IFwKKyAgICAgICAgICAgIGlmICh3cmFwcGVyLT5pc0FuaW1hdGluZygpKSBcCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXItPnJhd0FuaW1hdGVkVmFsdWUoKTsgXAorICAg
ICAgICB9IFwKKyAgICAgICAgcmV0dXJuIG1fIyNMb3dlclByb3BlcnR5LnZhbHVlOyBcCisgICAg
fSBcCisgICAgXAorICAgIFByb3BlcnR5VHlwZSYgTG93ZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKCkg
Y29uc3QgXAorICAgIHsgXAorICAgICAgICByZXR1cm4gbV8jI0xvd2VyUHJvcGVydHkudmFsdWU7
IFwKKyAgICB9IFwKKyAgICBcCisgICAgdm9pZCBzZXQjI1VwcGVyUHJvcGVydHkjI0Jhc2VWYWx1
ZShjb25zdCBQcm9wZXJ0eVR5cGUmIHR5cGUpIFwKKyAgICB7IFwKKyAgICAgICAgbV8jI0xvd2Vy
UHJvcGVydHkudmFsdWUgPSB0eXBlOyBcCisgICAgfSBcCisgICAgXAorICAgIFBhc3NSZWZQdHI8
VGVhck9mZlR5cGU+IExvd2VyUHJvcGVydHkjI0FuaW1hdGVkKCkgXAorICAgIHsgXAorICAgICAg
ICBtXyMjTG93ZXJQcm9wZXJ0eS5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7IFwKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8VGVhck9mZlR5cGU+KGxvb2t1cE9yQ3JlYXRlIyNV
cHBlclByb3BlcnR5IyNXcmFwcGVyKHRoaXMpKTsgXAorICAgIH0gXAorICAgIFwKIHByaXZhdGU6
IFwKLSAgICB2b2lkIHN5bmNocm9uaXplIyNVcHBlclByb3BlcnR5KCk7IFwKLVwKKyAgICB2b2lk
IHN5bmNocm9uaXplIyNVcHBlclByb3BlcnR5KCkgXAorICAgIHsgXAorICAgICAgICBpZiAoIW1f
IyNMb3dlclByb3BlcnR5LnNob3VsZFN5bmNocm9uaXplKSBcCisgICAgICAgICAgICByZXR1cm47
IFwKKyAgICAgICAgQXRvbWljU3RyaW5nIHZhbHVlKFNWR1Byb3BlcnR5VHJhaXRzPFByb3BlcnR5
VHlwZT46OnRvU3RyaW5nKG1fIyNMb3dlclByb3BlcnR5LnZhbHVlKSk7IFwKKyAgICAgICAgU1ZH
RWxlbWVudCogY29udGV4dEVsZW1lbnQgPSBHZXRPd25lckVsZW1lbnRGb3JUeXBlPFVzZU93bmVy
VHlwZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8VXNlT3duZXJUeXBlPjo6dmFsdWU+Ojpvd25l
ckVsZW1lbnQodGhpcyk7IFwKKyAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXpl
cjxJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxVc2VPd25lclR5cGU+Ojp2YWx1ZT46OnN5bmNocm9u
aXplKGNvbnRleHRFbGVtZW50LCBMb3dlclByb3BlcnR5IyNQcm9wZXJ0eUluZm8oKS0+YXR0cmli
dXRlTmFtZSwgdmFsdWUpOyBcCisgICAgfSBcCisgICAgXAorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNWR0FuaW1hdGVkUHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlIyNVcHBlclByb3BlcnR5IyNXcmFw
cGVyKHZvaWQqIG1hc2tlZE93bmVyVHlwZSkgXAorICAgIHsgXAorICAgICAgICBBU1NFUlQobWFz
a2VkT3duZXJUeXBlKTsgXAorICAgICAgICBVc2VPd25lclR5cGUqIG93bmVyVHlwZSA9IHN0YXRp
Y19jYXN0PFVzZU93bmVyVHlwZSo+KG1hc2tlZE93bmVyVHlwZSk7IFwKKyAgICAgICAgcmV0dXJu
IFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxVc2VPd25lclR5cGUs
IFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIElzRGVyaXZlZEZyb21TVkdFbGVtZW50PFVzZU93
bmVyVHlwZT46OnZhbHVlPihvd25lclR5cGUsIExvd2VyUHJvcGVydHkjI1Byb3BlcnR5SW5mbygp
LCBvd25lclR5cGUtPm1fIyNMb3dlclByb3BlcnR5LnZhbHVlKTsgXAorICAgIH0gXAorICAgIFwK
KyAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZSMjVXBwZXJQcm9wZXJ0eSh2b2lkKiBtYXNrZWRP
d25lclR5cGUpIFwKKyAgICB7IFwKKyAgICAgICAgQVNTRVJUKG1hc2tlZE93bmVyVHlwZSk7IFwK
KyAgICAgICAgVXNlT3duZXJUeXBlKiBvd25lclR5cGUgPSBzdGF0aWNfY2FzdDxVc2VPd25lclR5
cGUqPihtYXNrZWRPd25lclR5cGUpOyBcCisgICAgICAgIG93bmVyVHlwZS0+c3luY2hyb25pemUj
I1VwcGVyUHJvcGVydHkoKTsgXAorICAgIH0gXAorICAgIFwKICAgICBtdXRhYmxlIFNWR1N5bmNo
cm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IG1fIyNMb3dlclByb3BlcnR5
OwogCisjZGVmaW5lIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMgCisKKy8vIExpc3Qg
c3BlY2lmaWMgZGVmaW5pdGlvbi9kZWNsYXJhdGlvbiBoZWxwZXJzCiAjZGVmaW5lIERFQ0xBUkVf
QU5JTUFURURfTElTVF9QUk9QRVJUWShUZWFyT2ZmVHlwZSwgUHJvcGVydHlUeXBlLCBVcHBlclBy
b3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCiBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFRlYXJP
ZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLXZv
aWQgZGV0YWNoQW5pbWF0ZWQjI1VwcGVyUHJvcGVydHkjI0xpc3RXcmFwcGVycyh1bnNpZ25lZCBu
ZXdMaXN0U2l6ZSk7Ci0KLSNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX0xJU1RfUFJPUEVSVFkoT3du
ZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFRlYXJPZmZU
eXBlLCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFRklO
RV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmli
dXRlSWRlbnRpZmllciwgVGVhck9mZlR5cGUsIFByb3BlcnR5VHlwZSwgVXBwZXJQcm9wZXJ0eSwg
TG93ZXJQcm9wZXJ0eSkgXAotdm9pZCBPd25lclR5cGU6OmRldGFjaEFuaW1hdGVkIyNVcHBlclBy
b3BlcnR5IyNMaXN0V3JhcHBlcnModW5zaWduZWQgbmV3TGlzdFNpemUpIFwKK3ZvaWQgZGV0YWNo
QW5pbWF0ZWQjI1VwcGVyUHJvcGVydHkjI0xpc3RXcmFwcGVycyh1bnNpZ25lZCBuZXdMaXN0U2l6
ZSkgXAogeyBcCi0gICAgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQgPSBHZXRPd25lckVsZW1l
bnRGb3JUeXBlPE93bmVyVHlwZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8T3duZXJUeXBlPjo6
dmFsdWU+Ojpvd25lckVsZW1lbnQodGhpcyk7IFwKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5KiB3
cmFwcGVyID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwV3JhcHBlcjxUZWFyT2ZmVHlwZT4o
Y29udGV4dEVsZW1lbnQsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSk7IFwKLSAgICBpZiAoIXdy
YXBwZXIpIFwKLSAgICAgICAgcmV0dXJuOyBcCi0gICAgc3RhdGljX2Nhc3Q8VGVhck9mZlR5cGUq
Pih3cmFwcGVyKS0+ZGV0YWNoTGlzdFdyYXBwZXJzKG5ld0xpc3RTaXplKTsgXAorICAgIGlmIChT
VkdBbmltYXRlZFByb3BlcnR5KiB3cmFwcGVyID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3Vw
V3JhcHBlcjxUZWFyT2ZmVHlwZT4odGhpcywgTG93ZXJQcm9wZXJ0eSMjUHJvcGVydHlJbmZvKCkp
KSBcCisgICAgICAgIHN0YXRpY19jYXN0PFRlYXJPZmZUeXBlKj4od3JhcHBlciktPmRldGFjaExp
c3RXcmFwcGVycyhuZXdMaXN0U2l6ZSk7IFwKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5VGVhck9m
Zi5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDI3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fYW5pbVZhbC5nZXQoKTsKICAgICB9CiAKKyAg
ICBib29sIGlzQW5pbWF0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0FuaW1hdGluZzsgfQorCisg
ICAgUHJvcGVydHlUeXBlJiByYXdBbmltYXRlZFZhbHVlKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX2FuaW1WYWwpOworICAgICAgICBBU1NFUlQobV9pc0FuaW1hdGluZyk7CisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxTVkdQcm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlUeXBlPio+KG1fYW5p
bVZhbC5nZXQoKSktPnByb3BlcnR5UmVmZXJlbmNlKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUFuaW1WYWwodm9pZCogdmFsdWUpCisgICAgeworICAgICAgICBpZiAodmFsdWUp
IHsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFNWR1Byb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVR5
cGU+Kj4oYW5pbVZhbCgpKS0+dXBkYXRlQW5pbVZhbChyZWludGVycHJldF9jYXN0PFByb3BlcnR5
VHlwZSo+KHZhbHVlKSk7CisgICAgICAgICAgICBtX2lzQW5pbWF0aW5nID0gdHJ1ZTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpY19jYXN0PFNWR1Byb3Bl
cnR5VGVhck9mZjxQcm9wZXJ0eVR5cGU+Kj4oYW5pbVZhbCgpKS0+dXBkYXRlQW5pbVZhbCgmbV9w
cm9wZXJ0eSk7CisgICAgICAgIG1faXNBbmltYXRpbmcgPSBmYWxzZTsKKyAgICB9CisKIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHk7CiAKQEAgLTU1LDExICs3
NiwxMyBAQCBwcml2YXRlOgogICAgIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmKFNWR0VsZW1l
bnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBQ
cm9wZXJ0eVR5cGUmIHByb3BlcnR5KQogICAgICAgICA6IFNWR0FuaW1hdGVkUHJvcGVydHkoY29u
dGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUpCiAgICAgICAgICwgbV9wcm9wZXJ0eShwcm9wZXJ0
eSkKKyAgICAgICAgLCBtX2lzQW5pbWF0aW5nKGZhbHNlKQogICAgIHsKICAgICB9CiAKIHByaXZh
dGU6CiAgICAgUHJvcGVydHlUeXBlJiBtX3Byb3BlcnR5OworICAgIGJvb2wgbV9pc0FuaW1hdGlu
ZyA6IDE7CiAKICAgICBSZWZQdHI8U1ZHUHJvcGVydHk+IG1fYmFzZVZhbDsKICAgICBSZWZQdHI8
U1ZHUHJvcGVydHk+IG1fYW5pbVZhbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJP
ZmYuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2
ICsyMiw3IEBACiAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVy
dHkuaCIKKyNpbmNsdWRlICJTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNDUsOCArNDYsOSBAQCBwdWJsaWM6CiAgICAgICAgIGNvbW1pdENo
YW5nZSgpOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBObyBhbmltVmFsIHN1cHBvcnQuCi0gICAg
dm9pZCBzZXRBbmltVmFsKGNvbnN0IFByb3BlcnR5VHlwZSYpIHsgfQorICAgIC8vIEZJWE1FOiBh
bmltVmFsIHN1cHBvcnQuCisgICAgYm9vbCBpc0FuaW1hdGluZygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgUHJvcGVydHlUeXBlJiByYXdBbmltYXRlZFZhbHVlKCkgeyByZXR1cm4gbV9w
cm9wZXJ0eTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIFNWR0FuaW1hdGVkUHJv
cGVydHk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVU
b1Byb3BlcnR5TWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR0F0dHJpYnV0ZVRvUHJv
cGVydHlNYXAuaCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKwordm9pZCBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwOjphbmltYXRlZFBy
b3BlcnRpZXNGb3JBdHRyaWJ1dGUoU1ZHRWxlbWVudCogb3duZXJUeXBlLCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBWZWN0b3I8UmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+
ID4mIHByb3BlcnRpZXMpCit7CisgICAgQVNTRVJUKG93bmVyVHlwZSk7CisgICAgUHJvcGVydGll
c1ZlY3RvciogdmVjdG9yID0gbV9tYXAuZ2V0KGF0dHJpYnV0ZU5hbWUpOworICAgIGlmICghdmVj
dG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBQcm9wZXJ0aWVzVmVjdG9yOjppdGVyYXRvciB2
ZWN0b3JFbmQgPSB2ZWN0b3ItPmVuZCgpOworICAgIGZvciAoUHJvcGVydGllc1ZlY3Rvcjo6aXRl
cmF0b3IgdmVjdG9ySXQgPSB2ZWN0b3ItPmJlZ2luKCk7IHZlY3Rvckl0ICE9IHZlY3RvckVuZDsg
Kyt2ZWN0b3JJdCkKKyAgICAgICAgcHJvcGVydGllcy5hcHBlbmQoYW5pbWF0ZWRQcm9wZXJ0eShv
d25lclR5cGUsIGF0dHJpYnV0ZU5hbWUsICp2ZWN0b3JJdCkpOworfQorCit9CisKKyNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0
eU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0
dHJpYnV0ZVRvUHJvcGVydHlNYXAuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgU1ZHQXR0cmlidXRlVG9Q
cm9wZXJ0eU1hcF9oCisjZGVmaW5lIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXBfaAorCisjaWYg
RU5BQkxFKFNWRykKKyNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCisjaW5jbHVkZSAiU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oIgorI2luY2x1ZGUgIlNWR1Byb3BlcnR5SW5mby5o
IgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTsKK2NsYXNzIFNWR0VsZW1lbnQ7CisKK2NsYXNzIFNWR0F0
dHJpYnV0ZVRvUHJvcGVydHlNYXAgeworcHVibGljOgorICAgIFNWR0F0dHJpYnV0ZVRvUHJvcGVy
dHlNYXAoKSB7IH0KKyAgICB+U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpIHsgZGVsZXRlQWxs
VmFsdWVzKG1fbWFwKTsgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9t
YXAuaXNFbXB0eSgpOyB9CisKKyAgICB2b2lkIGFkZFByb3BlcnRpZXMoU1ZHQXR0cmlidXRlVG9Q
cm9wZXJ0eU1hcCYgbWFwKQorICAgIHsKKyAgICAgICAgQXR0cmlidXRlVG9Qcm9wZXJ0aWVzTWFw
OjppdGVyYXRvciBlbmQgPSBtYXAubV9tYXAuZW5kKCk7CisgICAgICAgIGZvciAoQXR0cmlidXRl
VG9Qcm9wZXJ0aWVzTWFwOjppdGVyYXRvciBpdCA9IG1hcC5tX21hcC5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKKyAgICAgICAgICAgIFByb3BlcnRpZXNWZWN0b3IqIHZlY3RvciA9IGl0LT5z
ZWNvbmQ7CisgICAgICAgICAgICBBU1NFUlQodmVjdG9yKTsKKworICAgICAgICAgICAgUHJvcGVy
dGllc1ZlY3Rvcjo6aXRlcmF0b3IgdmVjdG9yRW5kID0gdmVjdG9yLT5lbmQoKTsKKyAgICAgICAg
ICAgIGZvciAoUHJvcGVydGllc1ZlY3Rvcjo6aXRlcmF0b3IgdmVjdG9ySXQgPSB2ZWN0b3ItPmJl
Z2luKCk7IHZlY3Rvckl0ICE9IHZlY3RvckVuZDsgKyt2ZWN0b3JJdCkKKyAgICAgICAgICAgICAg
ICBhZGRQcm9wZXJ0eSgqdmVjdG9ySXQpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBh
ZGRQcm9wZXJ0eShjb25zdCBTVkdQcm9wZXJ0eUluZm8qIGluZm8pCisgICAgeworICAgICAgICBB
U1NFUlQoaW5mbyk7CisgICAgICAgIEFTU0VSVChpbmZvLT5hdHRyaWJ1dGVOYW1lICE9IGFueVFO
YW1lKCkpOworICAgICAgICBpZiAoUHJvcGVydGllc1ZlY3RvciogdmVjdG9yID0gbV9tYXAuZ2V0
KGluZm8tPmF0dHJpYnV0ZU5hbWUpKSB7CisgICAgICAgICAgICB2ZWN0b3ItPmFwcGVuZChpbmZv
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBQcm9wZXJ0aWVzVmVj
dG9yKiB2ZWN0b3IgPSBuZXcgUHJvcGVydGllc1ZlY3RvcjsKKyAgICAgICAgdmVjdG9yLT5hcHBl
bmQoaW5mbyk7CisgICAgICAgIG1fbWFwLnNldChpbmZvLT5hdHRyaWJ1dGVOYW1lLCB2ZWN0b3Ip
OworICAgIH0KKworICAgIHZvaWQgYW5pbWF0ZWRQcm9wZXJ0aWVzRm9yQXR0cmlidXRlKFNWR0Vs
ZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
LCBWZWN0b3I8UmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+ID4mIHByb3BlcnRpZXMpOworCisg
ICAgdm9pZCBhbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLCBWZWN0b3I8QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+JiBwcm9wZXJ0
eVR5cGVzKQorICAgIHsKKyAgICAgICAgUHJvcGVydGllc1ZlY3RvciogdmVjdG9yID0gbV9tYXAu
Z2V0KGF0dHJpYnV0ZU5hbWUpOworICAgICAgICBpZiAoIXZlY3RvcikKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBQcm9wZXJ0aWVzVmVjdG9yOjppdGVyYXRvciB2ZWN0b3JFbmQgPSB2
ZWN0b3ItPmVuZCgpOworICAgICAgICBmb3IgKFByb3BlcnRpZXNWZWN0b3I6Oml0ZXJhdG9yIHZl
Y3Rvckl0ID0gdmVjdG9yLT5iZWdpbigpOyB2ZWN0b3JJdCAhPSB2ZWN0b3JFbmQ7ICsrdmVjdG9y
SXQpCisgICAgICAgICAgICBwcm9wZXJ0eVR5cGVzLmFwcGVuZCgoKnZlY3Rvckl0KS0+YW5pbWF0
ZWRQcm9wZXJ0eVR5cGUpOworICAgIH0KKworICAgIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0aWVz
KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNvbnRl
eHRFbGVtZW50KTsKKyAgICAgICAgQXR0cmlidXRlVG9Qcm9wZXJ0aWVzTWFwOjppdGVyYXRvciBl
bmQgPSBtX21hcC5lbmQoKTsKKyAgICAgICAgZm9yIChBdHRyaWJ1dGVUb1Byb3BlcnRpZXNNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9tYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAg
ICAgICBQcm9wZXJ0aWVzVmVjdG9yKiB2ZWN0b3IgPSBpdC0+c2Vjb25kOworICAgICAgICAgICAg
QVNTRVJUKHZlY3Rvcik7CisKKyAgICAgICAgICAgIFByb3BlcnRpZXNWZWN0b3I6Oml0ZXJhdG9y
IHZlY3RvckVuZCA9IHZlY3Rvci0+ZW5kKCk7CisgICAgICAgICAgICBmb3IgKFByb3BlcnRpZXNW
ZWN0b3I6Oml0ZXJhdG9yIHZlY3Rvckl0ID0gdmVjdG9yLT5iZWdpbigpOyB2ZWN0b3JJdCAhPSB2
ZWN0b3JFbmQ7ICsrdmVjdG9ySXQpCisgICAgICAgICAgICAgICAgc3luY2hyb25pemVQcm9wZXJ0
eShjb250ZXh0RWxlbWVudCwgaXQtPmZpcnN0LCAqdmVjdG9ySXQpOworICAgICAgICB9IAorICAg
IH0KKworICAgIGJvb2wgc3luY2hyb25pemVQcm9wZXJ0eShTVkdFbGVtZW50KiBjb250ZXh0RWxl
bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAg
IEFTU0VSVChjb250ZXh0RWxlbWVudCk7CisgICAgICAgIFByb3BlcnRpZXNWZWN0b3IqIHZlY3Rv
ciA9IG1fbWFwLmdldChhdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAgaWYgKCF2ZWN0b3IpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgUHJvcGVydGllc1ZlY3Rvcjo6aXRlcmF0
b3IgdmVjdG9yRW5kID0gdmVjdG9yLT5lbmQoKTsKKyAgICAgICAgZm9yIChQcm9wZXJ0aWVzVmVj
dG9yOjppdGVyYXRvciB2ZWN0b3JJdCA9IHZlY3Rvci0+YmVnaW4oKTsgdmVjdG9ySXQgIT0gdmVj
dG9yRW5kOyArK3ZlY3Rvckl0KQorICAgICAgICAgICAgc3luY2hyb25pemVQcm9wZXJ0eShjb250
ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgKnZlY3Rvckl0KTsKKworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KFNW
R0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lLCBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIGluZm8pCisgICAgeworICAgICAgICBBU1NFUlQo
aW5mbyk7CisgICAgICAgIEFTU0VSVChhdHRyaWJ1dGVOYW1lID09IGluZm8tPmF0dHJpYnV0ZU5h
bWUpOworICAgICAgICBBU1NFUlQoaW5mby0+c3luY2hyb25pemVQcm9wZXJ0eSk7CisgICAgICAg
ICgqaW5mby0+c3luY2hyb25pemVQcm9wZXJ0eSkoY29udGV4dEVsZW1lbnQpOworICAgIH0KKwor
ICAgIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gYW5pbWF0ZWRQcm9wZXJ0eShTVkdF
bGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSwgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBpbmZvKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlu
Zm8pOworICAgICAgICBBU1NFUlQoYXR0cmlidXRlTmFtZSA9PSBpbmZvLT5hdHRyaWJ1dGVOYW1l
KTsKKyAgICAgICAgQVNTRVJUKGluZm8tPmxvb2t1cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVk
UHJvcGVydHkpOworICAgICAgICByZXR1cm4gKCppbmZvLT5sb29rdXBPckNyZWF0ZVdyYXBwZXJG
b3JBbmltYXRlZFByb3BlcnR5KShjb250ZXh0RWxlbWVudCk7CisgICAgfQorCisgICAgdHlwZWRl
ZiBWZWN0b3I8Y29uc3QgU1ZHUHJvcGVydHlJbmZvKj4gUHJvcGVydGllc1ZlY3RvcjsKKyAgICB0
eXBlZGVmIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgUHJvcGVydGllc1ZlY3Rvcio+IEF0dHJpYnV0
ZVRvUHJvcGVydGllc01hcDsKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnRpZXNNYXAgbV9tYXA7Cit9
OworCit9CisKKyNlbmRpZgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdQcm9wZXJ0eUluZm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5SW5mby5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFNWR1Byb3BlcnR5SW5mb19oCisj
ZGVmaW5lIFNWR1Byb3BlcnR5SW5mb19oCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlF1
YWxpZmllZE5hbWUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHk7CisKK2VudW0gQW5pbWF0ZWRQ
cm9wZXJ0eVR5cGUgeworICAgIEFuaW1hdGVkQW5nbGUsCisgICAgQW5pbWF0ZWRCb29sZWFuLAor
ICAgIEFuaW1hdGVkQ29sb3IsCisgICAgQW5pbWF0ZWRFbnVtZXJhdGlvbiwKKyAgICBBbmltYXRl
ZEludGVnZXIsCisgICAgQW5pbWF0ZWRMZW5ndGgsCisgICAgQW5pbWF0ZWRMZW5ndGhMaXN0LAor
ICAgIEFuaW1hdGVkTnVtYmVyLAorICAgIEFuaW1hdGVkTnVtYmVyTGlzdCwKKyAgICBBbmltYXRl
ZE51bWJlck9wdGlvbmFsTnVtYmVyLAorICAgIEFuaW1hdGVkUGF0aCwKKyAgICBBbmltYXRlZFBv
aW50cywKKyAgICBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8sCisgICAgQW5pbWF0ZWRSZWN0
LAorICAgIEFuaW1hdGVkU3RyaW5nLAorICAgIEFuaW1hdGVkVHJhbnNmb3JtTGlzdCwKKyAgICBB
bmltYXRlZFVua25vd24KK307CisKK3N0cnVjdCBTVkdQcm9wZXJ0eUluZm8geworICAgIHR5cGVk
ZWYgdm9pZCAoKlN5bmNocm9uaXplUHJvcGVydHkpKHZvaWQqKTsKKyAgICB0eXBlZGVmIFBhc3NS
ZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gKCpMb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JBbmlt
YXRlZFByb3BlcnR5KSh2b2lkKik7CisKKyAgICBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRQcm9w
ZXJ0eVR5cGUgbmV3VHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmV3QXR0cmlidXRlTmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdQcm9wZXJ0eUlkZW50
aWZpZXIsIFN5bmNocm9uaXplUHJvcGVydHkgbmV3U3luY2hyb25pemVQcm9wZXJ0eSwKKyAgICAg
ICAgICAgICAgICAgICAgTG9va3VwT3JDcmVhdGVXcmFwcGVyRm9yQW5pbWF0ZWRQcm9wZXJ0eSBu
ZXdMb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JBbmltYXRlZFByb3BlcnR5KQorICAgICAgICA6IGFu
aW1hdGVkUHJvcGVydHlUeXBlKG5ld1R5cGUpCisgICAgICAgICwgYXR0cmlidXRlTmFtZShuZXdB
dHRyaWJ1dGVOYW1lKQorICAgICAgICAsIHByb3BlcnR5SWRlbnRpZmllcihuZXdQcm9wZXJ0eUlk
ZW50aWZpZXIpCisgICAgICAgICwgc3luY2hyb25pemVQcm9wZXJ0eShuZXdTeW5jaHJvbml6ZVBy
b3BlcnR5KQorICAgICAgICAsIGxvb2t1cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVy
dHkobmV3TG9va3VwT3JDcmVhdGVXcmFwcGVyRm9yQW5pbWF0ZWRQcm9wZXJ0eSkKKyAgICB7Cisg
ICAgfQorCisgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGU7Cisg
ICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZTsKKyAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHByb3BlcnR5SWRlbnRpZmllcjsKKyAgICBTeW5jaHJvbml6ZVByb3BlcnR5IHN5bmNo
cm9uaXplUHJvcGVydHk7CisgICAgTG9va3VwT3JDcmVhdGVXcmFwcGVyRm9yQW5pbWF0ZWRQcm9w
ZXJ0eSBsb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JBbmltYXRlZFByb3BlcnR5OworfTsKKworfQor
CisjZW5kaWYgLy8gRU5BQkxFKFNWRykKKyNlbmRpZiAvLyBTVkdQcm9wZXJ0eUluZm9faApJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFyT2ZmLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFy
T2ZmLmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHUHJvcGVydHlUZWFyT2ZmLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDEzIEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgU1ZHUHJvcGVydHlSb2xlIHJvbGUoKSBjb25zdCB7IHJldHVy
biBtX3JvbGU7IH0KIAorICAgIHZvaWQgdXBkYXRlQW5pbVZhbChQcm9wZXJ0eVR5cGUqIHZhbHVl
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3ZhbHVlSXNDb3B5KTsKKyAgICAgICAgQVNTRVJU
KG1fcm9sZSA9PSBBbmltVmFsUm9sZSk7CisgICAgICAgIG1fdmFsdWUgPSB2YWx1ZTsKKyAgICB9
CisKIHByb3RlY3RlZDoKICAgICBTVkdQcm9wZXJ0eVRlYXJPZmYoU1ZHQW5pbWF0ZWRQcm9wZXJ0
eSogYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFByb3BlcnR5VHlwZSYg
dmFsdWUpCiAgICAgICAgIDogbV9hbmltYXRlZFByb3BlcnR5KGFuaW1hdGVkUHJvcGVydHkpCg==
</data>
<flag name="commit-queue"
          id="94402"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99831</attachid>
            <date>2011-07-06 07:53:30 -0700</date>
            <delta_ts>2011-07-06 08:30:06 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>AnimValPrep-v2.diff</filename>
            <type>text/plain</type>
            <size>489789</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwNDU2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTY0IEBACisyMDExLTA3LTA2ICBOaWtvbGFz
IFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIEFkZCBhIHBvc3Np
YmlsaXR5IHRvIHJldHJpZXZlIHRoZSBhc3NvY2lhdGVkIFNWR0FuaW1hdGVkUHJvcGVydHkgb2Jq
ZWN0IGZvciBhIGNlcnRhaW4gWE1MIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM3OTcKKworICAgICAgICBJbiBvcmRlciB0byBwcmVw
YXJlIGFuaW1WYWwgc3VwcG9ydCB3ZSBuZWVkIGEgd2F5IHRvIG1hcCBhIGdpdmVuIFNWRyBET00g
YXR0cmlidXRlIHRvIGEgU1ZHQW5pbWF0ZWRQcm9wZXJ0eS4KKyAgICAgICAgZWcuIFNWR05hbWVz
Ojp4QXR0ciAtPiBTVkdSZWN0RWxlbWVudDo6eEFuaW1hdGVkKCksIGV0Yy4gVGhpcyB3aWxsIGJl
IG5lZWRlZCB0byB1cGRhdGUgdGhlIGFuaW1WYWwgb2YgdGhlCisgICAgICAgIFNWR0FuaW1hdGVk
UHJvcGVydHksIGlmIGFuIGFuaW1hdGlvbiBpcyBydW5uaW5nLiBJdCB3b3VsZCByZXF1aXJlZCBh
ZGRpbmcgYSBuZXcgbWV0aG9kIHRvIGFsbCBTVkcqIGNsYXNzZXMKKyAgICAgICAgdGhhdCBkZWZp
bmUgYW5pbWF0ZWQgcHJvcGVydGllcy4gVW5mb3J0dW5hdGVseSB3ZSBhbHJlYWR5IGhhdmUgbG90
cyBvZiByZXBlYXRlZCBjb2RlIGluIG1ldGhvZHMgbGlrZQorICAgICAgICBzeW5jaHJvbml6ZVBy
b3BlcnR5IC8gZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLiBMb29rIGF0IFNWR1JlY3RF
bGVtZW50IGZvciBleGFtcGxlOgorCisgICAgICAgIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7CisgICAgICAgICAgICAg
ICAgc3luY2hyb25pemVYKCk7CisgICAgICAgICAgICAgICAgc3luY2hyb25pemVZKCk7CisgICAg
ICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpIHsKKyAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZVgo
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKKyAgICAgICAgICAgICAgICBzeW5j
aHJvbml6ZVkoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAuLi4KKyAgICAgICAgfQorCisgICAgICAgIG9yCisKKyAgICAgICAgdm9pZCBTVkdS
ZWN0RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAgICAg
CisgICAgICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKKyAg
ICAgICAgICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIs
IEFuaW1hdGVkTGVuZ3RoKTsKKyAgICAgICAgICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICAgICAgICAgIC4uLgor
ICAgICAgICB9CisKKyAgICAgICAgVGhlc2UgbG9va3VwcyBhcmUgYWxsIHBlcmZvcm1lZCBkeW5h
bWljYWxseS4gRWFjaCBzeW5jaHJvbml6ZVByb3BlcnR5KCkgY2FsbCBkb2VzIGEgbG90IG9mIGNv
bXBhcmlzaW9ucy4KKyAgICAgICAgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkgaXNu
J3QgdGhhdCBiYWQgYXMgdGhlIHJlc3VsdCBpcyBjYWNoZWQgaW4gYSBzdGF0aWMgSGFzaE1hcCBw
ZXItU1ZHUmVjdEVsZW1lbnQuCisgICAgICAgIFRoZXJlJ3Mgbm8gcmVhc29uIHRvIGRvIHRoZXNl
IHRoaW5ncyBkeW5hbWljYWxseSEKKworICAgICAgICBJbnNwaXJlZCBieSBKU0MsIEknbSBhZGRp
bmcgYSAic3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyBzX2Zvb1Byb3BlcnR5SW5mbyIgb2Jq
ZWN0IGZvciBlYWNoIGFuaW1hdGVkIFNWRyBwcm9wZXJ0eS4KKyAgICAgICAgRm9yIGV4YW1wbGUs
IGZvciBTVkdSZWN0RWxlbWVudHMgU1ZHQW5pbWF0ZWRMZW5ndGggeCBwcm9wZXJ0eSB3ZSdyZSBz
dG9yaW5nOgorICAgICAgICAtICJBbmltYXRlZFByb3BlcnR5VHlwZSB0eXBlIiAoQW5pbWF0ZWRM
ZW5ndGgpCisgICAgICAgIC0gImNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUiIChT
VkdOYW1lczo6eEF0dHIpCisgICAgICAgIC0gImNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlJ
ZGVudGlmaWVyIiAoU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpIC0tIG9ubHkgZGlmZmVyZW50
IGlmIE4td3JhcHBlcnMgbWFwIHRvIGEgc2luZ2xlIFhNTCBET00gYXR0cmlidXRlLCBlZy4gb3Jp
ZW50QXR0cikKKyAgICAgICAgLSAiU3luY2hyb25pemVQcm9wZXJ0eSBzeW5jaHJvbml6ZVByb3Bl
cnR5IiAoY2FsbGJhY2sgdG8gU1ZHUmVjdEVsZW1lbnQ6OnN5bmNocm9uaXplWCkKKyAgICAgICAg
LSAiTG9va3VwT3JDcmVhdGVXcmFwcGVyRm9yQW5pbWF0ZWRQcm9wZXJ0eSBsb29rdXBPckNyZWF0
ZVdyYXBwZXJGb3JBbmltYXRlZFByb3BlcnR5IiAoY2FsbGJhY2sgdG8gU1ZHUmVjdEVsZW1lbnQ6
OnhBbmltYXRlZCkKKworICAgICAgICBVc2luZyB0aGVzZSBpbmZvcm1hdGlvbiwgd2UgY2FuIHJl
cGxhY2UgYWxsIHRoZSB2YXJpb3VzIHN5bmNocm9uaXplUHJvcGVydHkvZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlNYXAgaW1wbGVtZW50YXRpb25zLCB3aXRoIGEgc2luZ2xlIG9uZSBpbiBTVkdFbGVt
ZW50LgorICAgICAgICBBbGwgdGhlc2UgYXJlIGF1dG8tZ2VuZXJhdGVkLCB1c2luZyB0aGUgc3Rh
bmRhcmQgbWFjcm9zIHVzZWQgdG8gZGVmaW5lL2RlY2xhcmUgU1ZHIGFuaW1hdGVkIHByb3BlcnRp
ZXMuIFRoaXMgcmVxdWlyZWQgc2V2ZXJhbCBjaGFuZ2VzIHRvIHRoZSBtYWNyb3MuCisgICAgICAg
IEhlcmUncyBhIHN1bW1hcnk6CisgICAgCisgICAgICAgICMxKSBJbiBhbGwgaGVhZGVycywgd3Jh
cCBERUNMQVJFX0FOSU1BVEVEXyogY2FsbHMsIGluIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVElFUyhDbGFzc05hbWUpIC8gRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyBibG9j
a3MuCisgICAgICAgIAorICAgICAgICAgICAgU2FtcGxlIGNoYW5nZSBmb3IgU1ZHUmVjdEVsZW1l
bnQ6CisgICAgICAgICAgICAtICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCisgICAg
ICAgICAgICAtICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCisgICAgICAgICAgICAt
ICAgIC4uLgorCisgICAgICAgICAgICArICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdSZWN0RWxlbWVudCkKKyAgICAgICAgICAgICsgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfTEVOR1RIKFgsIHgpCisgICAgICAgICAgICArICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSChZLCB5KQorICAgICAgICAgICAgKyAgICAgICAgIC4uLgorICAgICAgICAgICAgKyAgICBF
TkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAgICAgIzIpIEluIGFsbCBjcHAg
ZmlsZXMsIHdyYXAgREVGSU5FX0FOSU1BVEVEXyogY2FsbHMsIGluIEJFR0lOX0RFRklORV9BTklN
QVRFRF9QUk9QRVJUSUVTIC8gRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTIGJsb2Nrcy4K
KyAgICAKKyAgICAgICAgICAgIFNhbXBsZSBjaGFuZ2UgZm9yIFNWR1JlY3RFbGVtZW50OgorICAg
ICAgICAgICAgLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVz
Ojp4QXR0ciwgWCwgeCkKKyAgICAgICAgICAgIC1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1Jl
Y3RFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCisgICAgICAgICAgICAtLi4uCisKKyAg
ICAgICAgICAgICtCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgICAgICAgICAg
KyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6eEF0
dHIsIFgsIHgpCisgICAgICAgICAgICArICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVj
dEVsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKKyAgICAgICAgICAgICsgICAgLi4uCisg
ICAgICAgICAgICArRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAgICAgCisg
ICAgICAgICAgICBUaGlzIG5vdyBnZW5lcmF0ZXMgdGhlICJzdGF0aWMgY29uc3QgU1ZHUHJvcGVy
dHlJbmZvIiBvYmplY3RzIGZvciBlYWNoIGFuaW1hdGVkIFNWRyBwcm9wZXJ0eS4KKworICAgICAg
ICAjMykgSW4gYWxsIGNwcCBmaWxlcywgYWRkIGEgbmV3IHNlY3Rpb24gd3JhcHBlZCBpbiBCRUdJ
Tl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKENsYXNzTmFtZSAvIEVORF9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTIGJsb2NrczoKKyAgICAgICAgCisgICAgICAgICAgICBTYW1wbGUg
Y2hhbmdlIGZvciBTVkdSZWN0RWxlbWVudDoKKyAgICAgICAgICAgICtCRUdJTl9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR1JlY3RFbGVtZW50KQorICAgICAgICAgICAgKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh4KQorICAgICAgICAgICAgKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5KQorICAgICAgICAgICAgKyAgICAuLi4KKyAgICAg
ICAgICAgICsgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAgICAgICAgICArICAgIFJFR0lTVEVSX1BBUkVOVF9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorICAgICAgICAgICAgK0VORF9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAgICAgICAgIFRoaXMgaXMgdGhlIG1haW4gcGllY2Ug
b2YgdGhlIGxvZ2ljIHRoYXQgcmVwbGFjZXMgdGhlIG1hbnVhbCBzeW5jaHJvbml6ZVByb3BlcnR5
L2ZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwIGltcGxlbWVudGF0aW9uLiBJdCBleHBhbnMgdG8g
Zm9sbG93aW5nOgorCisgICAgICAgICAgICBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBTVkdS
ZWN0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFw
LCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlNYXAsICgpKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdSZWN0RWxl
bWVudCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgU1ZHQXR0cmlidXRlVG9Qcm9w
ZXJ0eU1hcCYgbWFwID0gU1ZHUmVjdEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKTsK
KyAgICAgICAgICAgICAgICBpZiAoIW1hcC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICBtYXAuYWRkUHJvcGVydHkoU1ZHUmVjdEVsZW1lbnQ6
OnhQcm9wZXJ0eUluZm8oKSk7CisgICAgICAgICAgICAgICAgbWFwLmFkZFByb3BlcnR5KFNWR1Jl
Y3RFbGVtZW50Ojp5UHJvcGVydHlJbmZvKCkpOworICAgICAgICAgICAgICAgIG1hcC5hZGRQcm9w
ZXJ0eShTVkdSZWN0RWxlbWVudDo6d2lkdGhQcm9wZXJ0eUluZm8oKSk7CisgICAgICAgICAgICAg
ICAgbWFwLmFkZFByb3BlcnR5KFNWR1JlY3RFbGVtZW50OjpoZWlnaHRQcm9wZXJ0eUluZm8oKSk7
CisgICAgICAgICAgICAgICAgbWFwLmFkZFByb3BlcnR5KFNWR1JlY3RFbGVtZW50OjpyeFByb3Bl
cnR5SW5mbygpKTsKKyAgICAgICAgICAgICAgICBtYXAuYWRkUHJvcGVydHkoU1ZHUmVjdEVsZW1l
bnQ6OnJ5UHJvcGVydHlJbmZvKCkpOworICAgICAgICAgICAgICAgIG1hcC5hZGRQcm9wZXJ0eShT
VkdSZWN0RWxlbWVudDo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFByb3BlcnR5SW5mbygpKTsK
KyAgICAgICAgICAgICAgICBtYXAuYWRkUHJvcGVydGllcyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpKTsKKyAgICAgICAgICAgICAgICBtYXAu
YWRkUHJvcGVydGllcyhTVkdUZXN0czo6YXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgQSBzaW5nbGUtaW5zdGFuY2Ugb2YgU1ZHQXR0cmlidXRl
VG9Qcm9wZXJ0eU1hcCBpcyBjcmVhdGVkIGZvciBlYWNoIFNWRypFbGVtZW50LiBUaGUgY29uc3Ry
dWN0b3Igb2YgU1ZHUmVjdEVsZW1lbnQgaXMgc3VwcG9zZWQgdG8gY2FsbAorICAgICAgICAgICAg
cmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdSZWN0RWxlbWVudCgpLCB3aGljaCBjb2xs
ZWN0cyBhbGwgcHJvcGVydGllcyBvZiBTVkdSZWN0RWxlbWVudCBhbmQgYWxsIGl0cyBwYXJlbnQg
Y2xhc3NlcyBhbmQgc3RvcmVzIHRoZW0KKyAgICAgICAgICAgIGluIGEgVmVjdG9yPGNvbnN0IFNW
R1Byb3BlcnR5SW5mbyo+LiBUaGlzIFZlY3RvciBpcyBzdG9yZWQgaW4gYSBIYXNoTWFwPFF1YWxp
ZmllZE5hbWUsIFZlY3Rvcjxjb25zdCBTVkdQcm9wZXJ0eUluZm8qPiA+IHdoZXJlIHRoZSBrZXkK
KyAgICAgICAgICAgIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSAoZWcuIFNWR05hbWVzOjp4QXR0ciAt
PiBTVkdSZWN0RWxlbWVudDo6eFByb3BlcnR5SW5mbykuIFRoaXMgaXMgb25seSBkb25lIF9vbmNl
XyBwZXIgU1ZHUmVjdEVsZW1lbnQuCisKKyAgICAgICAgICAgIFNWR0VsZW1lbnQgY29udGFpbnMg
YSAidmlydHVhbCBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBsb2NhbEF0dHJpYnV0ZVRvUHJv
cGVydHlNYXAoKSIgbWV0aG9kLCBhbmQgU1ZHUmVjdEVsZW1lbnQgb3ZlcnJpZGVzIGl0CisgICAg
ICAgICAgICBhbmQgcmV0dXJucyBTVkdSZWN0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eU1h
cCgpICh3aGljaCBpcyBzdGF0aWMhKSAtLSB0aGlzIGlzIGhpZGRlbiBhZ2FpbiBpbiB0aGUgbWFj
cm9zLCBubyBuZWVkIHRvIHdyaXRlIGFueSBjb2RlLgorCisgICAgICAgICAgICBTVkdBdHRyaWJ1
dGVUb1Byb3BlcnR5TWFwIHByb3ZpZGVzIGZvbGxvd2luZyBBUEk6CisgICAgICAgICAgICAtIGJv
b2wgc3luY2hyb25pemVQcm9wZXJ0eShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICAgICAgICAgIC0gdm9pZCBzeW5jaHJv
bml6ZVByb3BlcnRpZXMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCisgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBBIGdlbmVyaWMgd2F5IHRvIHN5bmNocm9uaXplIGEgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eSB3aXRoIGl0cyBYTUwgRE9NIGF0dHJpYnV0ZS4gQW55IFNWRyBET00gY2hhbmdl
IHRvIGVnLiA8cmVjdHM+IHggcHJvcGVydHkgd2lsbCBub3cgdHJpZ2dlcgorICAgICAgICAgICAg
ICAgIGNvbnRleHRFbGVtZW50LT5sb2NhbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKS5zeW5jaHJv
bml6ZVByb3BlcnR5KHRoaXMsIFNWR05hbWVzOjp4QXR0cikKKyAgICAgICAgICAgICAgICBUaGUg
U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCB3aWxsIGFzayBpdHMgSGFzaE1hcCBmb3IgdGhlIFZl
Y3RvciBjb250YWluaW5nIHRoZSBwcm9wZXJ0aWVzIGZvciBTVkdOYW1lczo6eEF0dHIgKGluIHRo
YXQgY2FzZSwganVzdCBvbmUgeEFuaW1hdGVkKCkpLgorCisgICAgICAgICAgICAtIHZvaWQgYW5p
bWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSwgVmVjdG9yPEFuaW1hdGVkUHJvcGVydHlUeXBlPiYgcHJvcGVydHlUeXBlcykKKwor
ICAgICAgICAgICAgICAgIFRoaXMgbWV0aG9kIHJlcGxhY2VzIHRoZSBmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eU1hcCBpbXBsZW1lbnRhdGlvbnMgZXZlcnl3aGVyZS4KKyAgICAgICAgCisgICAgICAg
ICAgICAtIHZvaWQgYW5pbWF0ZWRQcm9wZXJ0aWVzRm9yQXR0cmlidXRlKFNWR0VsZW1lbnQqIGNv
bnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBWZWN0b3I8
UmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+ID4mIHByb3BlcnRpZXMpOworCisgICAgICAgICAg
ICAgICAgVGhpcyBtZXRob2QgaXMgbm90IHVzZWQgeWV0LCBidXQgYWxsb3dzIHVzIHRvIGNvbGxl
Y3QgYWxsIFNWR0FuaW1hdGVkUHJvcGVyaWVzIGZvciBhIFF1YWxpZmllZE5hbWUgLS0gdGhlIGlu
aXRpYWwgZ29hbCBmb3IgdGhpcyBwYXRjaC4KKworICAgICAgICAjNCkgSW4gYWxsIGNwcCBmaWxl
cywgYWRkIGEgY2FsbCB0byAicmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JDbGFzc05hbWUo
KSIgaW4gdGhlIGNvbnN0cnVjdG9yLiBGb3JnZXR0aW5nIHRoaXMgd2lsbCByZXN1bHQgaW4gYSBj
b21waWxlIGVycm9yLgorCisgICAgICAgIERvZXNuJ3QgYWZmZWN0IGFueSB0ZXN0cywgb25seSBn
aXZlcyBwZXJmb3JtYW5jZSBiZW5lZml0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBB
ZGQgc3ZnL3Byb3BlcnRpZXMvKFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuKnxTVkdQcm9wZXJ0
eUluZm8uaCkgdG8gYnVpbGQuCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogRGl0dG8u
CisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnBybzog
RGl0dG8uCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpdHRvLgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OmFuZ2xlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFya2VyOjptYXJrZXJUcmFuc2Zvcm1hdGlvbik6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6Om1hcmtlclVuaXRzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR1RleHRQYXRoOjpSZW5kZXJTVkdUZXh0UGF0aCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdUZXh0UGF0aDo6ZXhhY3RBbGlnbm1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHVGV4dFBhdGg6OnN0cmV0Y2hNZXRob2QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRv
cjw8KToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlQ29tbW9uR3JhZGllbnRQcm9wZXJ0aWVzKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRDaHVua0J1aWxkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGV4dENodW5rQnVpbGRlcjo6YWRkVGV4dENodW5rKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVGV4dExheW91dEVuZ2luZTo6cGFyZW50RGVmaW5lc1RleHRMZW5ndGgpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGV4dExheW91dEVuZ2luZTo6YmVnaW5UZXh0UGF0aExheW91dCk6Cisg
ICAgICAgICogc3ZnL0dyYWRpZW50QXR0cmlidXRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
ZGllbnRBdHRyaWJ1dGVzOjpHcmFkaWVudEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhZGllbnRBdHRyaWJ1dGVzOjpzcHJlYWRNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
ZGllbnRBdHRyaWJ1dGVzOjpzZXRTcHJlYWRNZXRob2QpOgorICAgICAgICAqIHN2Zy9TVkdBRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBRWxlbWVudDo6U1ZHQUVsZW1lbnQpOgor
ICAgICAgICAqIHN2Zy9TVkdBRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1l
bnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
RWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQUVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2
Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQWx0R2x5cGhF
bGVtZW50OjpTVkdBbHRHbHlwaEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdBbHRHbHlwaEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OlNWR0FuaW1hdGVFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpoYXNWYWxpZEF0dHJpYnV0ZVR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmRldGVybWluZUFuaW1hdGVkUHJvcGVy
dHlUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVB
bmltYXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpkZXRl
cm1pbmVQcm9wZXJ0eVZhbHVlVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVs
ZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGVFbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmVuc3VyZUFuaW1hdG9yKToKKyAgICAgICAgKiBz
dmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZVRyYW5zZm9y
bUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1l
bnQ6Omhhc1ZhbGlkQXR0cmlidXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
VHJhbnNmb3JtRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmNhbGN1bGF0
ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVs
ZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZVRy
YW5zZm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRBbmdsZS5oOgorICAg
ICAgICAqIHN2Zy9TVkdBbmltYXRlZEJvb2xlYW4uaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbi5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEludGVnZXIuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0
ZWRMZW5ndGhMaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmg6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRSZWN0
Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmg6CisgICAgICAgICogc3ZnL1NW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpTVkdBbmltYXRlZFR5cGUp
OgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVkVHlwZTo6dHlwZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1h
dG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGVBbmltYXRvcjo6U1ZHQW5p
bWF0ZWRUeXBlQW5pbWF0b3IpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OlNWR0FuaW1hdGlvbkVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6Y3VycmVudFZh
bHVlc0ZvclZhbHVlc0FuaW1hdGlvbik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlvbkVsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OnN5bmNocm9uaXpl
UmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50
OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRpb25FbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBz
dmcvU1ZHQW5pbWF0b3JGYWN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRvckZh
Y3Rvcnk6OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVudDo6U1ZHQ2lyY2xlRWxlbWVudCk6CisgICAg
ICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NpcmNs
ZUVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdDaXJjbGVFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdl
KToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6U1ZHQ2xpcFBhdGhFbGVtZW50KToKKyAgICAgICAgKiBz
dmcvU1ZHQ2xpcFBhdGhFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVs
ZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdDbGlwUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFn
ZSk6CisgICAgICAgICogc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50
OjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0N1
cnNvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ3Vyc29yRWxlbWVudDo6U1ZH
Q3Vyc29yRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0N1cnNvckVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJl
cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVp
cmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JFbGVtZW50OjpzeW5j
aHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHRGVmc0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRGVmc0VsZW1lbnQ6OlNWR0RlZnNFbGVtZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHRGVmc0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RlZnNF
bGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRGVmc0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0RlZnNFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAg
ICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50
OjphbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdFbGVtZW50Ojp1cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdFbGVtZW50Ojpsb2NhbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXApOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgor
ICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN5
bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50
OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHRWxs
aXBzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OlNW
R0VsbGlwc2VFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVh
dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnN5bmNocm9uaXpl
UmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50
OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OlNWR0ZFQmxl
bmRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25l
bnRUcmFuc2ZlckVsZW1lbnQ6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9z
aXRlRWxlbWVudDo6U1ZHRkVDb21wb3NpdGVFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVD
b21wb3NpdGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpT
VkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OlNW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpT
VkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpTVkdGRURyb3BT
aGFkb3dFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZF
Rmxvb2RFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OlNWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUltYWdlRWxlbWVudDo6U1ZHRkVJbWFnZUVsZW1lbnQpOgorICAgICAgICAqIHN2
Zy9TVkdGRUltYWdlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6U1ZHRkVMaWdodEVsZW1l
bnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdGRU1lcmdlRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU1v
cnBob2xvZ3lFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQ6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBo
b2xvZ3lFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRU9mZnNldEVsZW1lbnQ6OlNWR0ZFT2Zmc2V0RWxlbWVudCk6
CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQ6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQpOgorICAg
ICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0ZFVGlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxlbWVu
dDo6U1ZHRkVUaWxlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdG
aWx0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6OlNW
R0ZpbHRlckVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OlNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAgICAgICAqIHN2Zy9TVkdGaXRUb1Zp
ZXdCb3guY3BwOgorICAgICAgICAqIHN2Zy9TVkdGaXRUb1ZpZXdCb3guaDoKKyAgICAgICAgKiBz
dmcvU1ZHRm9udEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEVsZW1lbnQ6
OlNWR0ZvbnRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEVsZW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZvbnRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAg
KiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQ6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zv
cmVpZ25PYmplY3RFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRF
eHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50Ojpz
eW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHR0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1lbnQ6OlNWR0dFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHR0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dFbGVtZW50OjpzeW5j
aHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1lbnQ6
OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dF
bGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHR2x5
cGhFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHR2x5cGhFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFk
aWVudEVsZW1lbnQ6OlNWR0dyYWRpZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdH
cmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdH
cmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6
bmVlZHNQZW5kaW5nUmVzb3VyY2VIYW5kbGluZyk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OlNWR0ltYWdlRWxl
bWVudCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVt
TGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6U1ZHTGluZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9T
VkdMaW5lRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZUVsZW1lbnQ6OnN5bmNo
cm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lRWxlbWVu
dDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGluZUVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9T
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50OjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQpOgorICAgICAgICAqIHN2
Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTVBhdGhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01QYXRoRWxlbWVudDo6U1ZHTVBhdGhFbGVt
ZW50KToKKyAgICAgICAgKiBzdmcvU1ZHTVBhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R01hcmtlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6
b3JpZW50VHlwZVByb3BlcnR5SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVt
ZW50OjpTVkdNYXJrZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVs
ZW1lbnQ6OnNldE9yaWVudFRvQXV0byk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVt
ZW50OjpzZXRPcmllbnRUb0FuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1l
bnQ6OnN5bmNocm9uaXplT3JpZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJF
bGVtZW50Ojpsb29rdXBPckNyZWF0ZU9yaWVudFR5cGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR01hcmtlckVsZW1lbnQ6Om9yaWVudFR5cGVBbmltYXRlZCk6CisgICAgICAgICogc3Zn
L1NWR01hcmtlckVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6
Om9yaWVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6b3JpZW50
VHlwZUJhc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpzZXRP
cmllbnRUeXBlQmFzZVZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHTWFza0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6OlNWR01hc2tFbGVtZW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHTWFza0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVt
ZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TWFza0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR01hc2tFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAg
ICAgKiBzdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR01p
c3NpbmdHbHlwaEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OmRQcm9wZXJ0eUluZm8pOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OlNWR1BhdGhFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhFbGVtZW50Ojpsb29rdXBPckNyZWF0ZURXcmFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpzeW5jaHJvbml6ZUQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0aEVsZW1lbnQ6OnBhdGhTZWdMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dGhFbGVtZW50OjphbmltYXRlZFBhdGhTZWdMaXN0KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpwYXRoQnl0ZVN0cmVh
bSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJl
ZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpzeW5jaHJvbml6
ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6
c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdXaXRo
Q29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ1dpdGhDb250ZXh0Ojphbmlt
YXRlZFByb3BlcnR5KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OlNWR1BhdHRlcm5FbGVtZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dHRlcm5FbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxh
bmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHUG9seUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUG9seUVsZW1lbnQ6OnBvaW50c1Byb3BlcnR5SW5mbyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQb2x5RWxlbWVudDo6U1ZHUG9seUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUG9seUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVBvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQb2x5RWxlbWVudDo6bG9va3VwT3JDcmVhdGVQb2ludHNXcmFwcGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BvbHlFbGVtZW50Ojpwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9s
eUVsZW1lbnQ6OmFuaW1hdGVkUG9pbnRzKToKKyAgICAgICAgKiBzdmcvU1ZHUG9seUVsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVk
RmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OnN5bmNocm9uaXpl
UmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50Ojpz
eW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dDo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3Jh
ZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50OjpTVkdSZWN0RWxlbWVudCk6CisgICAgICAgICog
c3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6
c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RF
bGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZWN0RWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICog
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6
U1ZHU1ZHRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5z
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3Rl
bUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTY3JpcHRFbGVtZW50OjpTVkdTY3JpcHRFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6U1ZHU3RvcEVsZW1lbnQpOgor
ICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6OlNWR1N0eWxl
ZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVydHlUb1R5cGVNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JB
dHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
U3dpdGNoRWxlbWVudDo6U1ZHU3dpdGNoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1N3aXRj
aEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N3aXRjaEVsZW1lbnQ6OnN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTd2l0Y2hFbGVtZW50
OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
d2l0Y2hFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcv
U1ZHU3ltYm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTeW1ib2xFbGVtZW50
OjpTVkdTeW1ib2xFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHU3ltYm9sRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdUUmVmRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
UmVmRWxlbWVudDo6U1ZHVFJlZkVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdUUmVmRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9T
VkdUU3BhbkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGVzdHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGVzdHM6OnJlcXVpcmVkRmVhdHVyZXNQcm9wZXJ0eUluZm8pOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnJlcXVpcmVkRXh0ZW5zaW9uc1Byb3BlcnR5SW5mbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6c3lzdGVtTGFuZ3VhZ2VQcm9wZXJ0eUluZm8pOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OmF0dHJpYnV0ZVRvUHJvcGVydHlNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2Up
OgorICAgICAgICAqIHN2Zy9TVkdUZXN0cy5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVu
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50Ojp0
ZXh0TGVuZ3RoUHJvcGVydHlJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50
RWxlbWVudDo6U1ZHVGV4dENvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
eHRDb250ZW50RWxlbWVudDo6c3luY2hyb25pemVUZXh0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6bG9va3VwT3JDcmVhdGVUZXh0TGVuZ3RoV3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnRleHRMZW5ndGhB
bmltYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN5bmNocm9uaXplUmVx
dWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6
OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
eHRDb250ZW50RWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICog
c3ZnL1NWR1RleHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRFbGVtZW50
OjpTVkdUZXh0RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1RleHRFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
ZXh0UGF0aEVsZW1lbnQ6OlNWR1RleHRQYXRoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1Rl
eHRQYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OlNWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHA6CisgICAgICAgICog
c3ZnL1NWR1RpdGxlRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGl0bGVFbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpTVkdVc2VFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6
c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVs
ZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1VzZUVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2
Zy9TVkdWaWV3RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3RWxlbWVudDo6
U1ZHVmlld0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdWaWV3U3BlYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6
U1ZHVmlld1NwZWMpOgorICAgICAgICAqIHN2Zy9TVkdWaWV3U3BlYy5oOgorICAgICAgICAqIHN2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY6OnJh
d0FuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlz
dFByb3BlcnR5VGVhck9mZi5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRMaXN0UHJv
cGVydHlUZWFyT2ZmOjppc0FuaW1hdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
ZExpc3RQcm9wZXJ0eVRlYXJPZmY6OnJhd0FuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVkUHJvcGVydHk6OnVwZGF0ZUFuaW1WYWwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cFdyYXBwZXIpOgorICAgICAgICAqIHN2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlNYWNyb3MuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZi5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY6OmlzQW5pbWF0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmOjpyYXdBbmltYXRlZFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmOjp1cGRhdGVBbmltVmFsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmOjpTVkdBbmltYXRlZFBy
b3BlcnR5VGVhck9mZik6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRTdGF0
aWNQcm9wZXJ0eVRlYXJPZmYuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkU3RhdGlj
UHJvcGVydHlUZWFyT2ZmOjppc0FuaW1hdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZjo6cmF3QW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICog
c3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YW5pbWF0ZWRQcm9wZXJ0
aWVzRm9yQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVU
b1Byb3BlcnR5TWFwLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Q
cm9wZXJ0eU1hcDo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwOjp+U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwOjppc0VtcHR5KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA6OmFkZFByb3BlcnRp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YWRkUHJv
cGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YW5p
bWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0
cmlidXRlVG9Qcm9wZXJ0eU1hcDo6c3luY2hyb25pemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA6OnN5bmNocm9uaXplUHJvcGVydHkpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YW5pbWF0ZWRQcm9w
ZXJ0eSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlJbmZvOjpTVkdQcm9wZXJ0eUluZm8pOgor
ICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUHJvcGVydHlUZWFyT2ZmOjp1cGRhdGVBbmltVmFsKToKKwogMjAxMS0wNy0w
NiAgQW5kcmFzIEJlY3NpICA8YWJlY3NpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4ICJ3YXJu
aW5nOiBhIGA7JyBtaWdodCBiZSBuZWVkZWQgYXQgdGhlIGVuZCBvZiBhY3Rpb24gY29kZSIKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xODA2LDYgKzE4MDYsNyBAQCBJRiAo
RU5BQkxFX1NWRykKICAgICAgICAgc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAK
ICAgICAgICAgc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcAogICAgICAgICBzdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAorICAgICAgICBzdmcvcHJvcGVy
dGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcAogICAgICAgICBzdmcvcHJvcGVydGll
cy9TVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAKICAgICApCiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zMzkzLDYgKzMzOTMsOCBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9QYXR0ZXJuQXR0cmlidXRlcy5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZEVudW1lcmF0aW9uUHJv
cGVydHlUZWFyT2ZmLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmggXApAQCAtMzQwOCw2ICsz
NDEwLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmggXAorCVNvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5SW5mby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdQcm9wZXJ0eVRlYXJPZmYuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oIFwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDc3LDYgKzEwNzcsNyBAQAogICAgICAgICAgICAgJ3N2Zy9TVkdUcmFu
c2Zvcm1MaXN0LmgnLAogICAgICAgICAgICAgJ3N2Zy9hbmltYXRpb24vU01JTFRpbWUuaCcsCiAg
ICAgICAgICAgICAnc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oJywKKyAgICAgICAgICAg
ICdzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmgnLAogICAgICAgICAg
ICAgJ3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYu
aCcsCiAgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlU
ZWFyT2ZmLmgnLAogICAgICAgICAgICAgJ3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHkuaCcsCkBAIC0xMDkwLDYgKzEwOTEsNyBAQAogICAgICAgICAgICAgJ3N2Zy9wcm9wZXJ0aWVz
L1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCcsCiAgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMv
U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCcsCiAgICAgICAgICAgICAnc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJvcGVydHkuaCcsCisgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHUHJv
cGVydHlJbmZvLmgnLAogICAgICAgICAgICAgJ3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVh
ck9mZi5oJywKICAgICAgICAgICAgICdzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5o
JywKICAgICAgICAgICAgICdzdmcvcHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFy
T2ZmLmgnLApAQCAtNjAwMCw2ICs2MDAyLDcgQEAKICAgICAgICAgICAgICdzdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXIuaCcsCiAgICAgICAgICAgICAnc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyQnVpbGRlci5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZpbHRlckJ1aWxkZXIuaCcsCisgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0
cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCcsCiAgICAgICAgICAgICAnc3Zn
L3Byb3BlcnRpZXMvU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwJywKICAgICAgICAg
ICAgICd3ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAnLApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5wcm8JKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHdv
cmtpbmcgY29weSkKQEAgLTIyOTgsNiArMjI5OCw3IEBAIEhFQURFUlMgKz0gXAogICAgIHN2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaCBcCiAgICAgc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyLmggXAogICAgIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIFwKKyAgICBz
dmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmggXAogICAgIHN2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCBcCiAgICAgc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmggXAogICAgIHN2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCBcCkBAIC0y
MzEyLDYgKzIzMTMsNyBAQCBIRUFERVJTICs9IFwKICAgICBzdmcvcHJvcGVydGllcy9TVkdMaXN0
UHJvcGVydHlUZWFyT2ZmLmggXAogICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR1BhdGhTZWdMaXN0UHJv
cGVydHlUZWFyT2ZmLmggXAogICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmggXAorICAg
IHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5SW5mby5oIFwKICAgICBzdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eVRlYXJPZmYuaCBcCiAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFp
dHMuaCBcCiAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5o
IFwKQEAgLTMyNjEsNiArMzI2Myw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9MSkg
ewogICAgICAgICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwIFwKICAgICAgICAg
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAgXAogICAgICAgICBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIFwKKyAgICAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmli
dXRlVG9Qcm9wZXJ0eU1hcC5jcHAgXAogICAgICAgICBzdmcvcHJvcGVydGllcy9TVkdQYXRoU2Vn
TGlzdFByb3BlcnR5VGVhck9mZi5jcHAKIAogICAgIGxpbnV4LWcrKyo6Q09ORklHKGRlYnVnLCBk
ZWJ1Z3xyZWxlYXNlKTppc0VxdWFsKFFUX0FSQ0gsaTM4NikgewpJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDkwNDU0KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTY2NDczLDYgKzY2NDczLDE0IEBACiAJCQkJTmFtZT0icHJvcGVydGllcyIKIAkJCQk+
CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdccHJvcGVydGllc1xTVkdBdHRy
aWJ1dGVUb1Byb3BlcnR5TWFwLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xwcm9wZXJ0aWVzXFNWR0F0dHJpYnV0ZVRvUHJvcGVy
dHlNYXAuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHN2Z1xwcm9wZXJ0aWVzXFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJP
ZmYuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTY2NTMzLDYgKzY2NTQxLDEwIEBACiAJCQkJ
CT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdccHJv
cGVydGllc1xTVkdQcm9wZXJ0eUluZm8uaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xwcm9wZXJ0aWVzXFNWR1Byb3BlcnR5VGVhck9m
Zi5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTA0NTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTg2LDYgKzg2LDcgQEAKIAkJMDgxNjY4REExMjU2MDNENTAwNkYyNURFIC8qIFNWR1Rl
eHRMYXlvdXRFbmdpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA4MTY2OEQ4MTI1NjAzRDUwMDZGMjVERSAvKiBTVkdUZXh0TGF5b3V0RW5naW5lLmgg
Ki87IH07CiAJCTA4MUFBOERBMTExMTIzN0UwMDJBQjA2RSAvKiBTVkdFbGVtZW50UmFyZURhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MUFBOEQ5
MTExMTIzN0UwMDJBQjA2RSAvKiBTVkdFbGVtZW50UmFyZURhdGEuaCAqLzsgfTsKIAkJMDgxQ0RG
QkYxMjZFQ0ZFODAwRDIxNUNBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MUNERkJFMTI2
RUNGRTgwMEQyMTVDQSAvKiBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDgxREQ0OUMxM0JB
MUE2MDAwREM3NjI3IC8qIFNWR1Byb3BlcnR5SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxREQ0OUIxM0JBMUE2MDAwREM3NjI3IC8qIFNWR1By
b3BlcnR5SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTA4MUVCRjNBMEZEMzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MUVCRjM4MEZE
MzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmNwcCAqLzsgfTsKIAkJMDgxRUJGM0Iw
RkQzNEY0MTAwREE3NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MUVCRjM5MEZEMzRGNDEwMERBNzU1OSAvKiBT
VkdGaWx0ZXJCdWlsZGVyLmggKi87IH07CiAJCTA4MjNEMTU5MTI3QUQ2QUMwMDBFQkM5NSAvKiBT
VkdBbmltYXRlZEludGVnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4MjNEMTU4MTI3QUQ2QUMwMDBFQkM5NSAvKiBTVkdBbmltYXRlZEludGVnZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTY4
LDYgKzE2OSw4IEBACiAJCTA4RjBCRkM2MTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0TWV0cmlj
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMEJG
QzExMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRNZXRyaWNzLmggKi87IH07CiAJCTA4RjJGMDA5
MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RjJGMDA3MTIxM0U2MTcwMERDRUM0
OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmNwcCAqLzsgfTsKIAkJMDhGMkYwMEExMjEzRTYxNzAw
RENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RjJGMDA4MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJ
bWFnZVJlc291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMDhGQjE3QzExM0JDN0U5MTAwMDQwMDg2IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVy
dHlNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDhGQjE3QzAxM0JDN0U5MTAwMDQwMDg2IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3Bw
ICovOyB9OworCQkwOEZCM0Y4NDEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmlidXRlVG9Qcm9w
ZXJ0eU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDhGQjNGODMxM0JDNzU0QzAwOTlGQzE4IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwOEZFMEJD
NTEyN0UyQUMxMDAwQzRGQjUgLyogU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEZFMEJDNDEyN0Uy
QUMxMDAwQzRGQjUgLyogU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhGRjEwMjAxMjk1MEY1
QTAwRjAwMjc2IC8qIFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RkYxMDFGMTI5NTBGNTkwMEYw
MDI3NiAvKiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAgKi87IH07CiAJCTBBNDg0
NDk5MENBNDRDQjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEE0ODQ0OTgwQ0E0NENCMjAwQjdCRDQ4IC8qIFNv
ZnRMaW5raW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTY0NTEsNiArNjQ1NCw3IEBACiAJCTA4MTY2OEQ4MTI1NjAzRDUwMDZGMjVERSAvKiBT
VkdUZXh0TGF5b3V0RW5naW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R1RleHRMYXlvdXRFbmdpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgxQUE4
RDkxMTExMjM3RTAwMkFCMDZFIC8qIFNWR0VsZW1lbnRSYXJlRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdFbGVtZW50UmFyZURhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDgxQ0RGQkUxMjZFQ0ZFODAwRDIxNUNBIC8qIFNWR0FuaW1hdGVkUHJv
cGVydHlTeW5jaHJvbml6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwODFERDQ5QjEzQkExQTYwMDBEQzc2MjcgLyogU1ZHUHJvcGVydHlJbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Byb3BlcnR5SW5mby5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwODFFQkYzODBGRDM0RjQxMDBEQTc1NTkgLyogU1ZHRmlsdGVy
QnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdGaWx0
ZXJCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgxRUJGMzkwRkQz
NEY0MTAwREE3NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHRmlsdGVyQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwODIzRDE1ODEyN0FENkFDMDAwRUJDOTUgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkSW50ZWdlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjU0NSw2ICs2NTQ5LDggQEAKIAkJMDhGMEJGQzEx
MjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRNZXRyaWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR1RleHRNZXRyaWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA4RjJGMDA3MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckltYWdlUmVzb3VyY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEYyRjAwODEyMTNFNjE3MDBEQ0VD
NDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW5kZXJJbWFnZVJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA4RkIxN0MwMTNCQzdFOTEwMDA0MDA4NiAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0F0dHJpYnV0ZVRvUHJv
cGVydHlNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEZCM0Y4MzEzQkM3
NTRDMDA5OUZDMTggLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RkUwQkM0MTI3RTJBQzEwMDBDNEZCNSAvKiBTVkdBbmlt
YXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA4RkYxMDFGMTI5NTBGNTkwMEYwMDI3NiAvKiBTVkdQYXRoU2VnTGlzdFByb3Bl
cnR5VGVhck9mZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQ
YXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBBNDg0NDk4MENBNDRDQjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTI3NDQsMTEgKzEyNzUwLDE0IEBACiAJCQkJMDg4QTBERkYxMjZFRjFEQjAw
OTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkJMDg1MjVFNjIx
Mjc4QzAwMTAwQTg0Nzc4IC8qIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmLmggKi8s
CiAJCQkJMDg1QTE1OTIxMjg5QThERDAwMjcxMEUzIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dFByb3BlcnR5VGVhck9mZi5oICovLAorCQkJCTA4RkIxN0MwMTNCQzdFOTEwMDA0MDA4NiAvKiBT
VkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcCAqLywKKwkJCQkwOEZCM0Y4MzEzQkM3NTRDMDA5
OUZDMTggLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oICovLAogCQkJCTA4MTA3NjQzMTI4
Mjg1NTYwMDdDNjNCQSAvKiBTVkdMaXN0UHJvcGVydHkuaCAqLywKIAkJCQkwODhBMEUwMDEyNkVG
MURCMDA5NzhGN0EgLyogU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oICovLAogCQkJCTA4RkYxMDFG
MTI5NTBGNTkwMEYwMDI3NiAvKiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAgKi8s
CiAJCQkJMDg0QTA4MjgxMjhENzg2NzAwMkRCMUYxIC8qIFNWR1BhdGhTZWdMaXN0UHJvcGVydHlU
ZWFyT2ZmLmggKi8sCiAJCQkJMDg4QTBFMDExMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5
LmggKi8sCisJCQkJMDgxREQ0OUIxM0JBMUE2MDAwREM3NjI3IC8qIFNWR1Byb3BlcnR5SW5mby5o
ICovLAogCQkJCTA4OEEwRTAyMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRlYXJPZmYu
aCAqLywKIAkJCQkwODhBMEUwMzEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUcmFpdHMu
aCAqLywKIAkJCQkwODgwRjcwRDEyODJCNDZEMDA5NDg1MDUgLyogU1ZHU3RhdGljTGlzdFByb3Bl
cnR5VGVhck9mZi5oICovLApAQCAtMjMwODgsNiArMjMwOTcsOCBAQAogCQkJCTA4NjM5NTE2MTNC
NUZFNTcwMEJCMzQ0RCAvKiBTVkdBbmltYXRlZFBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCTQz
MUEyRjlDMTNCNkYyQjAwMDc3OTFFNCAvKiBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUFCQjc4NzEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJy
ZWFrSXRlcmF0b3JQb29sSUNVLmggaW4gSGVhZGVycyAqLywKKwkJCQkwODFERDQ5QzEzQkExQTYw
MDBEQzc2MjcgLyogU1ZHUHJvcGVydHlJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQkwOEZCM0Y4
NDEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0yNTg1NCw2ICsyNTg2NSw3IEBACiAJCQkJNDMxQTJGRDcxM0I3NzA3QTAwNzc5
MUU0IC8qIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzFB
MzAyMTEzQjg5RENDMDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQzMUEzMDg4MTNCOEY5NzgwMDc3OTFFNCAvKiBTVkdBbmlt
YXRlZEJvb2xlYW4uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDhGQjE3QzExM0JDN0U5MTAwMDQw
MDg2IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDNGNkZEOTYxM0JDRDBCMTAwMjI0MDUyIC8qIFNWR0FuaW1hdGVkSW50ZWdlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VH
cmFkaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzgsMTUgKzI3OCwxNSBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlR3Jh
ZGllbnQ6OmFkZFN0b3BzCiAgICAgICAgIGdyYWRpZW50RGF0YS0+Z3JhZGllbnQtPmFkZENvbG9y
U3RvcCgqaXQpOwogfQogCi1HcmFkaWVudFNwcmVhZE1ldGhvZCBSZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50OjpwbGF0Zm9ybVNwcmVhZE1ldGhvZEZyb21TVkdUeXBlKFNWR0dyYWRpZW50RWxlbWVu
dDo6U1ZHU3ByZWFkTWV0aG9kVHlwZSBtZXRob2QpIGNvbnN0CitHcmFkaWVudFNwcmVhZE1ldGhv
ZCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjpwbGF0Zm9ybVNwcmVhZE1ldGhvZEZyb21TVkdU
eXBlKFNWR1NwcmVhZE1ldGhvZFR5cGUgbWV0aG9kKSBjb25zdAogewogICAgIHN3aXRjaCAobWV0
aG9kKSB7Ci0gICAgY2FzZSBTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR19TUFJFQURNRVRIT0RfVU5L
Tk9XTjoKLSAgICBjYXNlIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHX1NQUkVBRE1FVEhPRF9QQUQ6
CisgICAgY2FzZSBTVkdTcHJlYWRNZXRob2RVbmtub3duOgorICAgIGNhc2UgU1ZHU3ByZWFkTWV0
aG9kUGFkOgogICAgICAgICByZXR1cm4gU3ByZWFkTWV0aG9kUGFkOwotICAgIGNhc2UgU1ZHR3Jh
ZGllbnRFbGVtZW50OjpTVkdfU1BSRUFETUVUSE9EX1JFRkxFQ1Q6CisgICAgY2FzZSBTVkdTcHJl
YWRNZXRob2RSZWZsZWN0OgogICAgICAgICByZXR1cm4gU3ByZWFkTWV0aG9kUmVmbGVjdDsKLSAg
ICBjYXNlIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHX1NQUkVBRE1FVEhPRF9SRVBFQVQ6CisgICAg
Y2FzZSBTVkdTcHJlYWRNZXRob2RSZXBlYXQ6CiAgICAgICAgIHJldHVybiBTcHJlYWRNZXRob2RS
ZXBlYXQ7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaAkocmV2aXNpb24gOTA0NTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCBib29sIGNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoU1ZHR3JhZGllbnRFbGVtZW50KikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBidWlsZEdyYWRpZW50KEdyYWRpZW50RGF0YSosIFNWR0dyYWRp
ZW50RWxlbWVudCopIGNvbnN0ID0gMDsKIAotICAgIEdyYWRpZW50U3ByZWFkTWV0aG9kIHBsYXRm
b3JtU3ByZWFkTWV0aG9kRnJvbVNWR1R5cGUoU1ZHR3JhZGllbnRFbGVtZW50OjpTVkdTcHJlYWRN
ZXRob2RUeXBlKSBjb25zdDsKKyAgICBHcmFkaWVudFNwcmVhZE1ldGhvZCBwbGF0Zm9ybVNwcmVh
ZE1ldGhvZEZyb21TVkdUeXBlKFNWR1NwcmVhZE1ldGhvZFR5cGUpIGNvbnN0OwogCiBwcml2YXRl
OgogICAgIGJvb2wgbV9zaG91bGRDb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzIDogMTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VNYXJrZXIuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDYsNyArMTA2LDcgQEAgZmxvYXQgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OmFuZ2xlKCkgYwog
ICAgIEFTU0VSVChtYXJrZXIpOwogCiAgICAgZmxvYXQgYW5nbGUgPSAtMTsKLSAgICBpZiAobWFy
a2VyLT5vcmllbnRUeXBlKCkgPT0gU1ZHTWFya2VyRWxlbWVudDo6U1ZHX01BUktFUl9PUklFTlRf
QU5HTEUpCisgICAgaWYgKG1hcmtlci0+b3JpZW50VHlwZSgpID09IE1hcmtlck9yaWVudEFuZ2xl
KQogICAgICAgICBhbmdsZSA9IG1hcmtlci0+b3JpZW50QW5nbGUoKS52YWx1ZSgpOwogCiAgICAg
cmV0dXJuIGFuZ2xlOwpAQCAtMTE4LDcgKzExOCw3IEBAIEFmZmluZVRyYW5zZm9ybSBSZW5kZXJT
VkdSZXNvdXJjZU1hcmtlcjoKICAgICBBU1NFUlQobWFya2VyKTsKIAogICAgIGZsb2F0IG1hcmtl
ckFuZ2xlID0gYW5nbGUoKTsKLSAgICBib29sIHVzZVN0cm9rZVdpZHRoID0gKG1hcmtlci0+bWFy
a2VyVW5pdHMoKSA9PSBTVkdNYXJrZXJFbGVtZW50OjpTVkdfTUFSS0VSVU5JVFNfU1RST0tFV0lE
VEgpOworICAgIGJvb2wgdXNlU3Ryb2tlV2lkdGggPSBtYXJrZXItPm1hcmtlclVuaXRzKCkgPT0g
TWFya2VyVW5pdHNTdHJva2VXaWR0aDsKIAogICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07
CiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShvcmlnaW4ueCgpLCBvcmlnaW4ueSgpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTWFya2VyLmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2
MCw3IEBAIHB1YmxpYzoKIAogICAgIEZsb2F0UG9pbnQgcmVmZXJlbmNlUG9pbnQoKSBjb25zdDsK
ICAgICBmbG9hdCBhbmdsZSgpIGNvbnN0OwotICAgIFNWR01hcmtlckVsZW1lbnQ6OlNWR01hcmtl
clVuaXRzVHlwZSBtYXJrZXJVbml0cygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNWR01h
cmtlckVsZW1lbnQqPihub2RlKCkpLT5tYXJrZXJVbml0cygpOyB9CisgICAgU1ZHTWFya2VyVW5p
dHNUeXBlIG1hcmtlclVuaXRzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHTWFya2Vy
RWxlbWVudCo+KG5vZGUoKSktPm1hcmtlclVuaXRzKCk7IH0KIAogICAgIHZpcnR1YWwgUmVuZGVy
U1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHNfcmVzb3VyY2VU
eXBlOyB9CiAgICAgc3RhdGljIFJlbmRlclNWR1Jlc291cmNlVHlwZSBzX3Jlc291cmNlVHlwZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4
dFBhdGguY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVGV4dFBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyU1ZHVGV4dFBhdGg6OlJlbmRlclNWR1RleHRQ
YXRoKE5vZGUqIG4pCiAgICAgOiBSZW5kZXJTVkdJbmxpbmUobikKLSAgICAsIG1fc3RhcnRPZmZz
ZXQoMC4wZikKKyAgICAsIG1fc3RhcnRPZmZzZXQoMCkKICAgICAsIG1fZXhhY3RBbGlnbm1lbnQo
dHJ1ZSkKICAgICAsIG1fc3RyZXRjaE1ldGhvZChmYWxzZSkKIHsKQEAgLTY5LDEyICs2OSwxMiBA
QCBmbG9hdCBSZW5kZXJTVkdUZXh0UGF0aDo6c3RhcnRPZmZzZXQoKSBjCiAKIGJvb2wgUmVuZGVy
U1ZHVGV4dFBhdGg6OmV4YWN0QWxpZ25tZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8U1ZHVGV4dFBhdGhFbGVtZW50Kj4obm9kZSgpKS0+c3BhY2luZygpID09IFNWR19URVhU
UEFUSF9TUEFDSU5HVFlQRV9FWEFDVDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHVGV4dFBh
dGhFbGVtZW50Kj4obm9kZSgpKS0+c3BhY2luZygpID09IFRleHRQYXRoU3BhY2luZ0V4YWN0Owog
fQogCiBib29sIFJlbmRlclNWR1RleHRQYXRoOjpzdHJldGNoTWV0aG9kKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHVGV4dFBhdGhFbGVtZW50Kj4obm9kZSgpKS0+bWV0aG9k
KCkgPT0gU1ZHX1RFWFRQQVRIX01FVEhPRFRZUEVfU1RSRVRDSDsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8U1ZHVGV4dFBhdGhFbGVtZW50Kj4obm9kZSgpKS0+bWV0aG9kKCkgPT0gVGV4dFBhdGhN
ZXRob2RTdHJldGNoOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTkyLDkgKzE5Miw5IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0KICAgICByZXR1cm4gdHM7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJr
ZXJVbml0c1R5cGUmIG1hcmtlclVuaXQpCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgU1ZHTWFya2VyVW5pdHNUeXBlJiBtYXJrZXJVbml0KQogewot
ICAgIHRzIDw8IFNWR1Byb3BlcnR5VHJhaXRzPFNWR01hcmtlckVsZW1lbnQ6OlNWR01hcmtlclVu
aXRzVHlwZT46OnRvU3RyaW5nKG1hcmtlclVuaXQpOworICAgIHRzIDw8IFNWR1Byb3BlcnR5VHJh
aXRzPFNWR01hcmtlclVuaXRzVHlwZT46OnRvU3RyaW5nKG1hcmtlclVuaXQpOwogICAgIHJldHVy
biB0czsKIH0KIApAQCAtMjUxLDkgKzI1MSw5IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0KICAgICByZXR1cm4gdHM7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR1Nw
cmVhZE1ldGhvZFR5cGUmIHR5cGUpCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgU1ZHU3ByZWFkTWV0aG9kVHlwZSYgdHlwZSkKIHsKLSAgICB0cyA8
PCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR1NwcmVhZE1ldGhvZFR5
cGU+Ojp0b1N0cmluZyh0eXBlKS51cHBlcigpOworICAgIHRzIDw8IFNWR1Byb3BlcnR5VHJhaXRz
PFNWR1NwcmVhZE1ldGhvZFR5cGU+Ojp0b1N0cmluZyh0eXBlKS51cHBlcigpOwogICAgIHJldHVy
biB0czsKIH0KIApAQCAtNTAwLDExICs1MDAsMTEgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgYm91
bmRpbmdCb3hNb2RlU3RyaQogICAgIHJldHVybiBib3VuZGluZ0JveE1vZGUgPyAib2JqZWN0Qm91
bmRpbmdCb3giIDogInVzZXJTcGFjZU9uVXNlIjsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHdy
aXRlQ29tbW9uR3JhZGllbnRQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBTVkdHcmFkaWVudEVs
ZW1lbnQ6OlNWR1NwcmVhZE1ldGhvZFR5cGUgc3ByZWFkTWV0aG9kLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIGdyYWRpZW50VHJhbnNmb3JtLCBib29sIGJvdW5kaW5nQm94TW9kZSkKK3N0YXRpYyBp
bmxpbmUgdm9pZCB3cml0ZUNvbW1vbkdyYWRpZW50UHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywg
U1ZHU3ByZWFkTWV0aG9kVHlwZSBzcHJlYWRNZXRob2QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
Z3JhZGllbnRUcmFuc2Zvcm0sIGJvb2wgYm91bmRpbmdCb3hNb2RlKQogewogICAgIHdyaXRlTmFt
ZVZhbHVlUGFpcih0cywgImdyYWRpZW50VW5pdHMiLCBib3VuZGluZ0JveE1vZGVTdHJpbmcoYm91
bmRpbmdCb3hNb2RlKSk7CiAKLSAgICBpZiAoc3ByZWFkTWV0aG9kICE9IFNWR0dyYWRpZW50RWxl
bWVudDo6U1ZHX1NQUkVBRE1FVEhPRF9QQUQpCisgICAgaWYgKHNwcmVhZE1ldGhvZCAhPSBTVkdT
cHJlYWRNZXRob2RQYWQpCiAgICAgICAgIHRzIDw8ICIgW3NwcmVhZE1ldGhvZD0iIDw8IHNwcmVh
ZE1ldGhvZCA8PCAiXSI7CiAKICAgICBpZiAoIWdyYWRpZW50VHJhbnNmb3JtLmlzSWRlbnRpdHko
KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dENodW5rQnVpbGRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
Q2h1bmtCdWlsZGVyLmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRDaHVua0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAs
MTIgKzEzMCwxMiBAQCB2b2lkIFNWR1RleHRDaHVua0J1aWxkZXI6OmFkZFRleHRDaHVuayhWCiAg
ICAgICAgIGRlc2lyZWRUZXh0TGVuZ3RoID0gdGV4dENvbnRlbnRFbGVtZW50LT5zcGVjaWZpZWRU
ZXh0TGVuZ3RoKCkudmFsdWUodGV4dENvbnRlbnRFbGVtZW50KTsKIAogICAgICAgICBzd2l0Y2gg
KHRleHRDb250ZW50RWxlbWVudC0+bGVuZ3RoQWRqdXN0KCkpIHsKLSAgICAgICAgY2FzZSBTVkdU
ZXh0Q29udGVudEVsZW1lbnQ6OkxFTkdUSEFESlVTVF9VTktOT1dOOgorICAgICAgICBjYXNlIExl
bmd0aEFkanVzdFVua25vd246CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdU
ZXh0Q29udGVudEVsZW1lbnQ6OkxFTkdUSEFESlVTVF9TUEFDSU5HOgorICAgICAgICBjYXNlIExl
bmd0aEFkanVzdFNwYWNpbmc6CiAgICAgICAgICAgICBjaHVua1N0eWxlIHw9IFNWR1RleHRDaHVu
azo6TGVuZ3RoQWRqdXN0U3BhY2luZzsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFNWR1RleHRDb250ZW50RWxlbWVudDo6TEVOR1RIQURKVVNUX1NQQUNJTkdBTkRHTFlQSFM6Cisg
ICAgICAgIGNhc2UgTGVuZ3RoQWRqdXN0U3BhY2luZ0FuZEdseXBoczoKICAgICAgICAgICAgIGNo
dW5rU3R5bGUgfD0gU1ZHVGV4dENodW5rOjpMZW5ndGhBZGp1c3RTcGFjaW5nQW5kR2x5cGhzOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZS5jcHAJKHJldmlzaW9uIDkw
NDU0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5l
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDEwICsxNTQsOCBAQCBib29sIFNWR1RleHRMYXlv
dXRFbmdpbmU6OnBhcmVudERlZmluZXNUCiB7CiAgICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50UGFy
ZW50ID0gcGFyZW50OwogICAgIHdoaWxlIChjdXJyZW50UGFyZW50KSB7Ci0gICAgICAgIFNWR1Rl
eHRDb250ZW50RWxlbWVudCogdGV4dENvbnRlbnRFbGVtZW50ID0gU1ZHVGV4dENvbnRlbnRFbGVt
ZW50OjplbGVtZW50RnJvbVJlbmRlcmVyKGN1cnJlbnRQYXJlbnQpOwotICAgICAgICBpZiAodGV4
dENvbnRlbnRFbGVtZW50KSB7Ci0gICAgICAgICAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OlNW
R0xlbmd0aEFkanVzdFR5cGUgbGVuZ3RoQWRqdXN0ID0gdGV4dENvbnRlbnRFbGVtZW50LT5sZW5n
dGhBZGp1c3QoKTsKLSAgICAgICAgICAgIGlmIChsZW5ndGhBZGp1c3QgPT0gU1ZHVGV4dENvbnRl
bnRFbGVtZW50OjpMRU5HVEhBREpVU1RfU1BBQ0lORyAmJiB0ZXh0Q29udGVudEVsZW1lbnQtPnNw
ZWNpZmllZFRleHRMZW5ndGgoKS52YWx1ZSh0ZXh0Q29udGVudEVsZW1lbnQpID4gMCkKKyAgICAg
ICAgaWYgKFNWR1RleHRDb250ZW50RWxlbWVudCogdGV4dENvbnRlbnRFbGVtZW50ID0gU1ZHVGV4
dENvbnRlbnRFbGVtZW50OjplbGVtZW50RnJvbVJlbmRlcmVyKGN1cnJlbnRQYXJlbnQpKSB7Cisg
ICAgICAgICAgICBpZiAodGV4dENvbnRlbnRFbGVtZW50LT5sZW5ndGhBZGp1c3QoKSA9PSBMZW5n
dGhBZGp1c3RTcGFjaW5nICYmIHRleHRDb250ZW50RWxlbWVudC0+c3BlY2lmaWVkVGV4dExlbmd0
aCgpLnZhbHVlKHRleHRDb250ZW50RWxlbWVudCkgPiAwKQogICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAKQEAgLTIwOCw3ICsyMDYsNyBAQCB2b2lkIFNWR1RleHRMYXlv
dXRFbmdpbmU6OmJlZ2luVGV4dFBhdGhMCiAgICAgbV90ZXh0UGF0aEN1cnJlbnRPZmZzZXQgPSBt
X3RleHRQYXRoU3RhcnRPZmZzZXQ7CiAKICAgICAvLyBFdmVudHVhbGx5IGhhbmRsZSB0ZXh0TGVu
Z3RoIGFkanVzdG1lbnRzLgotICAgIFNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHTGVuZ3RoQWRq
dXN0VHlwZSBsZW5ndGhBZGp1c3QgPSBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OkxFTkdUSEFESlVT
VF9VTktOT1dOOworICAgIExlbmd0aEFkanVzdFR5cGUgbGVuZ3RoQWRqdXN0ID0gTGVuZ3RoQWRq
dXN0VW5rbm93bjsKICAgICBmbG9hdCBkZXNpcmVkVGV4dExlbmd0aCA9IDA7CiAKICAgICBpZiAo
U1ZHVGV4dENvbnRlbnRFbGVtZW50KiB0ZXh0Q29udGVudEVsZW1lbnQgPSBTVkdUZXh0Q29udGVu
dEVsZW1lbnQ6OmVsZW1lbnRGcm9tUmVuZGVyZXIodGV4dFBhdGgpKSB7CkBAIC0yMTksNyArMjE3
LDcgQEAgdm9pZCBTVkdUZXh0TGF5b3V0RW5naW5lOjpiZWdpblRleHRQYXRoTAogICAgIGlmICgh
ZGVzaXJlZFRleHRMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChsZW5ndGhBZGp1
c3QgPT0gU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpMRU5HVEhBREpVU1RfU1BBQ0lORykKKyAgICBp
ZiAobGVuZ3RoQWRqdXN0ID09IExlbmd0aEFkanVzdFNwYWNpbmcpCiAgICAgICAgIG1fdGV4dFBh
dGhTcGFjaW5nID0gKGRlc2lyZWRUZXh0TGVuZ3RoIC0gdG90YWxMZW5ndGgpIC8gdG90YWxDaGFy
YWN0ZXJzOwogICAgIGVsc2UKICAgICAgICAgbV90ZXh0UGF0aFNjYWxpbmcgPSBkZXNpcmVkVGV4
dExlbmd0aCAvIHRvdGFsTGVuZ3RoOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL0dyYWRpZW50
QXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9HcmFkaWVudEF0
dHJpYnV0ZXMuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvR3JhZGll
bnRBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdHJ1Y3QgR3JhZGllbnRBdHRyaWJ1dGVzIHsKICAgICBHcmFkaWVudEF0
dHJpYnV0ZXMoKQotICAgICAgICA6IG1fc3ByZWFkTWV0aG9kKFNWR0dyYWRpZW50RWxlbWVudDo6
U1ZHX1NQUkVBRE1FVEhPRF9QQUQpCisgICAgICAgIDogbV9zcHJlYWRNZXRob2QoU1ZHU3ByZWFk
TWV0aG9kUGFkKQogICAgICAgICAsIG1fYm91bmRpbmdCb3hNb2RlKHRydWUpCiAgICAgICAgICwg
bV9zcHJlYWRNZXRob2RTZXQoZmFsc2UpCiAgICAgICAgICwgbV9ib3VuZGluZ0JveE1vZGVTZXQo
ZmFsc2UpCkBAIC0zNywxMiArMzcsMTIgQEAgc3RydWN0IEdyYWRpZW50QXR0cmlidXRlcyB7CiAg
ICAgewogICAgIH0KIAotICAgIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHU3ByZWFkTWV0aG9kVHlw
ZSBzcHJlYWRNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX3NwcmVhZE1ldGhvZDsgfQorICAgIFNW
R1NwcmVhZE1ldGhvZFR5cGUgc3ByZWFkTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9zcHJlYWRN
ZXRob2Q7IH0KICAgICBib29sIGJvdW5kaW5nQm94TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91
bmRpbmdCb3hNb2RlOyB9CiAgICAgQWZmaW5lVHJhbnNmb3JtIGdyYWRpZW50VHJhbnNmb3JtKCkg
Y29uc3QgeyByZXR1cm4gbV9ncmFkaWVudFRyYW5zZm9ybTsgfQogICAgIGNvbnN0IFZlY3RvcjxH
cmFkaWVudDo6Q29sb3JTdG9wPiYgc3RvcHMoKSBjb25zdCB7IHJldHVybiBtX3N0b3BzOyB9CiAK
LSAgICB2b2lkIHNldFNwcmVhZE1ldGhvZChTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR1NwcmVhZE1l
dGhvZFR5cGUgdmFsdWUpCisgICAgdm9pZCBzZXRTcHJlYWRNZXRob2QoU1ZHU3ByZWFkTWV0aG9k
VHlwZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIG1fc3ByZWFkTWV0aG9kID0gdmFsdWU7CiAgICAg
ICAgIG1fc3ByZWFkTWV0aG9kU2V0ID0gdHJ1ZTsKQEAgLTczLDcgKzczLDcgQEAgc3RydWN0IEdy
YWRpZW50QXR0cmlidXRlcyB7CiAKIHByaXZhdGU6CiAgICAgLy8gUHJvcGVydGllcwotICAgIFNW
R0dyYWRpZW50RWxlbWVudDo6U1ZHU3ByZWFkTWV0aG9kVHlwZSBtX3NwcmVhZE1ldGhvZDsKKyAg
ICBTVkdTcHJlYWRNZXRob2RUeXBlIG1fc3ByZWFkTWV0aG9kOwogICAgIGJvb2wgbV9ib3VuZGlu
Z0JveE1vZGU7CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fZ3JhZGllbnRUcmFuc2Zvcm07CiAgICAg
VmVjdG9yPEdyYWRpZW50OjpDb2xvclN0b3A+IG1fc3RvcHM7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTUgKzQ4LDI1IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklO
RV9BTklNQVRFRF9TVFJJTkcoU1ZHQUVsZW1lbnQsIFNWR05hbWVzOjp0YXJnZXRBdHRyLCBTVkdU
YXJnZXQsIHN2Z1RhcmdldCkKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHQUVsZW1lbnQsIFhM
aW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4o
U1ZHQUVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lO
X0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhT
VkdBRWxlbWVudCwgU1ZHTmFtZXM6OnRhcmdldEF0dHIsIFNWR1RhcmdldCwgc3ZnVGFyZ2V0KQor
ICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHQUVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZB
dHRyLCBIcmVmLCBocmVmKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0FFbGVtZW50
LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1B
VEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdB
RWxlbWVudCkKKyAgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc3ZnVGFyZ2V0
KQorICAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShocmVmKQorICAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQor
ICAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudCkKKyAgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZH
QUVsZW1lbnQ6OlNWR0FFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjphVGFnKSk7
CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdBRWxlbWVudCgpOwogfQogCiBQ
YXNzUmVmUHRyPFNWR0FFbGVtZW50PiBTVkdBRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTEzMiw2MCArMTQyLDYgQEAg
dm9pZCBTVkdBRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjbwogICAgIH0KIH0KIAotQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0FFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBz
X2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0FFbGVtZW50OjpmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Zmls
bFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRhcmdl
dEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQotdm9pZCBTVkdB
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJv
bml6ZVNWR1RhcmdldCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpz
eW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJO
YW1lKSkgewotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25p
emVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRhcmdldEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVT
VkdUYXJnZXQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdVUklSZWZl
cmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
SHJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewot
ICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQot
CiBSZW5kZXJPYmplY3QqIFNWR0FFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICBpZiAoc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+
KHBhcmVudE5vZGUoKSktPmlzVGV4dENvbnRlbnQoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxl
bWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMCArNTEsNiBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotCi0gICAgdmly
dHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwg
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopOwogCkBAIC02NywxNyArNjMsMTggQEAgcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKIAotICAg
IC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotCi0gICAgLy8gVGhpcyBkZWNsYXJh
dGlvbiB1c2VkIHRvIGRlZmluZSBhIG5vbi12aXJ0dWFsICJTdHJpbmcmIHRhcmdldCgpIGNvbnN0
IiBtZXRob2QsIHRoYXQgY2xhc2hlcyB3aXRoICJ2aXJ0dWFsIFN0cmluZyBFbGVtZW50Ojp0YXJn
ZXQoKSBjb25zdCIuCi0gICAgLy8gVGhhdCdzIHdoeSBpdCBoYXMgYmVlbiByZW5hbWVkIHRvICJz
dmdUYXJnZXQiLCB0aGUgQ29kZUdlbmVyYXRvcnMgdGFrZSBjYXJlIG9mIGNhbGxpbmcgc3ZnVGFy
Z2V0QW5pbWF0ZWQoKSBpbnN0ZWFkIG9mIHRhcmdldEFuaW1hdGVkKCksIHNlZSBDb2RlR2VuZXJh
dG9yLnBtLgotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKFNWR1RhcmdldCwgc3ZnVGFyZ2V0
KQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkco
SHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR0FFbGVtZW50KQorICAgICAgICAgIC8vIFRoaXMgZGVjbGFyYXRpb24gdXNlZCB0byBk
ZWZpbmUgYSBub24tdmlydHVhbCAiU3RyaW5nJiB0YXJnZXQoKSBjb25zdCIgbWV0aG9kLCB0aGF0
IGNsYXNoZXMgd2l0aCAidmlydHVhbCBTdHJpbmcgRWxlbWVudDo6dGFyZ2V0KCkgY29uc3QiLgor
ICAgICAgICAgIC8vIFRoYXQncyB3aHkgaXQgaGFzIGJlZW4gcmVuYW1lZCB0byAic3ZnVGFyZ2V0
IiwgdGhlIENvZGVHZW5lcmF0b3JzIHRha2UgY2FyZSBvZiBjYWxsaW5nIHN2Z1RhcmdldEFuaW1h
dGVkKCkgaW5zdGVhZCBvZiB0YXJnZXRBbmltYXRlZCgpLCBzZWUgQ29kZUdlbmVyYXRvci5wbS4K
KyAgICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhTVkdUYXJnZXQsIHN2Z1RhcmdldCkK
KyAgICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVp
cmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhp
cyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hy
b25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAJKHJldmlz
aW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDEzICszMywyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NU
UklORyhTVkdBbHRHbHlwaEVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVm
KQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURf
U1RSSU5HKFNWR0FsdEdseXBoRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhy
ZWYpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdBbHRHbHlwaEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJP
UEVSVElFUyhTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVE
X1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0FsdEdseXBoRWxlbWVudDo6U1ZHQWx0R2x5cGhFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICA6IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFsdEdseXBoVGFnKSk7CisgICAgcmVnaXN0ZXJB
bmltYXRlZFByb3BlcnRpZXNGb3JTVkdBbHRHbHlwaEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0
cjxTVkdBbHRHbHlwaEVsZW1lbnQ+IFNWR0FsdEdseXBoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTQ3LDI4ICs1NCw2
IEBAIFBhc3NSZWZQdHI8U1ZHQWx0R2x5cGhFbGVtZW50PiBTVkdBbHRHbHkKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNWR0FsdEdseXBoRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQog
Ci12b2lkIFNWR0FsdEdseXBoRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Ojpz
eW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLQotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlR
TmFtZSgpIHx8IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCi0g
ICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgU1ZHQWx0R2x5cGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0FsdEdseXBoRWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwotCi0gICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1h
dGVkU3RyaW5nKTsKLX0KLQogdm9pZCBTVkdBbHRHbHlwaEVsZW1lbnQ6OnNldEdseXBoUmVmKGNv
bnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gTk9fTU9E
SUZJQ0FUSU9OX0FMTE9XRURfRVJSOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEds
eXBoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlw
aEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0
R2x5cGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE4ICs0NSwxMiBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIFNWR0FsdEdseXBoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFs
IGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CiAKLSAgICAvLyBB
bmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQot
ICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCisgICAgQkVHSU5fREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0FsdEdseXBoRWxlbWVudCkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNWR0FuaW1hdGVFbGVtZW50OjpTVkdB
bmltYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgOiBTVkdBbmltYXRpb25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAg
ICwgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUoQW5pbWF0ZWRTdHJpbmcpCisgICAgLCBtX2FuaW1h
dGVkUHJvcGVydHlUeXBlKEFuaW1hdGVkU3RyaW5nKQogICAgICwgbV9mcm9tUHJvcGVydHlWYWx1
ZVR5cGUoUmVndWxhclByb3BlcnR5VmFsdWUpCiAgICAgLCBtX3RvUHJvcGVydHlWYWx1ZVR5cGUo
UmVndWxhclByb3BlcnR5VmFsdWUpCiB7CkBAIC05MywxNSArOTMsMjAgQEAgYm9vbCBTVkdBbmlt
YXRlRWxlbWVudDo6aGFzVmFsaWRBdHRyaWJ1dAogICAgIGlmICghdGFyZ2V0RWxlbWVudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBkZXRlcm1pbmVBbmltYXRlZEF0
dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVudCkgIT0gQW5pbWF0ZWRVbmtub3duOworICAgIHJldHVy
biBkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0YXJnZXRFbGVtZW50KSAhPSBBbmltYXRl
ZFVua25vd247CiB9CiAKLUFuaW1hdGVkQXR0cmlidXRlVHlwZSBTVkdBbmltYXRlRWxlbWVudDo6
ZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQp
IGNvbnN0CitBbmltYXRlZFByb3BlcnR5VHlwZSBTVkdBbmltYXRlRWxlbWVudDo6ZGV0ZXJtaW5l
QW5pbWF0ZWRQcm9wZXJ0eVR5cGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgY29uc3QKIHsK
ICAgICBBU1NFUlQodGFyZ2V0RWxlbWVudCk7CiAKLSAgICBBbmltYXRlZEF0dHJpYnV0ZVR5cGUg
dHlwZSA9IHRhcmdldEVsZW1lbnQtPmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUoKSk7Ci0gICAgaWYgKHR5cGUgPT0gQW5pbWF0ZWRVbmtub3duIHx8IChoYXNU
YWdOYW1lKFNWR05hbWVzOjphbmltYXRlQ29sb3JUYWcpICYmIHR5cGUgIT0gQW5pbWF0ZWRDb2xv
cikpCisgICAgVmVjdG9yPEFuaW1hdGVkUHJvcGVydHlUeXBlPiBwcm9wZXJ0eVR5cGVzOworICAg
IHRhcmdldEVsZW1lbnQtPmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUoKSwgcHJvcGVydHlUeXBlcyk7CisgICAgaWYgKHByb3BlcnR5VHlwZXMuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gQW5pbWF0ZWRVbmtub3duOworCisgICAgQW5pbWF0ZWRQcm9wZXJ0
eVR5cGUgdHlwZSA9IHByb3BlcnR5VHlwZXNbMF07CisgICAgaWYgKGhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OmFuaW1hdGVDb2xvclRhZykgJiYgdHlwZSAhPSBBbmltYXRlZENvbG9yKQogICAgICAgICBy
ZXR1cm4gQW5pbWF0ZWRVbmtub3duOwogCiAgICAgLy8gRklYTUU6IEFuaW1hdG9yIGZvciBBbmlt
YXRlZEVudW1lcmF0aW9uIG1pc3NpbmcuCkBAIC0xNjEsOSArMTY2LDkgQEAgdm9pZCBTVkdBbmlt
YXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZQogICAgICAgICByZXR1cm47CiAgICAgU1ZHQW5p
bWF0ZUVsZW1lbnQqIHJlc3VsdHMgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+KHJl
c3VsdEVsZW1lbnQpOwogICAgIC8vIENhbid0IGFjY3VtdWxhdGUgb3ZlciBhIHN0cmluZyBwcm9w
ZXJ0eS4KLSAgICBpZiAocmVzdWx0cy0+bV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPT0gQW5pbWF0
ZWRTdHJpbmcgJiYgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgIT0gQW5pbWF0ZWRTdHJpbmcpCisg
ICAgaWYgKHJlc3VsdHMtPm1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgPT0gQW5pbWF0ZWRTdHJpbmcg
JiYgbV9hbmltYXRlZFByb3BlcnR5VHlwZSAhPSBBbmltYXRlZFN0cmluZykKICAgICAgICAgcmV0
dXJuOwotICAgIHN3aXRjaCAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUpIHsKKyAgICBzd2l0Y2gg
KG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUpIHsKICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAg
Y2FzZSBBbmltYXRlZEJvb2xlYW46CiAgICAgY2FzZSBBbmltYXRlZENvbG9yOgpAQCAtMjE3LDcg
KzIyMiw3IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmRldGVybWluZVByb3BlcnQKICAgICBp
ZiAoaW5oZXJpdHNGcm9tUHJvcGVydHkodGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSgpLCB0
bykpCiAgICAgICAgIG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZSA9IEluaGVyaXRWYWx1ZTsKIAotICAg
IGlmIChtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSAhPSBBbmltYXRlZENvbG9yKQorICAgIGlmICht
X2FuaW1hdGVkUHJvcGVydHlUeXBlICE9IEFuaW1hdGVkQ29sb3IpCiAgICAgICAgIHJldHVybjsK
ICAgICAKICAgICBpZiAoYXR0cmlidXRlVmFsdWVJc0N1cnJlbnRDb2xvcihmcm9tKSkKQEAgLTIz
Myw4ICsyMzgsOCBAQCBib29sIFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEZJWE1FOiBOZWVkcyBtb3JlIHNvbGlkIHdh
eSBkZXRlcm1pbmUgdGFyZ2V0IGF0dHJpYnV0ZSB0eXBlLgotICAgIG1fYW5pbWF0ZWRBdHRyaWJ1
dGVUeXBlID0gZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKHRhcmdldEVsZW1lbnQpOwot
ICAgIHN3aXRjaCAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUpIHsKKyAgICBtX2FuaW1hdGVkUHJv
cGVydHlUeXBlID0gZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUodGFyZ2V0RWxlbWVudCk7
CisgICAgc3dpdGNoIChtX2FuaW1hdGVkUHJvcGVydHlUeXBlKSB7CiAgICAgY2FzZSBBbmltYXRl
ZEFuZ2xlOgogICAgIGNhc2UgQW5pbWF0ZWRCb29sZWFuOgogICAgIGNhc2UgQW5pbWF0ZWRDb2xv
cjoKQEAgLTI2NSw4ICsyNzAsOCBAQCBib29sIFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVG
cm9tQW5kCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVCghaGFzVGFnTmFtZShT
VkdOYW1lczo6c2V0VGFnKSk7Ci0gICAgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPSBkZXRlcm1p
bmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVudCk7Ci0gICAgc3dpdGNoIChtX2Fu
aW1hdGVkQXR0cmlidXRlVHlwZSkgeworICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgPSBkZXRl
cm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0YXJnZXRFbGVtZW50KTsKKyAgICBzd2l0Y2ggKG1f
YW5pbWF0ZWRQcm9wZXJ0eVR5cGUpIHsKICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgY2Fz
ZSBBbmltYXRlZEJvb2xlYW46CiAgICAgY2FzZSBBbmltYXRlZENvbG9yOgpAQCAtMjk2LDggKzMw
MSw4IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUKIHsKICAgICBT
VkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFyZ2V0RWxlbWVudCgpOwogICAgIEFT
U0VSVCh0YXJnZXRFbGVtZW50KTsKLSAgICBtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSA9IGRldGVy
bWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZSh0YXJnZXRFbGVtZW50KTsKLSAgICBzd2l0Y2ggKG1f
YW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKSB7CisgICAgbV9hbmltYXRlZFByb3BlcnR5VHlwZSA9IGRl
dGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKHRhcmdldEVsZW1lbnQpOworICAgIHN3aXRjaCAo
bV9hbmltYXRlZFByb3BlcnR5VHlwZSkgewogICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKICAgICBj
YXNlIEFuaW1hdGVkQm9vbGVhbjoKICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CkBAIC0zMjcsNyAr
MzMyLDcgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6cmVzZXRUb0Jhc2VWYWx1ZQogdm9pZCBT
VkdBbmltYXRlRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQoKQogewogICAgIFN0cmluZyB2
YWx1ZVRvQXBwbHk7Ci0gICAgc3dpdGNoIChtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSkgeworICAg
IHN3aXRjaCAobV9hbmltYXRlZFByb3BlcnR5VHlwZSkgewogICAgIGNhc2UgQW5pbWF0ZWRBbmds
ZToKICAgICBjYXNlIEFuaW1hdGVkQm9vbGVhbjoKICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CkBA
IC0zNTYsOCArMzYxLDggQEAgZmxvYXQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZURpc3Rh
bgogICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7
CiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgbV9hbmlt
YXRlZEF0dHJpYnV0ZVR5cGUgPSBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0
RWxlbWVudCk7Ci0gICAgc3dpdGNoIChtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSkgeworICAgIG1f
YW5pbWF0ZWRQcm9wZXJ0eVR5cGUgPSBkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0YXJn
ZXRFbGVtZW50KTsKKyAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUpIHsKICAgICBj
YXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgY2FzZSBBbmltYXRlZEJvb2xlYW46CiAgICAgY2FzZSBB
bmltYXRlZENvbG9yOgpAQCAtMzgzLDcgKzM4OCw3IEBAIGZsb2F0IFNWR0FuaW1hdGVFbGVtZW50
OjpjYWxjdWxhdGVEaXN0YW4KIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yKiBTVkdBbmltYXRlRWxl
bWVudDo6ZW5zdXJlQW5pbWF0b3IoKQogewogICAgIGlmICghbV9hbmltYXRvcikKLSAgICAgICAg
bV9hbmltYXRvciA9IFNWR0FuaW1hdG9yRmFjdG9yeTo6Y3JlYXRlKHRoaXMsIHRhcmdldEVsZW1l
bnQoKSwgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUpOworICAgICAgICBtX2FuaW1hdG9yID0gU1ZH
QW5pbWF0b3JGYWN0b3J5OjpjcmVhdGUodGhpcywgdGFyZ2V0RWxlbWVudCgpLCBtX2FuaW1hdGVk
UHJvcGVydHlUeXBlKTsKICAgICByZXR1cm4gbV9hbmltYXRvci5nZXQoKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGFkanVzdEZvckN1cnJlbnRD
b2xvcihTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBDb2xvciYpOwogICAgIHZvaWQgYWRqdXN0
Rm9ySW5oZXJpdGFuY2UoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYsIFN0cmluZyYgdmFsdWUpOwogICAgIAotICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBk
ZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUoU1ZHRWxlbWVudCopIGNvbnN0OworICAgIEFu
aW1hdGVkUHJvcGVydHlUeXBlIGRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKFNWR0VsZW1l
bnQqKSBjb25zdDsKICAgICB2b2lkIGRldGVybWluZVByb3BlcnR5VmFsdWVUeXBlcyhjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKICAgICAKICAgICBBbmltYXRlZFByb3BlcnR5VmFsdWVU
eXBlIGZyb21Qcm9wZXJ0eVZhbHVlVHlwZSgpIHsgcmV0dXJuIG1fZnJvbVByb3BlcnR5VmFsdWVU
eXBlOyB9CkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgU1ZHQW5pbWF0ZWRUeXBlQW5p
bWF0b3IqIGVuc3VyZUFuaW1hdG9yKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGhhc1ZhbGlk
QXR0cmlidXRlVHlwZSgpIGNvbnN0OwotICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBtX2FuaW1h
dGVkQXR0cmlidXRlVHlwZTsKKyAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBtX2FuaW1hdGVkUHJv
cGVydHlUeXBlOwogCiAgICAgQW5pbWF0ZWRQcm9wZXJ0eVZhbHVlVHlwZSBtX2Zyb21Qcm9wZXJ0
eVZhbHVlVHlwZTsKICAgICBBbmltYXRlZFByb3BlcnR5VmFsdWVUeXBlIG1fdG9Qcm9wZXJ0eVZh
bHVlVHlwZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFu
c2Zvcm1FbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxOCAr
NjYsMjEgQEAgYm9vbCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aGFzVmFsaQogICAgIGlm
ICghdGFyZ2V0RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVy
biBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVudCkgPT0gQW5pbWF0
ZWRUcmFuc2Zvcm1MaXN0OworICAgIHJldHVybiBkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlw
ZSh0YXJnZXRFbGVtZW50KSA9PSBBbmltYXRlZFRyYW5zZm9ybUxpc3Q7CiB9CiAKLUFuaW1hdGVk
QXR0cmlidXRlVHlwZSBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0
ZWRBdHRyaWJ1dGVUeXBlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIGNvbnN0CitBbmltYXRl
ZFByb3BlcnR5VHlwZSBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0
ZWRQcm9wZXJ0eVR5cGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgY29uc3QKIHsKICAgICBB
U1NFUlQodGFyZ2V0RWxlbWVudCk7CiAgICAgCiAgICAgLy8gSnVzdCB0cmFuc2Zvcm0gbGlzdHMg
Y2FuIGJlIGFuaW1hdGVkIHdpdGggPGFuaW1hdGVUcmFuc2Zvcm0+CiAgICAgLy8gaHR0cDovL3d3
dy53My5vcmcvVFIvU1ZHL2FuaW1hdGUuaHRtbCNBbmltYXRpb25BdHRyaWJ1dGVzQW5kUHJvcGVy
dGllcwotICAgIGlmICh0YXJnZXRFbGVtZW50LT5hbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJp
YnV0ZShhdHRyaWJ1dGVOYW1lKCkpICE9IEFuaW1hdGVkVHJhbnNmb3JtTGlzdCkKKyAgICBWZWN0
b3I8QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+IHByb3BlcnR5VHlwZXM7CisgICAgdGFyZ2V0RWxlbWVu
dC0+YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSgpLCBwcm9w
ZXJ0eVR5cGVzKTsKKyAgICBpZiAocHJvcGVydHlUeXBlcy5pc0VtcHR5KCkgfHwgcHJvcGVydHlU
eXBlc1swXSAhPSBBbmltYXRlZFRyYW5zZm9ybUxpc3QpCiAgICAgICAgIHJldHVybiBBbmltYXRl
ZFVua25vd247CiAKKyAgICBBU1NFUlQocHJvcGVydHlUeXBlcy5zaXplKCkgPT0gMSk7CiAgICAg
cmV0dXJuIEFuaW1hdGVkVHJhbnNmb3JtTGlzdDsKIH0KIApAQCAtMTMxLDcgKzEzNCw3IEBAIHN0
YXRpYyBTVkdUcmFuc2Zvcm1MaXN0KiB0cmFuc2Zvcm1MaXN0Rm8KIHZvaWQgU1ZHQW5pbWF0ZVRy
YW5zZm9ybUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUoY29uc3QgU3RyaW5nJiBiYXNlVmFsdWUp
CiB7CiAgICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQo
KTsKLSAgICBpZiAoIXRhcmdldEVsZW1lbnQgfHwgZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVU
eXBlKHRhcmdldEVsZW1lbnQpID09IEFuaW1hdGVkVW5rbm93bikKKyAgICBpZiAoIXRhcmdldEVs
ZW1lbnQgfHwgZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUodGFyZ2V0RWxlbWVudCkgPT0g
QW5pbWF0ZWRVbmtub3duKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogVGhpcyBt
aWdodCBub3QgYmUgY29ycmVjdCBmb3IgYWNjdW11bGF0ZWQgc3VtLiBOZWVkcyBjaGVja2luZy4K
QEAgLTE1NCw3ICsxNTcsNyBAQCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpyZXNl
dFRvCiB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZh
bHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdCwgU1ZHU01JTEVsZW1lbnQqKQog
ewogICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7
Ci0gICAgaWYgKCF0YXJnZXRFbGVtZW50IHx8IGRldGVybWluZUFuaW1hdGVkQXR0cmlidXRlVHlw
ZSh0YXJnZXRFbGVtZW50KSA9PSBBbmltYXRlZFVua25vd24pCisgICAgaWYgKCF0YXJnZXRFbGVt
ZW50IHx8IGRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKHRhcmdldEVsZW1lbnQpID09IEFu
aW1hdGVkVW5rbm93bikKICAgICAgICAgcmV0dXJuOwogICAgIFNWR1RyYW5zZm9ybUxpc3QqIHRy
YW5zZm9ybUxpc3QgPSB0cmFuc2Zvcm1MaXN0Rm9yKHRhcmdldEVsZW1lbnQpOwogICAgIEFTU0VS
VCh0cmFuc2Zvcm1MaXN0KTsKQEAgLTIwMCw3ICsyMDMsNyBAQCBTVkdUcmFuc2Zvcm0gU1ZHQW5p
bWF0ZVRyYW5zZm9ybUVsZW1lbnQ6CiB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50Ojph
cHBseVJlc3VsdHNUb1RhcmdldCgpCiB7CiAgICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9
IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKLSAgICBpZiAoIXRhcmdldEVsZW1lbnQgfHwgZGV0ZXJt
aW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKHRhcmdldEVsZW1lbnQpID09IEFuaW1hdGVkVW5rbm93
bikKKyAgICBpZiAoIXRhcmdldEVsZW1lbnQgfHwgZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5
cGUodGFyZ2V0RWxlbWVudCkgPT0gQW5pbWF0ZWRVbmtub3duKQogICAgICAgICByZXR1cm47CiAK
ICAgICAvLyBXZSBhY2N1bXVsYXRlIHRvIHRoZSB0YXJnZXQgZWxlbWVudCB0cmFuc2Zvcm0gbGlz
dCBzbyB0aGVyZSBpcyBub3QgbXVjaCB0byBkbyBoZXJlLgpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdBbmltYXRlVHJhbnNm
b3JtRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAKICAgICB2
aXJ0dWFsIGJvb2wgaGFzVmFsaWRBdHRyaWJ1dGVUeXBlKCkgY29uc3Q7Ci0gICAgQW5pbWF0ZWRB
dHRyaWJ1dGVUeXBlIGRldGVybWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZShTVkdFbGVtZW50Kikg
Y29uc3Q7CisgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0
eVR5cGUoU1ZHRWxlbWVudCopIGNvbnN0OwogCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0
cmlidXRlKEF0dHJpYnV0ZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
QW5nbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmds
ZS5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFu
Z2xlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgdHlwZWRlZiBTVkdBbmltYXRl
ZFByb3BlcnR5VGVhck9mZjxTVkdBbgogREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdBbmlt
YXRlZEFuZ2xlLCBTVkdBbmdsZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2Rl
ZmluZSBERUZJTkVfQU5JTUFURURfQU5HTEVfTVVMVElQTEVfV1JBUFBFUlMoT3duZXJUeXBlLCBE
T01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFVwcGVyUHJvcGVydHksIExv
d2VyUHJvcGVydHkpIFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0
dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgU1ZHQW5pbWF0ZWRBbmdsZSwgU1ZH
QW5nbGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCitERUZJTkVfQU5JTUFURURfUFJP
UEVSVFkoQW5pbWF0ZWRBbmdsZSwgT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJp
YnV0ZUlkZW50aWZpZXIsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNpZiBFTkFC
TEUoU1ZHX0FOSU1BVElPTikKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsOSArMzMsOCBAQCB0eXBlZGVmIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmCiBE
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkQm9vbGVhbiwgYm9vbCwgVXBwZXJQ
cm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfQk9PTEVB
TihPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkg
XAotREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01B
dHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVkQm9vbGVhbiwgYm9vbCwgVXBwZXJQcm9w
ZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZEJv
b2xlYW4sIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCks
IFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKLSAgICAKICNpZiBFTkFCTEUoU1ZHX0FO
SU1BVElPTikKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uaAkocmV2aXNpb24gOTA0NTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMywxMCArMzMsNyBAQCB0eXBlZGVmIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFy
T2ZmCiBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9w
ZXJ0eVRlYXJPZmY8RW51bVR5cGU+LCBFbnVtVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9w
ZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oT3duZXJUeXBlLCBE
T01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHksIEVudW1UeXBlKSBcCi1E
RUZJTkVfQU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIERPTUF0dHJp
YnV0ZS5sb2NhbE5hbWUoKSwgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZjxF
bnVtVHlwZT4sIEVudW1UeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQotCi0jZGVm
aW5lIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTl9NVUxUSVBMRV9XUkFQUEVSUyhPd25lclR5
cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgVXBwZXJQcm9wZXJ0
eSwgTG93ZXJQcm9wZXJ0eSwgRW51bVR5cGUpIFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShP
d25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgU1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZjxFbnVtVHlwZT4sIEVudW1UeXBlLCBVcHBl
clByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1h
dGVkRW51bWVyYXRpb24sIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9j
YWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuaAko
cmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICszNCwxMSBAQCB0eXBlZGVmIFNWR0FuaW1hdGVk
U3RhdGljUHJvcGVydHlUZWFyT2ZmCiBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0FuaW1h
dGVkSW50ZWdlciwgbG9uZywgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmlu
ZSBERUZJTkVfQU5JTUFURURfSU5URUdFUihPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQ
cm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVy
VHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVk
SW50ZWdlciwgbG9uZywgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklN
QVRFRF9QUk9QRVJUWShBbmltYXRlZEludGVnZXIsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBE
T01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAK
Ky8vIEZJWE1FOiBUaGlzIGN1cnJlbnRseSBhbmltYXRlcyBhcyBudW1iZXItb3B0aW9uYWwtbnVt
YmVyLCBpbnN0ZWFkIG9mIGludGVnZXItb3B0aW9uYWwtaW50ZWdlciwgd2hpY2ggaXMgbWlzc2lu
Zy4KICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX0lOVEVHRVJfTVVMVElQTEVfV1JBUFBFUlMoT3du
ZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFVwcGVyUHJv
cGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5
cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgU1ZHQW5pbWF0ZWRJ
bnRlZ2VyLCBsb25nLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorREVGSU5FX0FOSU1B
VEVEX1BST1BFUlRZKEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIsIE93bmVyVHlwZSwgRE9N
QXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBVcHBlclByb3BlcnR5LCBMb3dl
clByb3BlcnR5KQogCiAjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCiBjbGFzcyBTVkdBbmltYXRp
b25FbGVtZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmgJKHJl
dmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgdHlwZWRlZiBTVkdBbmltYXRlZFByb3Bl
cnR5VGVhck9mZjxTVkdMZQogREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdBbmltYXRlZExl
bmd0aCwgU1ZHTGVuZ3RoLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiAjZGVmaW5l
IERFRklORV9BTklNQVRFRF9MRU5HVEgoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJv
cGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5
cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBTVkdBbmltYXRlZExl
bmd0aCwgU1ZHTGVuZ3RoLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorREVGSU5FX0FO
SU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkTGVuZ3RoLCBPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwg
RE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQog
CiAjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCiBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuaAkocmV2aXNp
b24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDggQEAgdHlwZWRlZiBTVkdBbmltYXRlZExpc3RQ
cm9wZXJ0eVRlYXJPZmY8UwogREVDTEFSRV9BTklNQVRFRF9MSVNUX1BST1BFUlRZKFNWR0FuaW1h
dGVkTGVuZ3RoTGlzdCwgU1ZHTGVuZ3RoTGlzdCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0
eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfTEVOR1RIX0xJU1QoT3duZXJUeXBlLCBET01B
dHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFRklORV9BTklNQVRF
RF9MSVNUX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9j
YWxOYW1lKCksIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCwgU1ZHTGVuZ3RoTGlzdCwgVXBwZXJQcm9w
ZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKLSAgICAKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmlt
YXRlZExlbmd0aExpc3QsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9j
YWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCisKICNpZiBFTkFCTEUoU1ZH
X0FOSU1BVElPTikKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMCAr
MzQsMTAgQEAgdHlwZWRlZiBTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZgogREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUWShTVkdBbmltYXRlZE51bWJlciwgZmxvYXQsIFVwcGVyUHJvcGVy
dHksIExvd2VyUHJvcGVydHkpCiAKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX05VTUJFUihPd25l
clR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVG
SU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1
dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVkTnVtYmVyLCBmbG9hdCwgVXBwZXJQcm9wZXJ0eSwg
TG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZE51bWJlciwg
T3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgVXBwZXJQ
cm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfTlVNQkVS
X01VTFRJUExFX1dSQVBQRVJTKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1
dGVJZGVudGlmaWVyLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCi1ERUZJTkVfQU5J
TUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlk
ZW50aWZpZXIsIFNWR0FuaW1hdGVkTnVtYmVyLCBmbG9hdCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQ
cm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZE51bWJlck9wdGlvbmFs
TnVtYmVyLCBPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmll
ciwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2lmIEVOQUJMRShTVkdfQU5JTUFU
SU9OKQogY2xhc3MgU1ZHQW5pbWF0aW9uRWxlbWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4
ICszNCw4IEBAIHR5cGVkZWYgU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFMKIERFQ0xB
UkVfQU5JTUFURURfTElTVF9QUk9QRVJUWShTVkdBbmltYXRlZE51bWJlckxpc3QsIFNWR051bWJl
ckxpc3QsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNkZWZpbmUgREVGSU5FX0FO
SU1BVEVEX05VTUJFUl9MSVNUKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBVcHBlclByb3BlcnR5
LCBMb3dlclByb3BlcnR5KSBcCi1ERUZJTkVfQU5JTUFURURfTElTVF9QUk9QRVJUWShPd25lclR5
cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBTVkdBbmltYXRlZE51
bWJlckxpc3QsIFNWR051bWJlckxpc3QsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCi0g
ICAgCitERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWROdW1iZXJMaXN0LCBPd25lclR5
cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBVcHBlclByb3BlcnR5
LCBMb3dlclByb3BlcnR5KQorCiAjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCiBjbGFzcyBTVkdB
bmltYXRpb25FbGVtZW50OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQ
cmVzZXJ2ZUFzcGVjdFJhdGlvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaAkod29ya2luZyBj
b3B5KQpAQCAtMzQsOSArMzQsOCBAQCB0eXBlZGVmIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2Zm
PFNWR1ByCiBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkUHJlc2VydmVBc3Bl
Y3RSYXRpbywgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbywgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9w
ZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhPd25l
clR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVG
SU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1
dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbywgU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpbywgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklN
QVRFRF9QUk9QRVJUWShBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8sIE93bmVyVHlwZSwgRE9N
QXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2Vy
UHJvcGVydHkpCiAKLSAgICAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIGNsYXNzIFNWR0Fu
aW1hdGlvbkVsZW1lbnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFJl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRSZWN0LmgJ
KHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHR5cGVkZWYgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVRlYXJPZmY8RmxvYXQKIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHQW5pbWF0ZWRS
ZWN0LCBGbG9hdFJlY3QsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNkZWZpbmUg
REVGSU5FX0FOSU1BVEVEX1JFQ1QoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVy
dHksIExvd2VyUHJvcGVydHkpIFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUs
IERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBTVkdBbmltYXRlZFJlY3Qs
IEZsb2F0UmVjdCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRF
RF9QUk9QRVJUWShBbmltYXRlZFJlY3QsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRy
aWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNpZiBF
TkFCTEUoU1ZHX0FOSU1BVElPTikKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAkocmV2aXNpb24gOTA0NTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNyArMzQsNyBAQCB0eXBlZGVmIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmCiBE
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkU3RyaW5nLCBTdHJpbmcsIFVwcGVy
UHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX1NUUklO
RyhPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkg
XAotREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01B
dHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVkU3RyaW5nLCBTdHJpbmcsIFVwcGVyUHJv
cGVydHksIExvd2VyUHJvcGVydHkpCitERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWRT
dHJpbmcsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCks
IFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElP
TikKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNyArMzIsNyBAQCB0eXBlZGVmIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5
CiBERUNMQVJFX0FOSU1BVEVEX0xJU1RfUFJPUEVSVFkoU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
LCBTVkdUcmFuc2Zvcm1MaXN0LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiAjZGVm
aW5lIERFRklORV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChPd25lclR5cGUsIERPTUF0dHJpYnV0
ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX0xJU1Rf
UFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUo
KSwgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LCBTVkdUcmFuc2Zvcm1MaXN0LCBVcHBlclByb3Bl
cnR5LCBMb3dlclByb3BlcnR5KQorREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkVHJh
bnNmb3JtTGlzdCwgT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5h
bWUoKSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAkocmV2aXNp
b24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVNWR0FuaW1hdGVkVHlwZTo6U1ZHQW5pbWF0ZWRUeXBlKEFuaW1h
dGVkQXR0cmlidXRlVHlwZSB0eXBlKQorU1ZHQW5pbWF0ZWRUeXBlOjpTVkdBbmltYXRlZFR5cGUo
QW5pbWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSkKICAgICA6IG1fdHlwZSh0eXBlKQogewogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAkocmV2aXNpb24gOTA0NTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1
LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4gY3JlYXRlUmVjdChGbG9hdFJlY3QqKTsKICAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmlt
YXRlZFR5cGU+IGNyZWF0ZVN0cmluZyhTdHJpbmcqKTsKIAotICAgIEFuaW1hdGVkQXR0cmlidXRl
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgQW5pbWF0ZWRQcm9wZXJ0
eVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAgICAgU1ZHQW5nbGUmIGFu
Z2xlKCk7CiAgICAgYm9vbCYgYm9vbGVhbigpOwpAQCAtNzksOSArNzksOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRQcmVzZXJ2ZUFzcGVjdFJhdGlvQmFzZVZhbHVlKGNvbnN0IFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW8mKTsKIAogcHJpdmF0ZToKLSAgICBTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRB
dHRyaWJ1dGVUeXBlKTsKKyAgICBTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRQcm9wZXJ0eVR5cGUp
OwogCi0gICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIG1fdHlwZTsKKyAgICBBbmltYXRlZFByb3Bl
cnR5VHlwZSBtX3R5cGU7CiAKICAgICB1bmlvbiBEYXRhVW5pb24gewogICAgICAgICBEYXRhVW5p
b24oKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9y
LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlw
ZUFuaW1hdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDE0ICs0MywxNCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRDb250ZXh0RWxlbWVudChTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkgeyBt
X2NvbnRleHRFbGVtZW50ID0gY29udGV4dEVsZW1lbnQ7IH0KICAgICAKIHByb3RlY3RlZDoKLSAg
ICBTVkdBbmltYXRlZFR5cGVBbmltYXRvcihBbmltYXRlZEF0dHJpYnV0ZVR5cGUgdHlwZSwgU1ZH
QW5pbWF0aW9uRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4dEVs
ZW1lbnQpCisgICAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRQcm9wZXJ0eVR5cGUg
dHlwZSwgU1ZHQW5pbWF0aW9uRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCog
Y29udGV4dEVsZW1lbnQpCiAgICAgICAgIDogbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9hbmlt
YXRpb25FbGVtZW50KGFuaW1hdGlvbkVsZW1lbnQpCiAgICAgICAgICwgbV9jb250ZXh0RWxlbWVu
dChjb250ZXh0RWxlbWVudCkKICAgICB7CiAgICAgfQogCi0gICAgQW5pbWF0ZWRBdHRyaWJ1dGVU
eXBlIG1fdHlwZTsKKyAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBtX3R5cGU7CiAgICAgU1ZHQW5p
bWF0aW9uRWxlbWVudCogbV9hbmltYXRpb25FbGVtZW50OwogICAgIFNWR0VsZW1lbnQqIG1fY29u
dGV4dEVsZW1lbnQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25F
bGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDEzICs1MiwyMCBAQCB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHBy
b3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdBbmltYXRpb25F
bGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJ
TkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0Fu
aW1hdGlvbkVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwg
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VO
RF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR0FuaW1hdGlvbkVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJF
TlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9Q
Uk9QRVJUSUVTCiAKIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OlNWR0FuaW1hdGlvbkVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZH
U01JTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX2FuaW1hdGlvblZhbGlkKGZh
bHNlKQogeworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQW5pbWF0aW9uRWxl
bWVudCgpOwogfQogCiBzdGF0aWMgdm9pZCBwYXJzZUtleVRpbWVzKGNvbnN0IFN0cmluZyYgcGFy
c2UsIFZlY3RvcjxmbG9hdD4mIHJlc3VsdCwgYm9vbCB2ZXJpZnlPcmRlcikKQEAgLTIwMywyMiAr
MjEwLDYgQEAgdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjphdHRyaWJ1dGVDaGFuZwogICAgIFNW
R1NNSUxFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGF0dHIsIHByZXNlcnZlRGVjbHMpOwogfQog
Ci12b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgU1ZHU01JTEVsZW1lbnQ6OnN5bmNocm9uaXpl
UHJvcGVydHkoYXR0ck5hbWUpOwotCi0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsK
LSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAg
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICBlbHNlIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXMo
dGhpcywgYXR0ck5hbWUpOwotfQotCiBmbG9hdCBTVkdBbmltYXRpb25FbGVtZW50OjpnZXRTdGFy
dFRpbWUoKSBjb25zdAogewogICAgIHJldHVybiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGludGVy
dmFsQmVnaW4oKS52YWx1ZSgpKTsKQEAgLTQ4Niw3ICs0NzcsNyBAQCB2b2lkIFNWR0FuaW1hdGlv
bkVsZW1lbnQ6OmN1cnJlbnRWYWx1ZXNGCiAgICAgQ2FsY01vZGUgY2FsY01vZGUgPSB0aGlzLT5j
YWxjTW9kZSgpOwogICAgIGlmIChoYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlVGFnKSB8fCBo
YXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlQ29sb3JUYWcpKSB7CiAgICAgICAgIGNvbnN0IFNW
R0FuaW1hdGVFbGVtZW50KiBhbmltYXRlRWxlbWVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFNWR0Fu
aW1hdGVFbGVtZW50Kj4odGhpcyk7Ci0gICAgICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBhdHRy
aWJ1dGVUeXBlID0gYW5pbWF0ZUVsZW1lbnQtPmRldGVybWluZUFuaW1hdGVkQXR0cmlidXRlVHlw
ZSh0YXJnZXRFbGVtZW50KCkpOworICAgICAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBhdHRyaWJ1
dGVUeXBlID0gYW5pbWF0ZUVsZW1lbnQtPmRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKHRh
cmdldEVsZW1lbnQoKSk7CiAgICAgICAgIC8vIEZhbGwgYmFjayB0byBkaXNjcmV0ZSBhbmltYXRp
b25zIGZvciBTdHJpbmdzLgogICAgICAgICBpZiAoYXR0cmlidXRlVHlwZSA9PSBBbmltYXRlZEJv
b2xlYW4KICAgICAgICAgICAgIHx8IGF0dHJpYnV0ZVR5cGUgPT0gQW5pbWF0ZWRFbnVtZXJhdGlv
bgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCShyZXZpc2lv
biA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwOCw3ICsxMDgsNiBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVzZXJ2
ZURlY2xzKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVz
KGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoY29uc3QgU3RyaW5nJiBm
cm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKSA9IDA7CkBAIC0xMjMsMTAgKzEyMiwx
NCBAQCBwcml2YXRlOgogICAgIGZsb2F0IGNhbGN1bGF0ZVBlcmNlbnRGb3JTcGxpbmUoZmxvYXQg
cGVyY2VudCwgdW5zaWduZWQgc3BsaW5lSW5kZXgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGNhbGN1
bGF0ZUtleVRpbWVzSW5kZXgoZmxvYXQgcGVyY2VudCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRl
ZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHQW5pbWF0aW9uRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8g
U1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkg
eyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3lu
Y2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFu
Z3VhZ2UodGhpcyk7IH0KIAogICAgIGJvb2wgbV9hbmltYXRpb25WYWxpZDsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaAkocmV2aXNpb24gOTA0NTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDcgKzQyLDcgQEAgY2xhc3MgU1ZHQW5pbWF0aW9uRWxlbWVudDsKIAogY2xhc3MgU1ZHQW5p
bWF0b3JGYWN0b3J5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRl
ZFR5cGVBbmltYXRvcj4gY3JlYXRlKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1l
bnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgYXR0
cmlidXRlVHlwZSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGVBbmltYXRv
cj4gY3JlYXRlKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1l
bnQqIGNvbnRleHRFbGVtZW50LCBBbmltYXRlZFByb3BlcnR5VHlwZSBhdHRyaWJ1dGVUeXBlKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGFuaW1hdGlvbkVsZW1lbnQpOwogICAgICAgICBBU1NFUlQo
Y29udGV4dEVsZW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50
LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDExICszMywyMSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR0NpcmNsZUVsZW1lbnQsIFNWR05hbWVzOjpjeEF0dHIsIEN4LCBjeCkK
LURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTmFtZXM6OmN5QXR0
ciwgQ3ksIGN5KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdDaXJjbGVFbGVtZW50LCBTVkdO
YW1lczo6ckF0dHIsIFIsIHIpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdDaXJjbGVFbGVt
ZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVf
QU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHQ2lyY2xl
RWxlbWVudCwgU1ZHTmFtZXM6OmN4QXR0ciwgQ3gsIGN4KQorICAgIERFRklORV9BTklNQVRFRF9M
RU5HVEgoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTmFtZXM6OmN5QXR0ciwgQ3ksIGN5KQorICAgIERF
RklORV9BTklNQVRFRF9MRU5HVEgoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTmFtZXM6OnJBdHRyLCBS
LCByKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0NpcmNsZUVsZW1lbnQsIFNWR05h
bWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJP
UEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0NpcmNsZUVs
ZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoY3gpCisgICAgUkVH
SVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoY3kpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkocikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KQorICAgIFJFR0lTVEVSX1BB
UkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVE
X1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0NpcmNsZUVsZW1lbnQ6OlNWR0NpcmNsZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDog
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC00Niw2
ICs1Niw3IEBAIGlubGluZSBTVkdDaXJjbGVFbGVtZW50OjpTVkdDaXJjbGVFbGVtZW4KICAgICAs
IG1fcihMZW5ndGhNb2RlT3RoZXIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6
OmNpcmNsZVRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQ2lyY2xl
RWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0NpcmNsZUVsZW1lbnQ+IFNWR0NpcmNsZUVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCkBAIC0xMzgsNjcgKzE0OSw2IEBAIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmcKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdDaXJj
bGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplQ3goKTsKLSAgICAgICAgc3luY2hyb25pemVDeSgpOwotICAgICAgICBzeW5jaHJvbml6
ZVIoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0g
ICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwot
ICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0
eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAKLSAgICBpZiAoIWlzU3Vw
cG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmN4QXR0cikgewotICAg
ICAgICBzeW5jaHJvbml6ZUN4KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmN5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUN5KCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnJBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplUigpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQ
cm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYg
U1ZHQ2lyY2xlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdDaXJjbGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
Ci0KLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmN4QXR0ciwgQW5pbWF0ZWRMZW5n
dGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Y3lBdHRy
LCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjpyQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotfQotCiB2b2lkIFNWR0NpcmNsZUVsZW1l
bnQ6OnRvUGF0aERhdGEoUGF0aCYgcGF0aCkgY29uc3QKIHsKICAgICBBU1NFUlQocGF0aC5pc0Vt
cHR5KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCShyZXZpc2lv
biA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ3LDIyICs0NywyMiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotCi0gICAgdmlydHVhbCB2b2lk
IGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgdG9QYXRoRGF0YShQYXRoJikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wg
c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3gsIGN4KQotICAg
IERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN5LCBjeSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSChSLCByKQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERF
Q0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdDaXJjbGVFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeCwg
Y3gpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN5LCBjeSkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9MRU5HVEgoUiwgcikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09M
RUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQp
CisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8gU1ZHVGVzdHMK
KyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0
czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVS
ZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVT
eXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhp
cyk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwx
NSArMzQsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0
eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0NsaXBQYXRoRWxl
bWVudCwgU1ZHTmFtZXM6OmNsaXBQYXRoVW5pdHNBdHRyLCBDbGlwUGF0aFVuaXRzLCBjbGlwUGF0
aFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQotREVGSU5FX0FOSU1BVEVEX0JPT0xF
QU4oU1ZHQ2xpcFBhdGhFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRF
RF9FTlVNRVJBVElPTihTVkdDbGlwUGF0aEVsZW1lbnQsIFNWR05hbWVzOjpjbGlwUGF0aFVuaXRz
QXR0ciwgQ2xpcFBhdGhVbml0cywgY2xpcFBhdGhVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0
VHlwZSkKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdDbGlwUGF0aEVsZW1lbnQsIFNW
R05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURf
UFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0NsaXBQ
YXRoRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShjbGlwUGF0
aFVuaXRzKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElF
UwogCiBpbmxpbmUgU1ZHQ2xpcFBhdGhFbGVtZW50OjpTVkdDbGlwUGF0aEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX2NsaXBQ
YXRoVW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKQogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpjbGlwUGF0aFRhZykpOworICAgIHJlZ2lz
dGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQ2xpcFBhdGhFbGVtZW50KCk7CiB9CiAKIFBhc3NS
ZWZQdHI8U1ZHQ2xpcFBhdGhFbGVtZW50PiBTVkdDbGlwUGF0aEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC05OSw1MyAr
MTA4LDYgQEAgdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYQogICAgICAg
ICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCi12b2lkIFNWR0NsaXBQYXRoRWxl
bWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
LXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6
ZUNsaXBQYXRoVW5pdHMoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywg
YXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmNsaXBQ
YXRoVW5pdHNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplQ2xpcFBhdGhVbml0cygpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdU
ZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgU1ZHQ2xpcFBhdGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBz
X2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0NsaXBQYXRoRWxlbWVu
dDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjpjbGlwUGF0aFVuaXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci19Ci0KIHZvaWQgU1ZH
Q2xpcFBhdGhFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5v
ZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEp
CiB7CiAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChj
aGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0
YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCShyZXZpc2lv
biA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTAsMTggKzUwLDE5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBv
cnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lk
IGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmly
dHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBO
b2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENv
dW50RGVsdGEgPSAwKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0
eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKENsaXBQYXRo
VW5pdHMsIGNsaXBQYXRoVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgQkVH
SU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0NsaXBQYXRoRWxlbWVudCkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihDbGlwUGF0aFVuaXRzLCBjbGlwUGF0aFVu
aXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKLSAgICAvLyBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAg
Ly8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVz
KCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAg
dmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6
c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVt
TGFuZ3VhZ2UodGhpcyk7IH0KIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAkocmV2
aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNCArMzAsMjUgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwot
REVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25F
bGVtZW50LCBTVkdOYW1lczo6dHlwZUF0dHIsIFR5cGUsIHR5cGUsIENvbXBvbmVudFRyYW5zZmVy
VHlwZSkKLURFRklORV9BTklNQVRFRF9OVU1CRVJfTElTVChTVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OnRhYmxlVmFsdWVzQXR0ciwgVGFibGVWYWx1ZXMsIHRh
YmxlVmFsdWVzKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OnNsb3BlQXR0ciwgU2xvcGUsIHNsb3BlKQotREVGSU5F
X0FOSU1BVEVEX05VTUJFUihTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZH
TmFtZXM6OmludGVyY2VwdEF0dHIsIEludGVyY2VwdCwgaW50ZXJjZXB0KQotREVGSU5FX0FOSU1B
VEVEX05VTUJFUihTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6
OmFtcGxpdHVkZUF0dHIsIEFtcGxpdHVkZSwgYW1wbGl0dWRlKQotREVGSU5FX0FOSU1BVEVEX05V
TUJFUihTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OmV4cG9u
ZW50QXR0ciwgRXhwb25lbnQsIGV4cG9uZW50KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6Om9mZnNldEF0dHIsIE9m
ZnNldCwgb2Zmc2V0KQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJ
TkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1l
bnQsIFNWR05hbWVzOjp0eXBlQXR0ciwgVHlwZSwgdHlwZSwgQ29tcG9uZW50VHJhbnNmZXJUeXBl
KQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVJfTElTVChTVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OnRhYmxlVmFsdWVzQXR0ciwgVGFibGVWYWx1ZXMsIHRh
YmxlVmFsdWVzKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQsIFNWR05hbWVzOjpzbG9wZUF0dHIsIFNsb3BlLCBzbG9wZSkKKyAg
ICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50LCBTVkdOYW1lczo6aW50ZXJjZXB0QXR0ciwgSW50ZXJjZXB0LCBpbnRlcmNlcHQpCisgICAg
REVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVu
dCwgU1ZHTmFtZXM6OmFtcGxpdHVkZUF0dHIsIEFtcGxpdHVkZSwgYW1wbGl0dWRlKQorICAgIERF
RklORV9BTklNQVRFRF9OVU1CRVIoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQs
IFNWR05hbWVzOjpleHBvbmVudEF0dHIsIEV4cG9uZW50LCBleHBvbmVudCkKKyAgICBERUZJTkVf
QU5JTUFURURfTlVNQkVSKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdO
YW1lczo6b2Zmc2V0QXR0ciwgT2Zmc2V0LCBvZmZzZXQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BS
T1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWSh0eXBlKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHRhYmxl
VmFsdWVzKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHNsb3BlKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGludGVyY2VwdCkKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShhbXBsaXR1ZGUpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoZXhwb25lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkob2Zmc2V0KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogU1ZH
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC00Niw2ICs1Nyw3
IEBAIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpTVkcKICAgICAsIG1fYW1w
bGl0dWRlKDEpCiAgICAgLCBtX2V4cG9uZW50KDEpCiB7CisgICAgcmVnaXN0ZXJBbmltYXRlZFBy
b3BlcnRpZXNGb3JTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCgpOwogfQogCiBi
b29sIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKQEAgLTExNCw4MSArMTI2LDYgQEAg
dm9pZCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudAogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50
OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewot
ICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplVHlw
ZSgpOwotICAgICAgICBzeW5jaHJvbml6ZVRhYmxlVmFsdWVzKCk7Ci0gICAgICAgIHN5bmNocm9u
aXplU2xvcGUoKTsKLSAgICAgICAgc3luY2hyb25pemVJbnRlcmNlcHQoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVBbXBsaXR1ZGUoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHBvbmVudCgpOwotICAg
ICAgICBzeW5jaHJvbml6ZU9mZnNldCgpOwotICAgICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICgh
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0VsZW1lbnQ6OnN5
bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0eXBlQXR0cikgewotICAgICAgICBzeW5jaHJv
bml6ZVR5cGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6dGFibGVWYWx1ZXNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplVGFibGVW
YWx1ZXMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6c2xvcGVBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplU2xvcGUoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW50ZXJj
ZXB0QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUludGVyY2VwdCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjphbXBsaXR1ZGVBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplQW1wbGl0dWRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmV4cG9uZW50QXR0cikgewotICAg
ICAgICBzeW5jaHJvbml6ZUV4cG9uZW50KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9mZnNldEF0dHIpIHsKLSAgICAgICAgc3luY2hy
b25pemVPZmZzZXQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OnR5cGVBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRhYmxlVmFsdWVzQXR0ciwgQW5p
bWF0ZWROdW1iZXJMaXN0KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OnNsb3BlQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW50ZXJjZXB0QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwot
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6YW1wbGl0dWRlQXR0
ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6ZXhwb25lbnRBdHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpvZmZzZXRBdHRyLCBBbmltYXRlZE51bWJlcik7
Ci19Ci0KIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbkVsZW1lbnQ6OnRyYW5zZmVyRnVuY3Rpb24oKSBjb25zdAogewogICAgIENvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb24gZnVuYzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwzMSArMjksNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IDogcHVi
bGljIFNWR0VsZW1lbnQgewotcHVibGljOgotICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24g
dHJhbnNmZXJGdW5jdGlvbigpIGNvbnN0OwotCi1wcm90ZWN0ZWQ6Ci0gICAgU1ZHQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7
Ci0KLSAgICAvLyBGSVhNRTogc3ZnQXR0cmlidXRlQ2hhbmdlZCBtaXNzaW5nLgotICAgIGJvb2wg
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2
b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAg
Ci1wcml2YXRlOgotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERF
Q0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oVHlwZSwgdHlwZSwgQ29tcG9uZW50VHJhbnNmZXJU
eXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSX0xJU1QoVGFibGVWYWx1ZXMsIHRhYmxl
VmFsdWVzKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFNsb3BlLCBzbG9wZSkKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX05VTUJFUihJbnRlcmNlcHQsIGludGVyY2VwdCkKLSAgICBERUNMQVJF
X0FOSU1BVEVEX05VTUJFUihBbXBsaXR1ZGUsIGFtcGxpdHVkZSkKLSAgICBERUNMQVJFX0FOSU1B
VEVEX05VTUJFUihFeHBvbmVudCwgZXhwb25lbnQpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1C
RVIoT2Zmc2V0LCBvZmZzZXQpCi19OwotCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgU1ZHUHJvcGVydHlU
cmFpdHM8Q29tcG9uZW50VHJhbnNmZXJUeXBlPiB7CiAgICAgc3RhdGljIENvbXBvbmVudFRyYW5z
ZmVyVHlwZSBoaWdoZXN0RW51bVZhbHVlKCkgeyByZXR1cm4gRkVDT01QT05FTlRUUkFOU0ZFUl9U
WVBFX0dBTU1BOyB9CkBAIC05NSw2ICs3MCwyOSBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8
Q29tcG9uZW50VHJhbnNmCiAgICAgfQogfTsKIAorY2xhc3MgU1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnQgOiBwdWJsaWMgU1ZHRWxlbWVudCB7CitwdWJsaWM6CisgICAgQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbiB0cmFuc2ZlckZ1bmN0aW9uKCkgY29uc3Q7CisKK3Byb3RlY3Rl
ZDoKKyAgICBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqKTsKKworICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
IG1pc3NpbmcuCisgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSop
OworICAgIAorcHJpdmF0ZToKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfRU5VTUVSQVRJT04oVHlwZSwgdHlwZSwgQ29tcG9uZW50VHJhbnNmZXJUeXBlKQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUl9MSVNUKFRhYmxlVmFsdWVzLCB0YWJsZVZhbHVl
cykKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU2xvcGUsIHNsb3BlKQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihJbnRlcmNlcHQsIGludGVyY2VwdCkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQW1wbGl0dWRlLCBhbXBsaXR1ZGUpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfTlVNQkVSKEV4cG9uZW50LCBleHBvbmVudCkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9OVU1CRVIoT2Zmc2V0LCBvZmZzZXQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVElFUworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQ3Vyc29yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0N1cnNvckVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDIwIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlv
bnMKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTmFtZXM6OnhB
dHRyLCBYLCB4KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdDdXJzb3JFbGVtZW50LCBTVkdO
YW1lczo6eUF0dHIsIFksIHkpCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0N1cnNvckVsZW1l
bnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQotREVGSU5FX0FOSU1BVEVEX0JP
T0xFQU4oU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFU
RURfTEVOR1RIKFNWR0N1cnNvckVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKKyAgICBE
RUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0N1cnNvckVsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwg
WSwgeSkKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0N1cnNvckVsZW1lbnQsIFhMaW5r
TmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFO
KFNWR0N1cnNvckVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0
ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkK
K0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR0N1cnNvckVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkoeCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5KQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGhyZWYpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBS
RUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RF
Ul9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdDdXJzb3JFbGVtZW50OjpTVkdDdXJz
b3JFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCkKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC00Miw2ICs1MSw3IEBA
IGlubGluZSBTVkdDdXJzb3JFbGVtZW50OjpTVkdDdXJzb3JFbGVtZW4KICAgICAsIG1feShMZW5n
dGhNb2RlSGVpZ2h0KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpjdXJzb3JU
YWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0N1cnNvckVsZW1lbnQo
KTsKIH0KIAogUGFzc1JlZlB0cjxTVkdDdXJzb3JFbGVtZW50PiBTVkdDdXJzb3JFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpA
QCAtOTYsMjAgKzEwNiw2IEBAIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWIKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIFNWR0N1cnNvckVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0
dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0K
IHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6YWRkQ2xpZW50KFNWR0VsZW1lbnQqIGVsZW1lbnQpCiB7
CiAgICAgbV9jbGllbnRzLmFkZChlbGVtZW50KTsKQEAgLTE0Nyw1MSArMTQzLDYgQEAgdm9pZCBT
VkdDdXJzb3JFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZwogICAgICAgICAoKml0KS0+c2V0TmVl
ZHNTdHlsZVJlY2FsYygpOwogfQogCi12b2lkIFNWR0N1cnNvckVsZW1lbnQ6OnN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJO
YW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHN5
bmNocm9uaXplWSgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQoKTsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5j
aHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdFbGVtZW50Ojpz
eW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0Vs
ZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cikgewotICAgICAgICBz
eW5jaHJvbml6ZVgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
U1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBz
eW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdU
ZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGVzdHM6OnN5
bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQogdm9pZCBTVkdDdXJzb3JFbGVt
ZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMp
IGNvbnN0CiB7CiAgICAgU1ZHRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVy
bHMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCShyZXZpc2lvbiA5
MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUzLDIxICs1MywyMCBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9u
aXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVh
bCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNv
bnN0OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5
KQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkco
SHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHQ3Vyc29yRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwg
eCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9C
T09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8gU1ZHVGVz
dHMKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdU
ZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25p
emVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25p
emVTeXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2Uo
dGhpcyk7IH0KIAogICAgIEhhc2hTZXQ8U1ZHRWxlbWVudCo+IG1fY2xpZW50czsKIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjgsMTMgKzI4LDIxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJv
cGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0RlZnNFbGVtZW50
LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5J
TUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0RlZnNFbGVt
ZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FO
SU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhT
VkdEZWZzRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVO
VF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BS
T1BFUlRJRVMKIAogaW5saW5lIFNWR0RlZnNFbGVtZW50OjpTVkdEZWZzRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShTVkdOYW1lczo6ZGVmc1RhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9w
ZXJ0aWVzRm9yU1ZHRGVmc0VsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdEZWZzRWxlbWVu
dD4gU1ZHRGVmc0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCkBAIC01MiwyMiArNjAsNiBAQCBSZW5kZXJPYmplY3QqIFNWR0Rl
ZnNFbGVtZW50OjpjcmVhdGVSZW5kCiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR0hp
ZGRlbkNvbnRhaW5lcih0aGlzKTsKIH0KIAotdm9pZCBTVkdEZWZzRWxlbWVudDo6c3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0K
LSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXpl
UHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkpCi0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwot
ICAgIGVsc2UgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKLSAgICAg
ICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci19Ci0K
IH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RGVmc0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0Vs
ZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0Vs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTIgKzQzLDE1IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7Ci0gICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCi0gICAg
Ly8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCisgICAgQkVHSU5fREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUSUVTKFNWR0RlZnNFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKLSAgICAvLyBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAg
Ly8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVz
KCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAg
dmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6
c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVt
TGFuZ3VhZ2UodGhpcyk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODUsMjMgKzI4NSw5IEBA
IHZvaWQgU1ZHRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXQKICAgICAgICAgU3R5bGVk
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLUF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBTVkdFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit2
b2lkIFNWR0VsZW1lbnQ6OmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFZlY3RvcjxBbmltYXRlZFByb3BlcnR5VHlwZT4m
IHByb3BlcnR5VHlwZXMpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJl
dHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi1BbmltYXRlZEF0dHJpYnV0
ZVR5cGUgU1ZHRWxlbWVudDo6YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGFuaW1hdGVkQXR0cmlidXRlTWFwID0gYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
LSAgICBpZiAoYW5pbWF0ZWRBdHRyaWJ1dGVNYXAuaXNFbXB0eSgpKQotICAgICAgICBmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICBpZiAoYW5pbWF0ZWRBdHRyaWJ1dGVNYXAu
Y29udGFpbnMoYXR0ck5hbWUpKQotICAgICAgICByZXR1cm4gYW5pbWF0ZWRBdHRyaWJ1dGVNYXAu
Z2V0KGF0dHJOYW1lKTsKLSAgICBpZiAoaXNTdHlsZWQoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFNWR1N0eWxlZEVsZW1lbnQqPih0aGlzKS0+YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JD
U1NQcm9wZXJ0eShhdHRyTmFtZSk7Ci0KLSAgICByZXR1cm4gQW5pbWF0ZWRVbmtub3duOworICAg
IGxvY2FsQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpLmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUsIHByb3BlcnR5VHlwZXMpOwogfQogCiBib29sIFNWR0VsZW1l
bnQ6OmhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygpCkBAIC0zOTIsMTMgKzM3OCw0MiBAQCB2
b2lkIFNWR0VsZW1lbnQ6OnVwZGF0ZUFuaW1hdGVkU1ZHQXR0cmliCiAKICAgICBzZXRJc1N5bmNo
cm9uaXppbmdTVkdBdHRyaWJ1dGVzKCk7CiAKLSAgICBjb25zdF9jYXN0PFNWR0VsZW1lbnQqPih0
aGlzKS0+c3luY2hyb25pemVQcm9wZXJ0eShuYW1lKTsKLSAgICBpZiAobmFtZSA9PSBhbnlRTmFt
ZSgpKQorICAgIFNWR0VsZW1lbnQqIG5vbkNvbnN0VGhpcyA9IGNvbnN0X2Nhc3Q8U1ZHRWxlbWVu
dCo+KHRoaXMpOworICAgIGlmIChuYW1lID09IGFueVFOYW1lKCkpIHsKKyAgICAgICAgbm9uQ29u
c3RUaGlzLT5sb2NhbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKS5zeW5jaHJvbml6ZVByb3BlcnRp
ZXMobm9uQ29uc3RUaGlzKTsKICAgICAgICAgc2V0QXJlU1ZHQXR0cmlidXRlc1ZhbGlkKCk7Cisg
ICAgfSBlbHNlCisgICAgICAgIG5vbkNvbnN0VGhpcy0+bG9jYWxBdHRyaWJ1dGVUb1Byb3BlcnR5
TWFwKCkuc3luY2hyb25pemVQcm9wZXJ0eShub25Db25zdFRoaXMsIG5hbWUpOwogCiAgICAgY2xl
YXJJc1N5bmNocm9uaXppbmdTVkdBdHRyaWJ1dGVzKCk7CiB9CiAKK1NWR0F0dHJpYnV0ZVRvUHJv
cGVydHlNYXAmIFNWR0VsZW1lbnQ6OmxvY2FsQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpCit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNWR0F0
dHJpYnV0ZVRvUHJvcGVydHlNYXAsIGR1bW15TWFwLCAoKSk7CisgICAgcmV0dXJuIGR1bW15TWFw
OworfQorCit2b2lkIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh2b2lk
KiBjb250ZXh0RWxlbWVudCkKK3sKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgIHN0
YXRpY19jYXN0PFNWR0VsZW1lbnQqPihjb250ZXh0RWxlbWVudCktPnN5bmNocm9uaXplUmVxdWly
ZWRGZWF0dXJlcygpOworfQorCit2b2lkIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRF
eHRlbnNpb25zKHZvaWQqIGNvbnRleHRFbGVtZW50KQoreworICAgIEFTU0VSVChjb250ZXh0RWxl
bWVudCk7CisgICAgc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KGNvbnRleHRFbGVtZW50KS0+c3lu
Y2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKTsKK30KKwordm9pZCBTVkdFbGVtZW50OjpzeW5j
aHJvbml6ZVN5c3RlbUxhbmd1YWdlKHZvaWQqIGNvbnRleHRFbGVtZW50KQoreworICAgIEFTU0VS
VChjb250ZXh0RWxlbWVudCk7CisgICAgc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KGNvbnRleHRF
bGVtZW50KS0+c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpOworfQorCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDQ3ICsyNCwyNyBAQAogCiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdMb2NhdGFi
bGUuaCIKKyNpbmNsdWRlICJTVkdQcm9wZXJ0eUluZm8uaCIKICNpbmNsdWRlICJTdHlsZWRFbGVt
ZW50LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1lbnVtIEFuaW1hdGVkQXR0cmlidXRlVHlwZSB7Ci0gICAgQW5pbWF0ZWRBbmdsZSwKLSAgICBB
bmltYXRlZEJvb2xlYW4sCi0gICAgQW5pbWF0ZWRDb2xvciwKLSAgICBBbmltYXRlZEVudW1lcmF0
aW9uLAotICAgIEFuaW1hdGVkSW50ZWdlciwKLSAgICBBbmltYXRlZExlbmd0aCwKLSAgICBBbmlt
YXRlZExlbmd0aExpc3QsCi0gICAgQW5pbWF0ZWROdW1iZXIsCi0gICAgQW5pbWF0ZWROdW1iZXJM
aXN0LAotICAgIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIsCi0gICAgQW5pbWF0ZWRQYXRo
LAotICAgIEFuaW1hdGVkUG9pbnRzLAotICAgIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbywK
LSAgICBBbmltYXRlZFJlY3QsCi0gICAgQW5pbWF0ZWRTdHJpbmcsCi0gICAgQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0LAotICAgIEFuaW1hdGVkVW5rbm93bgotfTsKLQogZW51bSBTVkdQYXJzaW5nRXJy
b3IgewogICAgIE5vRXJyb3IsCiAgICAgUGFyc2luZ0F0dHJpYnV0ZUZhaWxlZEVycm9yLAogICAg
IE5lZ2F0aXZlVmFsdWVGb3JiaWRkZW5FcnJvcgogfTsKIAotdHlwZWRlZiBIYXNoTWFwPFF1YWxp
ZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4gQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXA7Ci0KK2NsYXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIENTU0N1cnNvckltYWdlVmFsdWU7
CiBjbGFzcyBEb2N1bWVudDsKK2NsYXNzIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA7CiBjbGFz
cyBTVkdDdXJzb3JFbGVtZW50OwogY2xhc3MgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOwogY2xhc3Mg
U1ZHRWxlbWVudEluc3RhbmNlOwogY2xhc3MgU1ZHRWxlbWVudFJhcmVEYXRhOwogY2xhc3MgU1ZH
U1ZHRWxlbWVudDsKLWNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIAogY2xhc3MgU1ZHRWxlbWVudCA6
IHB1YmxpYyBTdHlsZWRFbGVtZW50IHsKIHB1YmxpYzoKQEAgLTkxLDEyICs3MSw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJikgeyB9Ci0KLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBh
bmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBWZWN0b3I8QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+Jik7CiAKICAgICB2b2lk
IHNlbmRTVkdMb2FkRXZlbnRJZlBvc3NpYmxlKGJvb2wgc2VuZFBhcmVudExvYWRFdmVudHMgPSBm
YWxzZSk7CiAKQEAgLTExNSw2ICs5MSwxNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlQW5pbWF0ZWRTVkdBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0Owog
CisgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHZvaWQqIGNvbnRl
eHRFbGVtZW50KTsKKyAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9u
cyh2b2lkKiBjb250ZXh0RWxlbWVudCk7CisgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVTeXN0
ZW1MYW5ndWFnZSh2b2lkKiBjb250ZXh0RWxlbWVudCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9u
aXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
U3lzdGVtTGFuZ3VhZ2UoKSB7IH0KKworICAgIHZpcnR1YWwgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0
eU1hcCYgbG9jYWxBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCk7CisKIHByb3RlY3RlZDoKICAgICBT
VkdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCkBAIC0xNDEsNyAr
MTI3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1hcEluc3RhbmNlVG9FbGVtZW50KFNWR0VsZW1l
bnRJbnN0YW5jZSopOwogICAgIHZvaWQgcmVtb3ZlSW5zdGFuY2VNYXBwaW5nKFNWR0VsZW1lbnRJ
bnN0YW5jZSopOwogCi0gICAgdmlydHVhbCBib29sIGhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNl
cygpOworICAgIHZpcnR1YWwgYm9vbCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKTsgICAg
CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDIzIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR05hbWVzOjpjeEF0dHIsIEN4LCBjeCkKLURF
RklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR05hbWVzOjpjeUF0dHIs
IEN5LCBjeSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR05h
bWVzOjpyeEF0dHIsIFJ4LCByeCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRWxsaXBzZUVs
ZW1lbnQsIFNWR05hbWVzOjpyeUF0dHIsIFJ5LCByeSkKLURFRklORV9BTklNQVRFRF9CT09MRUFO
KFNWR0VsbGlwc2VFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0
dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQp
CitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9M
RU5HVEgoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR05hbWVzOjpjeEF0dHIsIEN4LCBjeCkKKyAgICBE
RUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdOYW1lczo6Y3lBdHRy
LCBDeSwgY3kpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdFbGxpcHNlRWxlbWVudCwg
U1ZHTmFtZXM6OnJ4QXR0ciwgUngsIHJ4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZH
RWxsaXBzZUVsZW1lbnQsIFNWR05hbWVzOjpyeUF0dHIsIFJ5LCByeSkKKyAgICBERUZJTkVfQU5J
TUFURURfQk9PTEVBTihTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JF
R0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRWxsaXBzZUVsZW1lbnQpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoY3gpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkoY3kpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocngp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocnkpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBS
RUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0
cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdFbGxpcHNl
RWxlbWVudDo6U1ZHRWxsaXBzZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpCkBAIC00OCw2ICs1OSw3IEBAIGlubGluZSBTVkdFbGxpcHNlRWxl
bWVudDo6U1ZHRWxsaXBzZUVsZW0KICAgICAsIG1fcnkoTGVuZ3RoTW9kZUhlaWdodCkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZWxsaXBzZVRhZykpOworICAgIHJlZ2lzdGVy
QW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRWxsaXBzZUVsZW1lbnQoKTsKIH0gICAgCiAKIFBhc3NS
ZWZQdHI8U1ZHRWxsaXBzZUVsZW1lbnQ+IFNWR0VsbGlwc2VFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTQ5LDc0ICsx
NjEsNiBAQCB2b2lkIFNWR0VsbGlwc2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnN5bmNocm9u
aXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0
dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVDeCgpOwotICAgICAg
ICBzeW5jaHJvbml6ZUN5KCk7Ci0gICAgICAgIHN5bmNocm9uaXplUngoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVSeSgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRy
TmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICgh
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6Y3hBdHRyKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplQ3goKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6Y3lBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
Q3koKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6cnhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplUngoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cnlBdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplUnkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlz
LCBhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0VsbGlwc2VFbGVt
ZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQot
Ci12b2lkIFNWR0VsbGlwc2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsgICAgCi0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpjeEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmN5QXR0ciwgQW5pbWF0
ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
cnhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjpyeUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLX0KLQogdm9pZCBTVkdFbGxp
cHNlRWxlbWVudDo6dG9QYXRoRGF0YShQYXRoJiBwYXRoKSBjb25zdAogewogICAgIEFTU0VSVChw
YXRoLmlzRW1wdHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQu
aAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMjIgKzQ3LDIzIEBAIHByaXZhdGU6CiAgICAgYm9v
bCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmly
dHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwg
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgdG9QYXRoRGF0YShQYXRoJikgY29uc3Q7CiAKICAgICB2aXJ0
dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCi0gICAgLy8gQW5pbWF0
ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3gs
IGN4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN5LCBjeSkKLSAgICBERUNMQVJFX0FO
SU1BVEVEX0xFTkdUSChSeCwgcngpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUnksIHJ5
KQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5J
TUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdFbGxp
cHNlRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3gsIGN4KQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeSwgY3kpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfTEVOR1RIKFJ4LCByeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUnks
IHJ5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5j
aHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVk
RmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4
dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlz
KTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdU
ZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE2ICszMSwyNSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5J
TUFURURfU1RSSU5HKFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGlu
MSkKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVCbGVuZEVsZW1lbnQsIFNWR05hbWVzOjpp
bjJBdHRyLCBJbjIsIGluMikKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRUJsZW5k
RWxlbWVudCwgU1ZHTmFtZXM6Om1vZGVBdHRyLCBNb2RlLCBtb2RlLCBCbGVuZE1vZGVUeXBlKQor
QkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfU1RS
SU5HKFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKKyAgICBE
RUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdOYW1lczo6aW4yQXR0
ciwgSW4yLCBpbjIpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFQmxlbmRF
bGVtZW50LCBTVkdOYW1lczo6bW9kZUF0dHIsIE1vZGUsIG1vZGUsIEJsZW5kTW9kZVR5cGUpCitF
TkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdGRUJsZW5kRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShpbjEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4y
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKG1vZGUpCisgICAgUkVHSVNU
RVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNW
R0ZFQmxlbmRFbGVtZW50OjpTVkdGRUJsZW5kRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX21vZGUoRkVCTEVORF9N
T0RFX05PUk1BTCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVCbGVuZFRh
ZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVCbGVuZEVsZW1lbnQo
KTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRUJsZW5kRWxlbWVudD4gU1ZHRkVCbGVuZEVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CkBAIC0xMTksNTUgKzEyOCw2IEBAIHZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRUJsZW5kRWxl
bWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
LXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6
ZU1vZGUoKTsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgc3luY2hyb25pemVJ
bjIoKTsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5j
aHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFt
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6Om1vZGVBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplTW9kZSgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAg
ICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUlu
MigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRUJsZW5kRWxlbWVudDo6YXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgp
KTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBT
VkdGRUJsZW5kRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAg
ICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAg
PSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOyAgICAKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW4yQXR0ciwgQW5pbWF0
ZWRTdHJpbmcpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
bW9kZUF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotfQotCiBQYXNzUmVmUHRyPEZpbHRlckVm
ZmVjdD4gU1ZHRkVCbGVuZEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1
aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmls
dGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVCbGVuZEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMjggKzI4LDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdGRUJsZW5kRWxlbWVudCA6IHB1Ymxp
YyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgewotcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNWR0ZFQmxlbmRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Kik7Ci0KLXByaXZhdGU6Ci0gICAgU1ZHRkVCbGVuZEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0KLSAgICBib29sIGlzU3VwcG9ydGVkQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7Ci0gICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVj
dEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSk7
Ci0gICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7Ci0KLSAgICAvLyBBbmltYXRlZCBwcm9w
ZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkK
LSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjIsIGluMikKLSAgICBERUNMQVJFX0FOSU1B
VEVEX0VOVU1FUkFUSU9OKE1vZGUsIG1vZGUsIEJsZW5kTW9kZVR5cGUpCi19OwotCiB0ZW1wbGF0
ZTw+CiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8QmxlbmRNb2RlVHlwZT4gewogICAgIHN0YXRp
YyBCbGVuZE1vZGVUeXBlIGhpZ2hlc3RFbnVtVmFsdWUoKSB7IHJldHVybiBGRUJMRU5EX01PREVf
TElHSFRFTjsgfQpAQCAtOTEsNiArNjksMjYgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPEJs
ZW5kTW9kZVR5cGU+IAogICAgIH0KIH07CiAKK2NsYXNzIFNWR0ZFQmxlbmRFbGVtZW50IDogcHVi
bGljIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVCbGVuZEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBTVkdGRUJsZW5kRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKworICAgIGJvb2wgaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZm
ZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmls
dGVyQnVpbGRlciosIEZpbHRlciopOworCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR0ZFQmxlbmRFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklO
RyhJbjEsIGluMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4yLCBpbjIpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oTW9kZSwgbW9kZSwgQmxlbmRNb2Rl
VHlwZSkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCit9OworCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDE2ICszMSwyNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5H
KFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKLURF
RklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTmFt
ZXM6OnR5cGVBdHRyLCBUeXBlLCB0eXBlLCBDb2xvck1hdHJpeFR5cGUpCi1ERUZJTkVfQU5JTUFU
RURfTlVNQkVSX0xJU1QoU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQsIFNWR05hbWVzOjp2YWx1ZXNB
dHRyLCBWYWx1ZXMsIHZhbHVlcykKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisg
ICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTmFt
ZXM6OmluQXR0ciwgSW4xLCBpbjEpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6dHlwZUF0dHIsIFR5cGUsIHR5cGUsIENv
bG9yTWF0cml4VHlwZSkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSX0xJU1QoU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQsIFNWR05hbWVzOjp2YWx1ZXNBdHRyLCBWYWx1ZXMsIHZhbHVlcykKK0VO
RF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKGluMSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WSh0eXBlKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHZhbHVlcykKKyAg
ICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBp
bmxpbmUgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKICAg
ICAsIG1fdHlwZShGRUNPTE9STUFUUklYX1RZUEVfVU5LTk9XTikKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShTVkdOYW1lczo6ZmVDb2xvck1hdHJpeFRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0
ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0
cjxTVkdGRUNvbG9yTWF0cml4RWxlbWVudD4gU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0x
MjQsNTUgKzEzMyw2IEBAIHZvaWQgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJpYnUK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxl
bWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
LXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6
ZVR5cGUoKTsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgc3luY2hyb25pemVW
YWx1ZXMoKTsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpz
eW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRy
TmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnR5cGVBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplVHlwZSgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsK
LSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dmFsdWVzQXR0cikgewotICAgICAgICBzeW5jaHJv
bml6ZVZhbHVlcygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRUNvbG9yTWF0
cml4RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cDsKLX0KLQotdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwotCi0gICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsUGFzc2Vk
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwot
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmlt
YXRlZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
Ojp0eXBlQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp2YWx1ZXNBdHRyLCBBbmltYXRlZE51bWJlckxpc3QpOwot
fQotCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewog
ICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChp
bjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMjggKzI5LDYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdGRUNvbG9yTWF0cml4RWxlbWVudCA6IHB1YmxpYyBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgewotcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Kik7Ci0KLXByaXZhdGU6Ci0gICAgU1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0KLSAgICBib29sIGlzU3Vw
cG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7Ci0gICAgdmlydHVhbCBib29sIHNldEZp
bHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7
Ci0gICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7Ci0KLSAgICAvLyBBbmltYXRlZCBwcm9w
ZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkK
LSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFR5cGUsIHR5cGUsIENvbG9yTWF0cml4
VHlwZSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUl9MSVNUKFZhbHVlcywgdmFsdWVzKQot
fTsKLQogdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPENvbG9yTWF0cml4VHlw
ZT4gewogICAgIHN0YXRpYyBDb2xvck1hdHJpeFR5cGUgaGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0
dXJuIEZFQ09MT1JNQVRSSVhfVFlQRV9MVU1JTkFOQ0VUT0FMUEhBOyB9CkBAIC04OCw2ICs2Niwy
NiBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8Q29sb3JNYXRyaXhUeXBlCiAgICAgfQogfTsK
IAorY2xhc3MgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
VkdGRUNvbG9yTWF0cml4RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOworCitwcml2YXRlOgorICAgIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCisgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0
cmlidXRlKEF0dHJpYnV0ZSopOworICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRy
aWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmls
dGVyKik7CisKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4x
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFR5cGUsIHR5cGUsIENvbG9y
TWF0cml4VHlwZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVJfTElTVChWYWx1ZXMs
IHZhbHVlcykKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCit9OworCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEzICszNCwyMCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwot
REVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCwgU1ZH
TmFtZXM6OmluQXR0ciwgSW4xLCBpbjEpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElF
UworICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9Q
RVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVDb21wb25l
bnRUcmFuc2ZlckVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
aW4xKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJU
SUVTCiAKIGlubGluZSBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6U1ZHRkVDb21wb25l
bnRUcmFuc2ZlckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRh
Z05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUNv
bXBvbmVudFRyYW5zZmVyVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JT
VkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAg
LTcyLDQxICs3OSw2IEBAIHZvaWQgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OnBhcnMK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRUNvbXBvbmVudFRyYW5z
ZmVyRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5j
aHJvbml6ZUluMSgpOwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5
KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjphdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkp
OwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5n
KTsKLX0KLQogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJF
bGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZp
bHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVm
ZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDEzICszNywxMSBAQCBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1dGVD
aGFuZ2VkIG1pc3NpbmcuCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSopOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKLSAgICAvLyBBbmltYXRlZCBw
cm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGlu
MSkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVDb21wb25lbnRU
cmFuc2ZlckVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4x
KQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bXBvc2l0ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwyMCArMzEsMzMgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwot
REVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjpp
bkF0dHIsIEluMSwgaW4xKQotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQsIFNWR05hbWVzOjppbjJBdHRyLCBJbjIsIGluMikKLURFRklORV9BTklNQVRFRF9FTlVN
RVJBVElPTihTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjpvcGVyYXRvckF0dHIsIF9v
cGVyYXRvciwgX29wZXJhdG9yLCBDb21wb3NpdGVPcGVyYXRpb25UeXBlKQotREVGSU5FX0FOSU1B
VEVEX05VTUJFUihTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjprMUF0dHIsIEsxLCBr
MSkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1l
czo6azJBdHRyLCBLMiwgazIpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFQ29tcG9zaXRl
RWxlbWVudCwgU1ZHTmFtZXM6OmszQXR0ciwgSzMsIGszKQotREVGSU5FX0FOSU1BVEVEX05VTUJF
UihTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjprNEF0dHIsIEs0LCBrNCkKK0JFR0lO
X0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhT
VkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorICAgIERF
RklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6aW4y
QXR0ciwgSW4yLCBpbjIpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFQ29t
cG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciwgX29wZXJhdG9yLCBfb3BlcmF0
b3IsIENvbXBvc2l0ZU9wZXJhdGlvblR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihT
VkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjprMUF0dHIsIEsxLCBrMSkKKyAgICBERUZJ
TkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6OmsyQXR0
ciwgSzIsIGsyKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVDb21wb3NpdGVFbGVt
ZW50LCBTVkdOYW1lczo6azNBdHRyLCBLMywgazMpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJF
UihTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjprNEF0dHIsIEs0LCBrNCkKK0VORF9E
RUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShpbjEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4y
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKF9vcGVyYXRvcikKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrMSkKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWShrMikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShrMykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrNCkKKyAgICBSRUdJ
U1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUg
U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9fb3Bl
cmF0b3IoRkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZFUikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFt
ZShTVkdOYW1lczo6ZmVDb21wb3NpdGVUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVy
dGllc0ZvclNWR0ZFQ29tcG9zaXRlRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFQ29t
cG9zaXRlRWxlbWVudD4gU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTYwLDgzICsxNzMsNiBA
QCB2b2lkIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6c3ZnQXR0cmlidXRlCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRy
TmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplX29wZXJhdG9yKCk7Ci0g
ICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSW4yKCk7Ci0gICAg
ICAgIHN5bmNocm9uaXplSzEoKTsKLSAgICAgICAgc3luY2hyb25pemVLMigpOwotICAgICAgICBz
eW5jaHJvbml6ZUszKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSzQoKTsKLSAgICAgICAgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJO
YW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZV9vcGVyYXRvcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgc3luY2hy
b25pemVJbjEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6aW4yQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMigpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjprMUF0dHIp
IHsKLSAgICAgICAgc3luY2hyb25pemVLMSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjprMkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25p
emVLMigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjprM0F0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVLMygpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjprNEF0dHIpIHsKLSAg
ICAgICAgc3luY2hyb25pemVLNCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdG
RUNvbXBvc2l0ZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQ
YXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCk7ICAgIAotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5B
dHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjppbjJBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpvcGVyYXRvckF0dHIsIEFuaW1hdGVkRW51bWVyYXRp
b24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6azFBdHRy
LCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjprMkF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmszQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6azRBdHRyLCBBbmltYXRlZE51bWJl
cik7Ci19Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6
OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQog
ewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJ
ZChpbjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVu
dC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0
ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMzIgKzI5LDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQgOiBwdWJsaWMgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKLQotcHJpdmF0ZToKLSAgICBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0KLSAgICBib29sIGlzU3VwcG9ydGVkQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7Ci0gICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVj
dEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmly
dHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAg
dmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7Ci0KLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNs
YXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKLSAgICBERUNM
QVJFX0FOSU1BVEVEX1NUUklORyhJbjIsIGluMikKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1F
UkFUSU9OKF9vcGVyYXRvciwgX29wZXJhdG9yLCBDb21wb3NpdGVPcGVyYXRpb25UeXBlKQotICAg
IERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEsxLCBrMSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05V
TUJFUihLMiwgazIpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoSzMsIGszKQotICAgIERF
Q0xBUkVfQU5JTUFURURfTlVNQkVSKEs0LCBrNCkKLX07Ci0KIHRlbXBsYXRlPD4KIHN0cnVjdCBT
VkdQcm9wZXJ0eVRyYWl0czxDb21wb3NpdGVPcGVyYXRpb25UeXBlPiB7CiAgICAgc3RhdGljIENv
bXBvc2l0ZU9wZXJhdGlvblR5cGUgaGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJuIEZFQ09NUE9T
SVRFX09QRVJBVE9SX0FSSVRITUVUSUM7IH0KQEAgLTEwMCw2ICs3NCwzMCBAQCBzdHJ1Y3QgU1ZH
UHJvcGVydHlUcmFpdHM8Q29tcG9zaXRlT3BlcmF0CiAgICAgfQogfTsKIAorY2xhc3MgU1ZHRkVD
b21wb3NpdGVFbGVtZW50IDogcHVibGljIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVDb21wb3NpdGVFbGVt
ZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisKK3ByaXZhdGU6
CisgICAgU1ZHRkVDb21wb3NpdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCopOworCisgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwor
ICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0Kiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVy
RWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CisKKyAgICBCRUdJTl9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVDb21wb3NpdGVFbGVtZW50KQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9TVFJJTkcoSW4yLCBpbjIpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJ
T04oX29wZXJhdG9yLCBfb3BlcmF0b3IsIENvbXBvc2l0ZU9wZXJhdGlvblR5cGUpCisgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEsxLCBrMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9OVU1CRVIoSzIsIGsyKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLMywgazMp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEs0LCBrNCkKKyAgICBFTkRfREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUSUVTCit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDI1ICszNCw0MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVk
IHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKLURFRklORV9BTklN
QVRFRF9JTlRFR0VSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
LCBTVkdOYW1lczo6b3JkZXJBdHRyLCBvcmRlclhJZGVudGlmaWVyKCksIE9yZGVyWCwgb3JkZXJY
KQotREVGSU5FX0FOSU1BVEVEX0lOVEVHRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQsIFNWR05hbWVzOjpvcmRlckF0dHIsIG9yZGVyWUlkZW50aWZpZXIoKSwg
T3JkZXJZLCBvcmRlclkpIAotREVGSU5FX0FOSU1BVEVEX05VTUJFUl9MSVNUKFNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6a2VybmVsTWF0cml4QXR0ciwgS2VybmVsTWF0cml4
LCBrZXJuZWxNYXRyaXgpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50LCBTVkdOYW1lczo6ZGl2aXNvckF0dHIsIERpdmlzb3IsIGRpdmlzb3IpCi1ERUZJ
TkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6
Ymlhc0F0dHIsIEJpYXMsIGJpYXMpCi1ERUZJTkVfQU5JTUFURURfSU5URUdFUihTVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OnRhcmdldFhBdHRyLCBUYXJnZXRYLCB0YXJnZXRY
KQotREVGSU5FX0FOSU1BVEVEX0lOVEVHRVIoU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQsIFNW
R05hbWVzOjp0YXJnZXRZQXR0ciwgVGFyZ2V0WSwgdGFyZ2V0WSkKLURFRklORV9BTklNQVRFRF9F
TlVNRVJBVElPTihTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OmVkZ2VNb2Rl
QXR0ciwgRWRnZU1vZGUsIGVkZ2VNb2RlLCBFZGdlTW9kZVR5cGUpCi1ERUZJTkVfQU5JTUFURURf
TlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdO
YW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigp
LCBLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgpCi1ERUZJTkVfQU5JTUFURURf
TlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdO
YW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigp
LCBLZXJuZWxVbml0TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0aFkpCi1ERUZJTkVfQU5JTUFURURf
Qk9PTEVBTihTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQWxw
aGFBdHRyLCBQcmVzZXJ2ZUFscGhhLCBwcmVzZXJ2ZUFscGhhKQorQkVHSU5fREVGSU5FX0FOSU1B
VEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKKyAgICBERUZJTkVfQU5J
TUFURURfSU5URUdFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dCwgU1ZHTmFtZXM6Om9yZGVyQXR0ciwgb3JkZXJYSWRlbnRpZmllcigpLCBPcmRlclgsIG9yZGVy
WCkKKyAgICBERUZJTkVfQU5JTUFURURfSU5URUdFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6Om9yZGVyQXR0ciwgb3JkZXJZSWRlbnRpZmll
cigpLCBPcmRlclksIG9yZGVyWSkgCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9MSVNUKFNW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6a2VybmVsTWF0cml4QXR0ciwgS2Vy
bmVsTWF0cml4LCBrZXJuZWxNYXRyaXgpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OmRpdmlzb3JBdHRyLCBEaXZpc29yLCBk
aXZpc29yKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQsIFNWR05hbWVzOjpiaWFzQXR0ciwgQmlhcywgYmlhcykKKyAgICBERUZJTkVfQU5JTUFU
RURfSU5URUdFUihTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OnRhcmdldFhB
dHRyLCBUYXJnZXRYLCB0YXJnZXRYKQorICAgIERFRklORV9BTklNQVRFRF9JTlRFR0VSKFNWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6dGFyZ2V0WUF0dHIsIFRhcmdldFksIHRh
cmdldFkpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50LCBTVkdOYW1lczo6ZWRnZU1vZGVBdHRyLCBFZGdlTW9kZSwgZWRnZU1vZGUsIEVk
Z2VNb2RlVHlwZSkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJT
KFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0
dHIsIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpLCBLZXJuZWxVbml0TGVuZ3RoWCwga2Vy
bmVsVW5pdExlbmd0aFgpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQ
UEVSUyhTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5n
dGhBdHRyLCBrZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIoKSwgS2VybmVsVW5pdExlbmd0aFks
IGtlcm5lbFVuaXRMZW5ndGhZKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6cHJlc2VydmVBbHBoYUF0dHIsIFByZXNlcnZl
QWxwaGEsIHByZXNlcnZlQWxwaGEpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKwor
QkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjEpCisgICAgUkVH
SVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkob3JkZXJYKQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKG9yZGVyWSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWShrZXJuZWxNYXRyaXgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkoZGl2aXNvcikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShiaWFzKQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHRhcmdldFgpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkodGFyZ2V0WSkKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWShlZGdlTW9kZSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWShrZXJuZWxVbml0TGVuZ3RoWCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWShrZXJuZWxVbml0TGVuZ3RoWSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWShwcmVzZXJ2ZUFscGhhKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RF
Ul9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dDo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9lZGdlTW9kZShFREdFTU9ERV9E
VVBMSUNBVEUpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlQ29udm9sdmVN
YXRyaXhUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQ+IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMjQ1LDg4ICsyNjMsNiBAQCB2
b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzdmdBdHRyCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnN5bmNocm9u
aXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0
dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVFZGdlTW9kZSgpOwot
ICAgICAgICBzeW5jaHJvbml6ZURpdmlzb3IoKTsKLSAgICAgICAgc3luY2hyb25pemVCaWFzKCk7
Ci0gICAgICAgIHN5bmNocm9uaXplVGFyZ2V0WCgpOwotICAgICAgICBzeW5jaHJvbml6ZVRhcmdl
dFkoKTsKLSAgICAgICAgc3luY2hyb25pemVLZXJuZWxVbml0TGVuZ3RoWCgpOwotICAgICAgICBz
eW5jaHJvbml6ZUtlcm5lbFVuaXRMZW5ndGhZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUHJlc2Vy
dmVBbHBoYSgpOwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6
OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6ZWRnZU1vZGVBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRWRnZU1vZGUoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
ZGl2aXNvckF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVEaXZpc29yKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmJpYXNBdHRyKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplQmlhcygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0YXJnZXRYQXR0cikgewotICAgICAgICBzeW5j
aHJvbml6ZVRhcmdldFgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6dGFyZ2V0WUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVUYXJn
ZXRZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplS2VybmVs
VW5pdExlbmd0aFgoKTsKLSAgICAgICAgc3luY2hyb25pemVLZXJuZWxVbml0TGVuZ3RoWSgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpw
cmVzZXJ2ZUFscGhhQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVByZXNlcnZlQWxwaGEoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQot
Ci1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6
OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZv
aWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAg
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbFBhc3NlZEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJp
bmcpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6b3JkZXJB
dHRyLCBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Omtlcm5lbE1hdHJpeEF0dHIsIEFuaW1hdGVkTnVtYmVy
TGlzdCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpkaXZp
c29yQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6Ymlhc0F0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRhcmdldFhBdHRyLCBBbmltYXRlZEludGVn
ZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dGFyZ2V0
WUF0dHIsIEFuaW1hdGVkSW50ZWdlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjpvcGVyYXRvckF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0
dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6cHJlc2VydmVBbHBoYUF0dHIsIEFuaW1hdGVkQm9vbGVh
bik7Ci19Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0
ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZl
Y3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw0NSAr
MzEsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50IDogcHVibGljIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIHZvaWQg
c2V0T3JkZXIoZmxvYXQgb3JkZXJYLCBmbG9hdCBvcmRlclkpOwotICAgIHZvaWQgc2V0S2VybmVs
VW5pdExlbmd0aChmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0
aFkpOwotCi1wcml2YXRlOgotICAgIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotCi0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0
cmlidXRlKEF0dHJpYnV0ZSopOwotICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRy
aWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAg
dmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1
YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciosIEZpbHRlciopOwotCi0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgb3Jk
ZXJYSWRlbnRpZmllcigpOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG9yZGVyWUlk
ZW50aWZpZXIoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVu
Z3RoWElkZW50aWZpZXIoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBrZXJuZWxV
bml0TGVuZ3RoWUlkZW50aWZpZXIoKTsKLQotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xh
cmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xB
UkVfQU5JTUFURURfSU5URUdFUihPcmRlclgsIG9yZGVyWCkKLSAgICBERUNMQVJFX0FOSU1BVEVE
X0lOVEVHRVIoT3JkZXJZLCBvcmRlclkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVJfTElT
VChLZXJuZWxNYXRyaXgsIGtlcm5lbE1hdHJpeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJF
UihEaXZpc29yLCBkaXZpc29yKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEJpYXMsIGJp
YXMpCi0gICAgREVDTEFSRV9BTklNQVRFRF9JTlRFR0VSKFRhcmdldFgsIHRhcmdldFgpCi0gICAg
REVDTEFSRV9BTklNQVRFRF9JTlRFR0VSKFRhcmdldFksIHRhcmdldFkpCi0gICAgREVDTEFSRV9B
TklNQVRFRF9FTlVNRVJBVElPTihFZGdlTW9kZSwgZWRnZU1vZGUsIEVkZ2VNb2RlVHlwZSkKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExl
bmd0aFgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFksIGtl
cm5lbFVuaXRMZW5ndGhZKQotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihQcmVzZXJ2ZUFs
cGhhLCBwcmVzZXJ2ZUFscGhhKQotfTsKLQogdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5
VHJhaXRzPEVkZ2VNb2RlVHlwZT4gewogICAgIHN0YXRpYyBFZGdlTW9kZVR5cGUgaGlnaGVzdEVu
dW1WYWx1ZSgpIHsgcmV0dXJuIEVER0VNT0RFX05PTkU7IH0KQEAgLTEwMyw2ICs2NCw0MyBAQCBz
dHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8RWRnZU1vZGVUeXBlPiB7CiAgICAgfQogfTsKIAorY2xh
c3MgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOworCisgICAgdm9pZCBzZXRPcmRlcihmbG9hdCBvcmRlclgsIGZsb2F0IG9yZGVyWSk7
CisgICAgdm9pZCBzZXRLZXJuZWxVbml0TGVuZ3RoKGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBm
bG9hdCBrZXJuZWxVbml0TGVuZ3RoWSk7CisKK3ByaXZhdGU6CisgICAgU1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisKKyAgICBib29s
IGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CisgICAgdmlydHVhbCBib29s
IHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWRO
YW1lJik7CisgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKKworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIG9yZGVyWElkZW50aWZpZXIoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBv
cmRlcllJZGVudGlmaWVyKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYga2VybmVs
VW5pdExlbmd0aFhJZGVudGlmaWVyKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
a2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCk7CisKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQpCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0lO
VEVHRVIoT3JkZXJYLCBvcmRlclgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihP
cmRlclksIG9yZGVyWSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVJfTElTVChLZXJu
ZWxNYXRyaXgsIGtlcm5lbE1hdHJpeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIo
RGl2aXNvciwgZGl2aXNvcikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQmlhcywg
YmlhcykKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9JTlRFR0VSKFRhcmdldFgsIHRhcmdldFgp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihUYXJnZXRZLCB0YXJnZXRZKQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKEVkZ2VNb2RlLCBlZGdlTW9kZSwgRWRn
ZU1vZGVUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVu
Z3RoWCwga2VybmVsVW5pdExlbmd0aFgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVS
KEtlcm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9CT09MRUFOKFByZXNlcnZlQWxwaGEsIHByZXNlcnZlQWxwaGEpCisgICAgRU5EX0RF
Q0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSwxMiArMzUsMjIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBB
bmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQotREVG
SU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVz
OjpkaWZmdXNlQ29uc3RhbnRBdHRyLCBEaWZmdXNlQ29uc3RhbnQsIGRpZmZ1c2VDb25zdGFudCkK
LURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdO
YW1lczo6c3VyZmFjZVNjYWxlQXR0ciwgU3VyZmFjZVNjYWxlLCBzdXJmYWNlU2NhbGUpCi1ERUZJ
TkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudCwgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBrZXJuZWxVbml0TGVuZ3Ro
WElkZW50aWZpZXIoKSwgS2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhYKQotREVG
SU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQsIFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwga2VybmVsVW5pdExlbmd0
aFlJZGVudGlmaWVyKCksIEtlcm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKK0JF
R0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklO
RyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4x
KQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
LCBTVkdOYW1lczo6ZGlmZnVzZUNvbnN0YW50QXR0ciwgRGlmZnVzZUNvbnN0YW50LCBkaWZmdXNl
Q29uc3RhbnQpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQsIFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyLCBTdXJmYWNlU2NhbGUsIHN1cmZh
Y2VTY2FsZSkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRy
LCBrZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKSwgS2VybmVsVW5pdExlbmd0aFgsIGtlcm5l
bFVuaXRMZW5ndGhYKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBF
UlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0
aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigpLCBLZXJuZWxVbml0TGVuZ3RoWSwg
a2VybmVsVW5pdExlbmd0aFkpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVH
SU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGRpZmZ1c2VDb25zdGFudCkKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShzdXJmYWNlU2NhbGUpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkoa2VybmVsVW5pdExlbmd0aFgpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkoa2VybmVsVW5pdExlbmd0aFkpCisgICAgUkVHSVNURVJfUEFS
RU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudDo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTQ4LDYg
KzU4LDcgQEAgaW5saW5lIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6U1ZHRgogICAgICwg
bV9zdXJmYWNlU2NhbGUoMSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVE
aWZmdXNlTGlnaHRpbmdUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFRGlmZnVz
ZUxpZ2h0aW5nRWxlbWVudD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTk0LDY3
ICsyMDUsNiBAQCB2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6bGlnaHRFCiAgICAg
cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLXZvaWQgU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHN5bmNocm9uaXplU3VyZmFjZVNjYWxlKCk7
Ci0gICAgICAgIHN5bmNocm9uaXplRGlmZnVzZUNvbnN0YW50KCk7Ci0gICAgICAgIHN5bmNocm9u
aXplS2VybmVsVW5pdExlbmd0aFgoKTsKLSAgICAgICAgc3luY2hyb25pemVLZXJuZWxVbml0TGVu
Z3RoWSgpOwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5
bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJO
YW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6bGlnaHRpbmdfY29sb3JBdHRyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpz
dXJmYWNlU2NhbGVBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplU3VyZmFjZVNjYWxlKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRp
ZmZ1c2VDb25zdGFudEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVEaWZmdXNlQ29uc3RhbnQo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6a2VybmVsVW5pdExlbmd0aEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVLZXJuZWxVbml0
TGVuZ3RoWCgpOwotICAgICAgICBzeW5jaHJvbml6ZUtlcm5lbFVuaXRMZW5ndGhZKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgp
KTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBT
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsgICAgCi0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3Ry
aW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmRpZmZ1
c2VDb25zdGFudEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Omtlcm5lbFVuaXRM
ZW5ndGhBdHRyLCBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKLX0KLQogUGFzc1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmls
dGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVy
RWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywyMCArNDMsMTggQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAg
ICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBj
b25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVBy
b3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAK
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWElkZW50aWZp
ZXIoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWUlk
ZW50aWZpZXIoKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAg
IERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURf
TlVNQkVSKERpZmZ1c2VDb25zdGFudCwgZGlmZnVzZUNvbnN0YW50KQotICAgIERFQ0xBUkVfQU5J
TUFURURfTlVNQkVSKFN1cmZhY2VTY2FsZSwgc3VyZmFjZVNjYWxlKQotICAgIERFQ0xBUkVfQU5J
TUFURURfTlVNQkVSKEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWCkKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0
aFkpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEp
CisgICAgCURFQ0xBUkVfQU5JTUFURURfTlVNQkVSKERpZmZ1c2VDb25zdGFudCwgZGlmZnVzZUNv
bnN0YW50KQorICAgIAlERUNMQVJFX0FOSU1BVEVEX05VTUJFUihTdXJmYWNlU2NhbGUsIHN1cmZh
Y2VTY2FsZSkKKyAgICAJREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFgs
IGtlcm5lbFVuaXRMZW5ndGhYKQorICAgIAlERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLZXJuZWxV
bml0TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0aFkpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURf
UFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAJKHJldmlz
aW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEyICszMCwyMiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5J
TUFURURfU1RSSU5HKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0
ciwgSW4xLCBpbjEpCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudCwgU1ZHTmFtZXM6OmluMkF0dHIsIEluMiwgaW4yKQotREVGSU5FX0FOSU1BVEVEX0VO
VU1FUkFUSU9OKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OnhDaGFubmVs
U2VsZWN0b3JBdHRyLCBYQ2hhbm5lbFNlbGVjdG9yLCB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVs
U2VsZWN0b3JUeXBlKQotREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OnlDaGFubmVsU2VsZWN0b3JBdHRyLCBZQ2hhbm5lbFNl
bGVjdG9yLCB5Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0b3JUeXBlKQotREVGSU5FX0FO
SU1BVEVEX05VTUJFUihTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNWR05hbWVzOjpzY2Fs
ZUF0dHIsIFNjYWxlLCBzY2FsZSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisg
ICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNW
R05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBTVkdOYW1lczo6aW4yQXR0ciwgSW4yLCBpbjIpCisg
ICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dCwgU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRyLCBYQ2hhbm5lbFNlbGVjdG9yLCB4Q2hh
bm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0b3JUeXBlKQorICAgIERFRklORV9BTklNQVRFRF9F
TlVNRVJBVElPTihTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNWR05hbWVzOjp5Q2hhbm5l
bFNlbGVjdG9yQXR0ciwgWUNoYW5uZWxTZWxlY3RvciwgeUNoYW5uZWxTZWxlY3RvciwgQ2hhbm5l
bFNlbGVjdG9yVHlwZSkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OnNjYWxlQXR0ciwgU2NhbGUsIHNjYWxlKQorRU5EX0RF
RklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKGluMSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShpbjIpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeENoYW5uZWxTZWxl
Y3RvcikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5Q2hhbm5lbFNlbGVj
dG9yKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHNjYWxlKQorICAgIFJF
R0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGlu
ZSBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAg
OiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQp
CkBAIC00Myw2ICs1Myw3IEBAIGlubGluZSBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OlNW
R0YKICAgICAsIG1feUNoYW5uZWxTZWxlY3RvcihDSEFOTkVMX0EpCiB7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoU1ZHTmFtZXM6OmZlRGlzcGxhY2VtZW50TWFwVGFnKSk7CisgICAgcmVnaXN0ZXJB
bmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQoKTsKIH0KIAog
UGFzc1JlZlB0cjxTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ+IFNWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKQEAgLTEzOSw2OSArMTUwLDYgQEAgdm9pZCBTVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQ6OnN2Z0F0dAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkg
ewotICAgICAgICBzeW5jaHJvbml6ZVhDaGFubmVsU2VsZWN0b3IoKTsKLSAgICAgICAgc3luY2hy
b25pemVZQ2hhbm5lbFNlbGVjdG9yKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAg
ICAgIHN5bmNocm9uaXplSW4yKCk7Ci0gICAgICAgIHN5bmNocm9uaXplU2NhbGUoKTsKLSAgICAg
ICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBw
b3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhDaGFubmVs
U2VsZWN0b3JBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWENoYW5uZWxTZWxlY3RvcigpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5
Q2hhbm5lbFNlbGVjdG9yQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVlDaGFubmVsU2VsZWN0
b3IoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluMkF0dHIpIHsKLSAg
ICAgICAgc3luY2hyb25pemVJbjIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c2NhbGVBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
U2NhbGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
OwotfQotCi12b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOwotCi0gICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsUGFz
c2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAp
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBB
bmltYXRlZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjppbjJBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjp4Q2hhbm5lbFNlbGVjdG9yQXR0ciwgQW5pbWF0ZWRFbnVtZXJh
dGlvbik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5Q2hh
bm5lbFNlbGVjdG9yQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpzY2FsZUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsK
LX0KLQogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIp
CiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RC
eUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFj
ZW1lbnRNYXBFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywzMiAr
MjcsNiBAQAogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1jbGFzcyBTVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIHN0YXRp
YyBDaGFubmVsU2VsZWN0b3JUeXBlIHN0cmluZ1RvQ2hhbm5lbChjb25zdCBTdHJpbmcmKTsKLSAg
ICAKLXByaXZhdGU6Ci0gICAgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7Ci0gICAgCi0gICAgYm9vbCBpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwotICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJF
ZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpOwotICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVj
dD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwotCi0gICAgLy8gQW5pbWF0ZWQg
cHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBp
bjEpCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4yLCBpbjIpCi0gICAgREVDTEFSRV9B
TklNQVRFRF9FTlVNRVJBVElPTihYQ2hhbm5lbFNlbGVjdG9yLCB4Q2hhbm5lbFNlbGVjdG9yLCBD
aGFubmVsU2VsZWN0b3JUeXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oWUNo
YW5uZWxTZWxlY3RvciwgeUNoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSkKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihTY2FsZSwgc2NhbGUpCi19OwogCiB0ZW1wbGF0ZTw+
CiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8Q2hhbm5lbFNlbGVjdG9yVHlwZT4gewpAQCAtOTEs
NiArNjUsMzAgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPENoYW5uZWxTZWxlY3RvcgogICAg
IH0KIH07CiAKK2NsYXNzIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCA6IHB1YmxpYyBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCopOworCisgICAgc3RhdGljIENoYW5uZWxTZWxlY3RvclR5cGUg
c3RyaW5nVG9DaGFubmVsKGNvbnN0IFN0cmluZyYpOworICAgIAorcHJpdmF0ZToKKyAgICBTVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqKTsKKyAgICAKKyAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7CisgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJF
ZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSk7CisgICAgdmlydHVhbCB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIq
KTsKKworICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4x
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjIsIGluMikKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihYQ2hhbm5lbFNlbGVjdG9yLCB4Q2hhbm5lbFNlbGVj
dG9yLCBDaGFubmVsU2VsZWN0b3JUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1F
UkFUSU9OKFlDaGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxTZWxlY3Rv
clR5cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFNjYWxlLCBzY2FsZSkKKyAg
ICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCit9OworCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDEyICszMiwyMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVk
IHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQotREVGSU5FX0FOSU1BVEVE
X05VTUJFUihTVkdGRURyb3BTaGFkb3dFbGVtZW50LCBTVkdOYW1lczo6ZHhBdHRyLCBEeCwgZHgp
Ci1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQsIFNWR05hbWVz
OjpkeUF0dHIsIER5LCBkeSkKLURFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBF
UlMoU1ZHRkVEcm9wU2hhZG93RWxlbWVudCwgU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIsIHN0
ZERldmlhdGlvblhJZGVudGlmaWVyKCksIFN0ZERldmlhdGlvblgsIHN0ZERldmlhdGlvblgpCi1E
RUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFRHJvcFNoYWRvd0Vs
ZW1lbnQsIFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRyLCBzdGREZXZpYXRpb25ZSWRlbnRpZmll
cigpLCBTdGREZXZpYXRpb25ZLCBzdGREZXZpYXRpb25ZKQorQkVHSU5fREVGSU5FX0FOSU1BVEVE
X1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFRHJvcFNoYWRvd0Vs
ZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklORV9BTklNQVRFRF9O
VU1CRVIoU1ZHRkVEcm9wU2hhZG93RWxlbWVudCwgU1ZHTmFtZXM6OmR4QXR0ciwgRHgsIGR4KQor
ICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVEcm9wU2hhZG93RWxlbWVudCwgU1ZHTmFt
ZXM6OmR5QXR0ciwgRHksIGR5KQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVf
V1JBUFBFUlMoU1ZHRkVEcm9wU2hhZG93RWxlbWVudCwgU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0
dHIsIHN0ZERldmlhdGlvblhJZGVudGlmaWVyKCksIFN0ZERldmlhdGlvblgsIHN0ZERldmlhdGlv
blgpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRURy
b3BTaGFkb3dFbGVtZW50LCBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwgc3RkRGV2aWF0aW9u
WUlkZW50aWZpZXIoKSwgU3RkRGV2aWF0aW9uWSwgc3RkRGV2aWF0aW9uWSkKK0VORF9ERUZJTkVf
QU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkoaW4xKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGR4KQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGR5KQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKHN0ZERldmlhdGlvblgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoc3RkRGV2aWF0aW9uWSkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCitFTkRf
UkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHRkVEcm9wU2hhZG93RWxl
bWVudDo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCkBAIC00Nyw2ICs1Nyw3IEBAIGlubGluZSBTVkdG
RURyb3BTaGFkb3dFbGVtZW50OjpTVkdGRURyb3AKICAgICAsIG1fc3RkRGV2aWF0aW9uWSgyKQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZURyb3BTaGFkb3dUYWcpKTsKKyAg
ICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQoKTsK
IH0KIAogUGFzc1JlZlB0cjxTVkdGRURyb3BTaGFkb3dFbGVtZW50PiBTVkdGRURyb3BTaGFkb3dF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQpAQCAtMTQwLDQ3ICsxNTEsNiBAQCB2b2lkIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6
OnN2Z0F0dHJpYnV0CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVE
cm9wU2hhZG93RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAg
ICBzeW5jaHJvbml6ZVN0ZERldmlhdGlvblgoKTsKLSAgICAgICAgc3luY2hyb25pemVTdGREZXZp
YXRpb25ZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplRHgoKTsKLSAgICAgICAgc3luY2hyb25pemVE
eSgpOwotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpz
eW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0cikgewotICAgICAg
ICBzeW5jaHJvbml6ZVN0ZERldmlhdGlvblgoKTsKLSAgICAgICAgc3luY2hyb25pemVTdGREZXZp
YXRpb25ZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmluQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkeEF0dHIpIHsK
LSAgICAgICAgc3luY2hyb25pemVEeCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkeUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVE
eSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci19Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURyb3BTaGFkb3dFbGVtZW50Ojpi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsK
ICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaAkocmV2aXNpb24gOTA0
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSwxOCArMzksMTggQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9y
dGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5j
aHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAg
ICAgCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3RkRGV2aWF0aW9uWElkZW50aWZp
ZXIoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdGREZXZpYXRpb25ZSWRlbnRp
ZmllcigpOwogICAgIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAg
IERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURf
TlVNQkVSKER4LCBkeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihEeSwgZHkpCi0gICAg
REVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3RkRGV2aWF0aW9uWCwgc3RkRGV2aWF0aW9uWCkKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihTdGREZXZpYXRpb25ZLCBzdGREZXZpYXRpb25ZKQor
ICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRURyb3BTaGFkb3dFbGVt
ZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9OVU1CRVIoRHgsIGR4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X05VTUJFUihEeSwgZHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFN0ZERldmlh
dGlvblgsIHN0ZERldmlhdGlvblgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFN0
ZERldmlhdGlvblksIHN0ZERldmlhdGlvblkpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVElFUwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NCwxOSArNzQsNiBAQCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVGbG9vZEVsZW1lCiAg
ICAgcmV0dXJuIEZFRmxvb2Q6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBvcGFjaXR5KTsKIH0KIAot
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFRmxvb2RFbGVtZW50OjphdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAg
IHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0ZFRmxv
b2RFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkpOwotfQotCiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKLQotLy8gdmltOnRzPTQ6bm9l
dApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgJKHJldmlzaW9uIDkw
NDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDggKzM0LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdGRUZsb29k
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAg
IHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAkocmV2
aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTUgKzMyLDI0IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklN
QVRFRF9TVFJJTkcoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJ
bjEsIGluMSkKLURFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50LCBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwgc3RkRGV2aWF0
aW9uWElkZW50aWZpZXIoKSwgU3RkRGV2aWF0aW9uWCwgc3RkRGV2aWF0aW9uWCkKLURFRklORV9B
TklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LCBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwgc3RkRGV2aWF0aW9uWUlkZW50aWZpZXIoKSwg
U3RkRGV2aWF0aW9uWSwgc3RkRGV2aWF0aW9uWSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9Q
RVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklORV9BTklNQVRFRF9OVU1C
RVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBTVkdOYW1lczo6
c3RkRGV2aWF0aW9uQXR0ciwgc3RkRGV2aWF0aW9uWElkZW50aWZpZXIoKSwgU3RkRGV2aWF0aW9u
WCwgc3RkRGV2aWF0aW9uWCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dS
QVBQRVJTKFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCwgU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0
dHIsIHN0ZERldmlhdGlvbllJZGVudGlmaWVyKCksIFN0ZERldmlhdGlvblksIHN0ZERldmlhdGlv
blkpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVE
X1BST1BFUlRZKHN0ZERldmlhdGlvblgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkoc3RkRGV2aWF0aW9uWSkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCitFTkRfUkVHSVNURVJf
QU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpT
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVz
OjpmZUdhdXNzaWFuQmx1clRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9y
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xMTksNTAgKzEyOCw2
IEBAIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdmdBdHRyaWIKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYg
KGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVTdGREZXZpYXRp
b25YKCk7Ci0gICAgICAgIHN5bmNocm9uaXplU3RkRGV2aWF0aW9uWSgpOwotICAgICAgICBzeW5j
aHJvbml6ZUluMSgpOwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5
KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVN0ZERl
dmlhdGlvblgoKTsKLSAgICAgICAgc3luY2hyb25pemVTdGREZXZpYXRpb25ZKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikg
ewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkK
LXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBz
X2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Ojpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9u
YWxOdW1iZXIpOwotfQotCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIq
IGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdl
dEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdh
dXNzaWFuQmx1ckVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDE4ICs0
MCwxNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIHN0ZERldmlhdGlvblhJZGVudGlmaWVyKCk7CiAgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgc3RkRGV2aWF0aW9uWUlkZW50aWZpZXIoKTsKIAotICAgIC8v
IEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfU1RS
SU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFN0ZERldmlhdGlvblgs
IHN0ZERldmlhdGlvblgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3RkRGV2aWF0aW9u
WSwgc3RkRGV2aWF0aW9uWSkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklO
RyhJbjEsIGluMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3RkRGV2aWF0aW9u
WCwgc3RkRGV2aWF0aW9uWCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3RkRGV2
aWF0aW9uWSwgc3RkRGV2aWF0aW9uWSkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTUgKzM5
LDI0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVm
aW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR0ZFSW1hZ2VF
bGVtZW50LCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFByZXNlcnZlQXNwZWN0
UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZF
SW1hZ2VFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKLURFRklORV9B
TklNQVRFRF9CT09MRUFOKFNWR0ZFSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERF
RklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR0ZFSW1hZ2VFbGVtZW50LCBTVkdO
YW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNl
cnZlQXNwZWN0UmF0aW8pCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUltYWdlRWxl
bWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCisgICAgREVGSU5FX0FOSU1B
VEVEX0JPT0xFQU4oU1ZHRkVJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJ
U1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFSW1hZ2VFbGVtZW50KQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BB
UkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdGRUlt
YWdlRWxlbWVudDo6U1ZHRkVJbWFnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNW
R05hbWVzOjpmZUltYWdlVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JT
VkdGRUltYWdlRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFSW1hZ2VFbGVtZW50PiBT
VkdGRUltYWdlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKQEAgLTEzOCw1NCArMTQ3LDYgQEAgdm9pZCBTVkdGRUltYWdlRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12
b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplUHJlc2VydmVBc3BlY3RSYXRpbygpOwotICAgICAgICBzeW5jaHJv
bml6ZUhyZWYoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KCk7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfSAgIAotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVByZXNl
cnZlQXNwZWN0UmF0aW8oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdV
UklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplSHJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBTVkdGRUltYWdlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19h
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRp
byk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZB
dHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0KIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6Om5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikKIHsKICAgICBpZiAoIWluRG9jdW1lbnQoKSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw5ICs1MSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0
cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9w
ZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIG5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3Vi
cmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CkBAIC02MSwx
NCArNTgsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVxdWVzdEltYWdlUmVzb3VyY2UoKTsK
IAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5J
TUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFz
cGVjdFJhdGlvKQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRF
RF9TVFJJTkcoSHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHRkVJbWFnZUVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
UFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJh
dGlvKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9jYWNoZWRJbWFn
ZTsKICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IG1fdGFyZ2V0SW1hZ2U7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzYsMjIgKzM2LDM3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJv
cGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1l
bnQsIFNWR05hbWVzOjphemltdXRoQXR0ciwgQXppbXV0aCwgYXppbXV0aCkKLURFRklORV9BTklN
QVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjplbGV2YXRpb25BdHRyLCBF
bGV2YXRpb24sIGVsZXZhdGlvbikKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVs
ZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZH
RkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKLURFRklORV9BTklNQVRFRF9O
VU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjp6QXR0ciwgWiwgeikKLURFRklORV9B
TklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjpwb2ludHNBdFhBdHRy
LCBQb2ludHNBdFgsIHBvaW50c0F0WCkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdo
dEVsZW1lbnQsIFNWR05hbWVzOjpwb2ludHNBdFlBdHRyLCBQb2ludHNBdFksIHBvaW50c0F0WSkK
LURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjpwb2lu
dHNBdFpBdHRyLCBQb2ludHNBdFosIHBvaW50c0F0WikKLURFRklORV9BTklNQVRFRF9OVU1CRVIo
U1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciwgU3BlY3Vs
YXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZH
RkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIsIExpbWl0aW5n
Q29uZUFuZ2xlLCBsaW1pdGluZ0NvbmVBbmdsZSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9Q
RVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZH
TmFtZXM6OmF6aW11dGhBdHRyLCBBemltdXRoLCBhemltdXRoKQorICAgIERFRklORV9BTklNQVRF
RF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjplbGV2YXRpb25BdHRyLCBFbGV2
YXRpb24sIGVsZXZhdGlvbikKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFTGlnaHRF
bGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJF
UihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQorICAgIERFRklORV9B
TklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjp6QXR0ciwgWiwgeikK
KyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFTGlnaHRFbGVtZW50LCBTVkdOYW1lczo6
cG9pbnRzQXRYQXR0ciwgUG9pbnRzQXRYLCBwb2ludHNBdFgpCisgICAgREVGSU5FX0FOSU1BVEVE
X05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OnBvaW50c0F0WUF0dHIsIFBvaW50
c0F0WSwgcG9pbnRzQXRZKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVs
ZW1lbnQsIFNWR05hbWVzOjpwb2ludHNBdFpBdHRyLCBQb2ludHNBdFosIHBvaW50c0F0WikKKyAg
ICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFTGlnaHRFbGVtZW50LCBTVkdOYW1lczo6c3Bl
Y3VsYXJFeHBvbmVudEF0dHIsIFNwZWN1bGFyRXhwb25lbnQsIHNwZWN1bGFyRXhwb25lbnQpCisg
ICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6Omxp
bWl0aW5nQ29uZUFuZ2xlQXR0ciwgTGltaXRpbmdDb25lQW5nbGUsIGxpbWl0aW5nQ29uZUFuZ2xl
KQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHRkVMaWdodEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoYXppbXV0aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWShlbGV2YXRpb24pCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeCkK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5KQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKHopCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkocG9pbnRzQXRYKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHBv
aW50c0F0WSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShwb2ludHNBdFop
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc3BlY3VsYXJFeHBvbmVudCkK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShsaW1pdGluZ0NvbmVBbmdsZSkK
K0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIFNWR0ZFTGlnaHRFbGVtZW50OjpT
VkdGRUxpZ2h0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9z
cGVjdWxhckV4cG9uZW50KDEpCiB7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JT
VkdGRUxpZ2h0RWxlbWVudCgpOwogfQogCiBTVkdGRUxpZ2h0RWxlbWVudCogU1ZHRkVMaWdodEVs
ZW1lbnQ6OmZpbmRMaWdodEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCogc3ZnRWxlbWVudCkKQEAg
LTE5NCwxMDIgKzIwOSw2IEBAIHZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRUxpZ2h0RWxlbWVu
dDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsK
LSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUF6
aW11dGgoKTsKLSAgICAgICAgc3luY2hyb25pemVFbGV2YXRpb24oKTsKLSAgICAgICAgc3luY2hy
b25pemVYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICBzeW5jaHJvbml6ZVoo
KTsKLSAgICAgICAgc3luY2hyb25pemVQb2ludHNBdFgoKTsKLSAgICAgICAgc3luY2hyb25pemVQ
b2ludHNBdFkoKTsKLSAgICAgICAgc3luY2hyb25pemVQb2ludHNBdFooKTsKLSAgICAgICAgc3lu
Y2hyb25pemVTcGVjdWxhckV4cG9uZW50KCk7Ci0gICAgICAgIHN5bmNocm9uaXplTGltaXRpbmdD
b25lQW5nbGUoKTsKLSAgICAgICAgU1ZHRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRy
TmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0
cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmF6aW11dGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplQXpp
bXV0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjplbGV2YXRpb25BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRWxldmF0aW9uKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikgewotICAgICAgICBzeW5j
aHJvbml6ZVkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6ekF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVaKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0WEF0
dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVQb2ludHNBdFgoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXRZQXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZVBvaW50c0F0WSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFpBdHRyKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplUG9pbnRzQXRaKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplU3BlY3VsYXJFeHBvbmVudCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIpIHsK
LSAgICAgICAgc3luY2hyb25pemVMaW1pdGluZ0NvbmVBbmdsZSgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBTVkdGRUxpZ2h0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6Zmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6YXppbXV0aEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmVsZXZhdGlvbkF0dHIsIEFuaW1hdGVkTnVtYmVyKTsK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmlt
YXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
Ojp5QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6ekF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIsIEFuaW1hdGVkTnVtYmVy
KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnBvaW50c0F0
WUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnBvaW50c0F0WkF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyLCBB
bmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLX0KLQogdm9pZCBT
VkdGRUxpZ2h0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBO
b2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRh
KQogewogICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJl
Zm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMjIg
KzQyLDIwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0
dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hh
bmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAw
LCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAotICAg
IC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURf
TlVNQkVSKEF6aW11dGgsIGF6aW11dGgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoRWxl
dmF0aW9uLCBlbGV2YXRpb24pCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoWCwgeCkKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihZLCB5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVN
QkVSKFosIHopCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoUG9pbnRzQXRYLCBwb2ludHNB
dFgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoUG9pbnRzQXRZLCBwb2ludHNBdFkpCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoUG9pbnRzQXRaLCBwb2ludHNBdFopCi0gICAgREVD
TEFSRV9BTklNQVRFRF9OVU1CRVIoU3BlY3VsYXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkK
LSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihMaW1pdGluZ0NvbmVBbmdsZSwgbGltaXRpbmdD
b25lQW5nbGUpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFTGln
aHRFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihBemltdXRoLCBhemlt
dXRoKQorICAgIAlERUNMQVJFX0FOSU1BVEVEX05VTUJFUihFbGV2YXRpb24sIGVsZXZhdGlvbikK
KyAgICAJREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoWCwgeCkKKyAgICAJREVDTEFSRV9BTklNQVRF
RF9OVU1CRVIoWSwgeSkKKyAgICAJREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoWiwgeikKKyAgICAJ
REVDTEFSRV9BTklNQVRFRF9OVU1CRVIoUG9pbnRzQXRYLCBwb2ludHNBdFgpCisgICAgCURFQ0xB
UkVfQU5JTUFURURfTlVNQkVSKFBvaW50c0F0WSwgcG9pbnRzQXRZKQorICAgIAlERUNMQVJFX0FO
SU1BVEVEX05VTUJFUihQb2ludHNBdFosIHBvaW50c0F0WikKKyAgICAJREVDTEFSRV9BTklNQVRF
RF9OVU1CRVIoU3BlY3VsYXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkKKyAgICAJREVDTEFS
RV9BTklNQVRFRF9OVU1CRVIoTGltaXRpbmdDb25lQW5nbGUsIGxpbWl0aW5nQ29uZUFuZ2xlKQor
ICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAko
cmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxOSArNjAsNiBAQCBQYXNzUmVmUHRyPEZpbHRlckVm
ZmVjdD4gU1ZHRkVNZXJnZUVsZW1lCiAgICAgcmV0dXJuIGVmZmVjdC5yZWxlYXNlKCk7CiB9CiAK
LUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRU1lcmdlRWxlbWVudDo6YXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAg
ICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRU1l
cmdlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpKTsKLX0KLQogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNWRykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0
LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdGRU1lcmdlRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIH07CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMyArMzIsMTkgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1B
VEVEX1NUUklORyhTVkdGRU1lcmdlTm9kZUVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwg
aW4xKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFU
RURfU1RSSU5HKFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4xLCBp
bjEpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdGRU1lcmdlTm9kZUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJ
RVMKIAogaW5saW5lIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6U1ZHRkVNZXJnZU5vZGVFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6
IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
U1ZHTmFtZXM6OmZlTWVyZ2VOb2RlVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRp
ZXNGb3JTVkdGRU1lcmdlTm9kZUVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRU1lcmdl
Tm9kZUVsZW1lbnQ+IFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTk0LDM4ICsxMDAsNiBAQCB2
b2lkIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3ZnQXR0cmlidXRlCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRU1lcmdlTm9k
ZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7
Ci19Ci0KLXZvaWQgU1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQotewotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkuc2V0KFNWR05h
bWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQotdm9pZCBTVkdGRU1lcmdlTm9kZUVs
ZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
Ci17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25p
emVJbjEoKTsKLSAgICAgICAgU1ZHRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFt
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmli
dXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0gICAKLQotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1l
cmdlTm9kZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVN
ZXJnZU5vZGVFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMiArMzcsMTAg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
Kik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0
aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAgIEJFR0lOX0RF
Q0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRU1lcmdlTm9kZUVsZW1lbnQpCisgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAgIEVORF9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAJKHJldmlzaW9uIDkw
NDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSwxNyArMzEsMjcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklO
RyhTVkdGRU1vcnBob2xvZ3lFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKLURF
RklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRU1vcnBob2xvZ3lFbGVtZW50LCBTVkdOYW1l
czo6b3BlcmF0b3JBdHRyLCBfb3BlcmF0b3IsIF9vcGVyYXRvciwgTW9ycGhvbG9neU9wZXJhdG9y
VHlwZSkKLURFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudCwgU1ZHTmFtZXM6OnJhZGl1c0F0dHIsIHJhZGl1c1hJZGVudGlmaWVyKCks
IFJhZGl1c1gsIHJhZGl1c1gpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQ
RVJTKFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQsIFNWR05hbWVzOjpyYWRpdXNBdHRyLCByYWRpdXNZ
SWRlbnRpZmllcigpLCBSYWRpdXNZLCByYWRpdXNZKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BS
T1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFTW9ycGhvbG9neUVsZW1l
bnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklORV9BTklNQVRFRF9FTlVN
RVJBVElPTihTVkdGRU1vcnBob2xvZ3lFbGVtZW50LCBTVkdOYW1lczo6b3BlcmF0b3JBdHRyLCBf
b3BlcmF0b3IsIF9vcGVyYXRvciwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSkKKyAgICBERUZJTkVf
QU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQs
IFNWR05hbWVzOjpyYWRpdXNBdHRyLCByYWRpdXNYSWRlbnRpZmllcigpLCBSYWRpdXNYLCByYWRp
dXNYKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVN
b3JwaG9sb2d5RWxlbWVudCwgU1ZHTmFtZXM6OnJhZGl1c0F0dHIsIHJhZGl1c1lJZGVudGlmaWVy
KCksIFJhZGl1c1ksIHJhZGl1c1kpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKwor
QkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRU1vcnBob2xvZ3lFbGVtZW50
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGluMSkKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShfb3BlcmF0b3IpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkocmFkaXVzWCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWShyYWRpdXNZKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklN
QVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpTVkdGRU1v
cnBob2xvZ3lFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCkKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdO
YW1lLCBkb2N1bWVudCkKICAgICAsIG1fX29wZXJhdG9yKEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9F
Uk9ERSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVNb3JwaG9sb2d5VGFn
KSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRU1vcnBob2xvZ3lFbGVt
ZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVNb3JwaG9sb2d5RWxlbWVudD4gU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKQEAgLTE0NSw1NyArMTU1LDYgQEAgdm9pZCBTVkdGRU1vcnBob2xvZ3lF
bGVtZW50OjpzdmdBdHRyaWJ1dAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lk
IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsK
LSAgICAgICAgc3luY2hyb25pemVfb3BlcmF0b3IoKTsKLSAgICAgICAgc3luY2hyb25pemVJbjEo
KTsKLSAgICAgICAgc3luY2hyb25pemVSYWRpdXNYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUmFk
aXVzWSgpOwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5
bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJO
YW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6b3BlcmF0b3JBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplX29wZXJhdG9yKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omlu
QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpyYWRpdXNBdHRyKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplUmFkaXVzWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVJhZGl1c1koKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1B
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6YXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsK
LSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdG
RU1vcnBob2xvZ3lFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewot
ICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciwgQW5p
bWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjpyYWRpdXNBdHRyLCBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKLX0KLQog
UGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZp
bHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgJKHJl
dmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMzQgKzI4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTVkdGRU1vcnBob2xvZ3lFbGVtZW50IDogcHVibGljIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8U1ZHRkVNb3JwaG9sb2d5RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCopOwotCi0gICAgdm9pZCBzZXRSYWRpdXMoZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFk
aXVzWSk7Ci0KLXByaXZhdGU6Ci0gICAgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmli
dXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZp
cnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFs
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXIqLCBGaWx0ZXIqKTsKLQotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHJhZGl1
c1hJZGVudGlmaWVyKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcmFkaXVzWUlk
ZW50aWZpZXIoKTsKLQotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAg
IERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURf
RU5VTUVSQVRJT04oX29wZXJhdG9yLCBfb3BlcmF0b3IsIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUp
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoUmFkaXVzWCwgcmFkaXVzWCkKLSAgICBERUNM
QVJFX0FOSU1BVEVEX05VTUJFUihSYWRpdXNZLCByYWRpdXNZKQotfTsKLQogdGVtcGxhdGU8Pgog
c3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPE1vcnBob2xvZ3lPcGVyYXRvclR5cGU+IHsKICAgICBz
dGF0aWMgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSBoaWdoZXN0RW51bVZhbHVlKCkgeyByZXR1cm4g
RkVNT1JQSE9MT0dZX09QRVJBVE9SX0RJTEFURTsgfQpAQCAtODUsNiArNTcsMzIgQEAgc3RydWN0
IFNWR1Byb3BlcnR5VHJhaXRzPE1vcnBob2xvZ3lPcGVyYQogICAgIH0KIH07CiAKK2NsYXNzIFNW
R0ZFTW9ycGhvbG9neUVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRU1vcnBob2xv
Z3lFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisKKyAg
ICB2b2lkIHNldFJhZGl1cyhmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZKTsKKworcHJpdmF0
ZToKKyAgICBTVkdGRU1vcnBob2xvZ3lFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOworCisgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSop
OworICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0
KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Rmls
dGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CisKKyAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiByYWRpdXNYSWRlbnRpZmllcigpOworICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIHJhZGl1c1lJZGVudGlmaWVyKCk7CisKKyAgICBCRUdJTl9ERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVNb3JwaG9sb2d5RWxlbWVudCkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfRU5VTUVSQVRJT04oX29wZXJhdG9yLCBfb3BlcmF0b3IsIE1vcnBob2xvZ3lPcGVyYXRvclR5
cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFJhZGl1c1gsIHJhZGl1c1gpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFJhZGl1c1ksIHJhZGl1c1kpCisgICAgRU5E
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU9mZnNldEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU9mZnNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNSArMzEsMjQg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0
aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRU9mZnNldEVsZW1lbnQsIFNWR05hbWVz
OjppbkF0dHIsIEluMSwgaW4xKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRU9mZnNldEVs
ZW1lbnQsIFNWR05hbWVzOjpkeEF0dHIsIER4LCBkeCkKLURFRklORV9BTklNQVRFRF9OVU1CRVIo
U1ZHRkVPZmZzZXRFbGVtZW50LCBTVkdOYW1lczo6ZHlBdHRyLCBEeSwgZHkpCitCRUdJTl9ERUZJ
TkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVP
ZmZzZXRFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKKyAgICBERUZJTkVfQU5J
TUFURURfTlVNQkVSKFNWR0ZFT2Zmc2V0RWxlbWVudCwgU1ZHTmFtZXM6OmR4QXR0ciwgRHgsIGR4
KQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVPZmZzZXRFbGVtZW50LCBTVkdOYW1l
czo6ZHlBdHRyLCBEeSwgZHkpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVH
SU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRU9mZnNldEVsZW1lbnQpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKGR4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKGR5KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9Q
RVJUSUVTCiAKIGlubGluZSBTVkdGRU9mZnNldEVsZW1lbnQ6OlNWR0ZFT2Zmc2V0RWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlT2Zmc2V0VGFnKSk7CisgICAgcmVn
aXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRU9mZnNldEVsZW1lbnQoKTsKIH0KIAogUGFz
c1JlZlB0cjxTVkdGRU9mZnNldEVsZW1lbnQ+IFNWR0ZFT2Zmc2V0RWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTEwMSw1
NSArMTEwLDYgQEAgdm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0ZFT2Zmc2V0RWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBp
ZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUR4KCk7Ci0g
ICAgICAgIHN5bmNocm9uaXplRHkoKTsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAg
ICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBw
b3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmR4QXR0cikg
ewotICAgICAgICBzeW5jaHJvbml6ZUR4KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmR5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6
ZUR5KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmluQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBTVkdGRU9mZnNldEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNf
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVPZmZzZXRFbGVtZW50
OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmR4QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZHlBdHRyLCBBbmltYXRlZE51bWJl
cik7Ci19Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU9mZnNldEVsZW1lbnQ6OmJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewog
ICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChp
bjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCShyZXZp
c2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsMTUgKzM4LDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1
cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2
b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlcios
IEZpbHRlciopOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAg
REVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCi0gICAgREVDTEFSRV9BTklNQVRFRF9O
VU1CRVIoRHgsIGR4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKER5LCBkeSkKKyAgICBC
RUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVPZmZzZXRFbGVtZW50KQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9OVU1CRVIoRHgsIGR4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihE
eSwgZHkpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDEzICszNiwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1h
dGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQotREVGSU5F
X0FOSU1BVEVEX05VTUJFUihTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6
c3BlY3VsYXJDb25zdGFudEF0dHIsIFNwZWN1bGFyQ29uc3RhbnQsIHNwZWN1bGFyQ29uc3RhbnQp
Ci1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNW
R05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciwgU3BlY3VsYXJFeHBvbmVudCwgc3BlY3VsYXJF
eHBvbmVudCkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudCwgU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIsIFN1cmZhY2VTY2FsZSwgc3VyZmFjZVNj
YWxlKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIGtlcm5l
bFVuaXRMZW5ndGhYSWRlbnRpZmllcigpLCBLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExl
bmd0aFgpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwga2Vy
bmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCksIEtlcm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0
TGVuZ3RoWSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FO
SU1BVEVEX1NUUklORyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6aW5B
dHRyLCBJbjEsIGluMSkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpzcGVjdWxhckNvbnN0YW50QXR0ciwgU3BlY3VsYXJD
b25zdGFudCwgc3BlY3VsYXJDb25zdGFudCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0
ciwgU3BlY3VsYXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkKKyAgICBERUZJTkVfQU5JTUFU
RURfTlVNQkVSKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpzdXJmYWNl
U2NhbGVBdHRyLCBTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSkKKyAgICBERUZJTkVfQU5JTUFU
RURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQs
IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwga2VybmVsVW5pdExlbmd0aFhJZGVudGlm
aWVyKCksIEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWCkKKyAgICBERUZJTkVf
QU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQsIFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwga2VybmVsVW5pdExlbmd0aFlJ
ZGVudGlmaWVyKCksIEtlcm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKK0VORF9E
RUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoaW4xKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKHNwZWN1bGFyQ29uc3RhbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkoc3BlY3VsYXJFeHBvbmVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShzdXJmYWNlU2NhbGUpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoa2Vy
bmVsVW5pdExlbmd0aFgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoa2Vy
bmVsVW5pdExlbmd0aFkpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1B
VEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OlNW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQpAQCAtNTEsNiArNjIsNyBAQCBpbmxpbmUgU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6U1ZHCiAgICAgLCBtX3N1cmZhY2VTY2FsZSgxKQogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZVNwZWN1bGFyTGlnaHRpbmdUYWcpKTsK
KyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50PiBT
VkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMjA0LDcxICsyMTYsNiBAQCB2b2lkIFNW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmxpZ2h0CiAgICAgcHJpbWl0aXZlQXR0cmlidXRl
Q2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLXZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsK
LSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUlu
MSgpOwotICAgICAgICBzeW5jaHJvbml6ZVN1cmZhY2VTY2FsZSgpOwotICAgICAgICBzeW5jaHJv
bml6ZVNwZWN1bGFyQ29uc3RhbnQoKTsKLSAgICAgICAgc3luY2hyb25pemVTcGVjdWxhckV4cG9u
ZW50KCk7Ci0gICAgICAgIHN5bmNocm9uaXplS2VybmVsVW5pdExlbmd0aFgoKTsKLSAgICAgICAg
c3luY2hyb25pemVLZXJuZWxVbml0TGVuZ3RoWSgpOwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpz
eW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVTdXJmYWNl
U2NhbGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6c3BlY3VsYXJDb25zdGFudEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVTcGVj
dWxhckNvbnN0YW50KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplU3BlY3VsYXJFeHBvbmVudCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0cikgewotICAgICAgICBz
eW5jaHJvbml6ZUtlcm5lbFVuaXRMZW5ndGhYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplS2VybmVs
VW5pdExlbmd0aFkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6
OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpp
bkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnNwZWN1bGFyQ29uc3RhbnRBdHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50
QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIs
IEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOwotfQotCiBQYXNzUmVmUHRyPEZpbHRlckVm
ZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBp
bnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAkocmV2
aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwyMSArNDIsMTkgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmly
dHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBR
dWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKTsK
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZp
ZXIoKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xB
UkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVS
KFNwZWN1bGFyQ29uc3RhbnQsIHNwZWN1bGFyQ29uc3RhbnQpCi0gICAgREVDTEFSRV9BTklNQVRF
RF9OVU1CRVIoU3BlY3VsYXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkKLSAgICBERUNMQVJF
X0FOSU1BVEVEX05VTUJFUihTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSkKLSAgICBERUNMQVJF
X0FOSU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgpCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRM
ZW5ndGhZKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEs
IGluMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3BlY3VsYXJDb25zdGFudCwg
c3BlY3VsYXJDb25zdGFudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3BlY3Vs
YXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9O
VU1CRVIoU3VyZmFjZVNjYWxlLCBzdXJmYWNlU2NhbGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfTlVNQkVSKEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWCkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5n
dGhZKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5j
cHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMyArMzIsMjAgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1B
VEVEX1NUUklORyhTVkdGRVRpbGVFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkK
K0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NU
UklORyhTVkdGRVRpbGVFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKK0VORF9E
RUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR0ZFVGlsZUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkoaW4xKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9Q
Uk9QRVJUSUVTCiAKIGlubGluZSBTVkdGRVRpbGVFbGVtZW50OjpTVkdGRVRpbGVFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVUaWxlVGFnKSk7CisgICAgcmVnaXN0
ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRVRpbGVFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQ
dHI8U1ZHRkVUaWxlRWxlbWVudD4gU1ZHRkVUaWxlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTg2LDQxICs5Myw2IEBA
IHZvaWQgU1ZHRkVUaWxlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmcKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRVRpbGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9
PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRy
TmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0
cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIAotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNW
R0ZFVGlsZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVUaWxlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwot
Ci0gICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsUGFzc2VkQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRl
ZFN0cmluZyk7Ci19Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVRpbGVFbGVtZW50
OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikK
IHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5
SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCShyZXZp
c2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDEzICszNywxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBw
b3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5
bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBG
aWx0ZXIqKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERF
Q0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdGRVRpbGVFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X1NUUklORyhJbjEsIGluMSkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVUdXJidWxlbmNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsMTMgKzMwLDI0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJv
cGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBF
UlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OmJhc2VGcmVxdWVuY3lBdHRyLCBi
YXNlRnJlcXVlbmN5WElkZW50aWZpZXIoKSwgQmFzZUZyZXF1ZW5jeVgsIGJhc2VGcmVxdWVuY3lY
KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50LCBTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0dHIsIGJhc2VGcmVxdWVuY3lZSWRl
bnRpZmllcigpLCBCYXNlRnJlcXVlbmN5WSwgYmFzZUZyZXF1ZW5jeVkpCi1ERUZJTkVfQU5JTUFU
RURfSU5URUdFUihTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6bnVtT2N0YXZlc0F0
dHIsIE51bU9jdGF2ZXMsIG51bU9jdGF2ZXMpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQsIFNWR05hbWVzOjpzZWVkQXR0ciwgU2VlZCwgc2VlZCkKLURFRklO
RV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6
c3RpdGNoVGlsZXNBdHRyLCBTdGl0Y2hUaWxlcywgc3RpdGNoVGlsZXMsIFNWR1N0aXRjaE9wdGlv
bnMpCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwg
U1ZHTmFtZXM6OnR5cGVBdHRyLCBUeXBlLCB0eXBlLCBUdXJidWxlbmNlVHlwZSkKK0JFR0lOX0RF
RklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxU
SVBMRV9XUkFQUEVSUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6YmFzZUZyZXF1
ZW5jeUF0dHIsIGJhc2VGcmVxdWVuY3lYSWRlbnRpZmllcigpLCBCYXNlRnJlcXVlbmN5WCwgYmFz
ZUZyZXF1ZW5jeVgpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVS
UyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0dHIsIGJh
c2VGcmVxdWVuY3lZSWRlbnRpZmllcigpLCBCYXNlRnJlcXVlbmN5WSwgYmFzZUZyZXF1ZW5jeVkp
CisgICAgREVGSU5FX0FOSU1BVEVEX0lOVEVHRVIoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZH
TmFtZXM6Om51bU9jdGF2ZXNBdHRyLCBOdW1PY3RhdmVzLCBudW1PY3RhdmVzKQorICAgIERFRklO
RV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OnNlZWRB
dHRyLCBTZWVkLCBzZWVkKQorICAgIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRVR1
cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6c3RpdGNoVGlsZXNBdHRyLCBTdGl0Y2hUaWxlcywg
c3RpdGNoVGlsZXMsIFNWR1N0aXRjaE9wdGlvbnMpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1F
UkFUSU9OKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIFNWR05hbWVzOjp0eXBlQXR0ciwgVHlwZSwg
dHlwZSwgVHVyYnVsZW5jZVR5cGUpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKwor
QkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGJhc2VGcmVxdWVuY3lYKQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGJhc2VGcmVxdWVuY3lZKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKG51bU9jdGF2ZXMpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc2VlZCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShzdGl0Y2hUaWxlcykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWSh0eXBlKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRF
RF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpTVkdGRVR1cmJ1
bGVuY2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1l
LCBkb2N1bWVudCkKQEAgLTQ1LDYgKzU2LDcgQEAgaW5saW5lIFNWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQ6OlNWR0ZFVHVyYgogICAgICwgbV90eXBlKEZFVFVSQlVMRU5DRV9UWVBFX1RVUkJVTEVOQ0Up
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlVHVyYnVsZW5jZVRhZykpOwor
ICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVUdXJidWxlbmNlRWxlbWVudCgp
OwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ+IFNWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCkBAIC0xNjAsNzEgKzE3Miw2IEBAIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dDo6c3ZnQXR0cmlidXQKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdG
RVR1cmJ1bGVuY2VFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplVHlwZSgpOwotICAgICAgICBzeW5jaHJvbml6ZVN0aXRjaFRpbGVzKCk7
Ci0gICAgICAgIHN5bmNocm9uaXplQmFzZUZyZXF1ZW5jeVgoKTsKLSAgICAgICAgc3luY2hyb25p
emVCYXNlRnJlcXVlbmN5WSgpOwotICAgICAgICBzeW5jaHJvbml6ZVNlZWQoKTsKLSAgICAgICAg
c3luY2hyb25pemVOdW1PY3RhdmVzKCk7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9u
aXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjp0eXBlQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVR5
cGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6c3RpdGNoVGlsZXNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplU3RpdGNoVGlsZXMo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6YmFzZUZyZXF1ZW5jeUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVCYXNlRnJlcXVlbmN5
WCgpOwotICAgICAgICBzeW5jaHJvbml6ZUJhc2VGcmVxdWVuY3lZKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNlZWRBdHRyKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplU2VlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpudW1PY3RhdmVzQXR0cikgewotICAgICAgICBzeW5j
aHJvbml6ZU51bU9jdGF2ZXMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVU
dXJidWxlbmNlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQ
YXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpiYXNlRnJl
cXVlbmN5QXR0ciwgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7Ci0gICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpudW1PY3RhdmVzQXR0ciwgQW5pbWF0ZWRJ
bnRlZ2VyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNl
ZWRBdHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjpzdGl0Y2hUaWxlc0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dHlwZUF0dHIsIEFuaW1h
dGVkRW51bWVyYXRpb24pOwotfQotCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciogZmlsdGVyKQog
ewogICAgIGlmIChiYXNlRnJlcXVlbmN5WCgpIDwgMCB8fCBiYXNlRnJlcXVlbmN5WSgpIDwgMCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAkocmV2
aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwzNCArMzYsNiBAQCBlbnVtIFNWR1N0aXRjaE9wdGlv
bnMgewogICAgIFNWR19TVElUQ0hUWVBFX05PU1RJVENIID0gMgogfTsKIAotY2xhc3MgU1ZHRkVU
dXJidWxlbmNlRWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotcHJpdmF0
ZToKLSAgICBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOwotCi0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSop
OwotICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0
KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpOwotICAgIHZpcnR1YWwgdm9pZCBzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2
b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlcios
IEZpbHRlciopOwotCi0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYmFzZUZyZXF1ZW5j
eVhJZGVudGlmaWVyKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYmFzZUZyZXF1
ZW5jeVlJZGVudGlmaWVyKCk7Ci0KLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlv
bnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihCYXNlRnJlcXVlbmN5WCwgYmFzZUZyZXF1
ZW5jeVgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQmFzZUZyZXF1ZW5jeVksIGJhc2VG
cmVxdWVuY3lZKQotICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihOdW1PY3RhdmVzLCBudW1P
Y3RhdmVzKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFNlZWQsIHNlZWQpCi0gICAgREVD
TEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihTdGl0Y2hUaWxlcywgc3RpdGNoVGlsZXMsIFNWR1N0
aXRjaE9wdGlvbnMpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihUeXBlLCB0eXBl
LCBUdXJidWxlbmNlVHlwZSkKLX07Ci0KIHRlbXBsYXRlPD4KIHN0cnVjdCBTVkdQcm9wZXJ0eVRy
YWl0czxTVkdTdGl0Y2hPcHRpb25zPiB7CiAgICAgc3RhdGljIFNWR1N0aXRjaE9wdGlvbnMgaGln
aGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJuIFNWR19TVElUQ0hUWVBFX05PU1RJVENIOyB9CkBAIC0x
MjIsNiArOTQsMzIgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFR1cmJ1bGVuY2VUeXBlPgog
ICAgIH0KIH07CiAKK2NsYXNzIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQgOiBwdWJsaWMgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTVkdGRVR1cmJ1bGVuY2VFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Kik7CisKK3ByaXZhdGU6CisgICAgU1ZHRkVUdXJidWxlbmNlRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKworICAgIGJvb2wgaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZm
ZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmls
dGVyQnVpbGRlciosIEZpbHRlciopOworCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
YmFzZUZyZXF1ZW5jeVhJZGVudGlmaWVyKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgYmFzZUZyZXF1ZW5jeVlJZGVudGlmaWVyKCk7CisKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9OVU1CRVIoQmFzZUZyZXF1ZW5jeVgsIGJhc2VGcmVxdWVuY3lYKQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX05VTUJFUihCYXNlRnJlcXVlbmN5WSwgYmFzZUZyZXF1ZW5jeVkpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihOdW1PY3RhdmVzLCBudW1PY3RhdmVzKQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihTZWVkLCBzZWVkKQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFN0aXRjaFRpbGVzLCBzdGl0Y2hUaWxlcywgU1ZHU3Rp
dGNoT3B0aW9ucykKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihUeXBlLCB0
eXBlLCBUdXJidWxlbmNlVHlwZSkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVT
Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDIzICszNiwzNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFu
aW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04o
U1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OmZpbHRlclVuaXRzQXR0ciwgRmlsdGVyVW5pdHMs
IGZpbHRlclVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQotREVGSU5FX0FOSU1BVEVE
X0VOVU1FUkFUSU9OKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpwcmltaXRpdmVVbml0c0F0
dHIsIFByaW1pdGl2ZVVuaXRzLCBwcmltaXRpdmVVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0
VHlwZSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6
OnhBdHRyLCBYLCB4KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGaWx0ZXJFbGVtZW50LCBT
VkdOYW1lczo6eUF0dHIsIFksIHkpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlckVs
ZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKLURFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhlaWdodCwg
aGVpZ2h0KQotREVGSU5FX0FOSU1BVEVEX0lOVEVHRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRmls
dGVyRWxlbWVudCwgU1ZHTmFtZXM6OmZpbHRlclJlc0F0dHIsIGZpbHRlclJlc1hJZGVudGlmaWVy
KCksIEZpbHRlclJlc1gsIGZpbHRlclJlc1gpCi1ERUZJTkVfQU5JTUFURURfSU5URUdFUl9NVUxU
SVBMRV9XUkFQUEVSUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6ZmlsdGVyUmVzQXR0ciwg
ZmlsdGVyUmVzWUlkZW50aWZpZXIoKSwgRmlsdGVyUmVzWSwgZmlsdGVyUmVzWSkKLURFRklORV9B
TklNQVRFRF9TVFJJTkcoU1ZHRmlsdGVyRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhy
ZWYsIGhyZWYpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdGaWx0ZXJFbGVtZW50LCBTVkdO
YW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURf
UFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGaWx0ZXJFbGVt
ZW50LCBTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyLCBGaWx0ZXJVbml0cywgZmlsdGVyVW5pdHMs
IFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFU
SU9OKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpwcmltaXRpdmVVbml0c0F0dHIsIFByaW1p
dGl2ZVVuaXRzLCBwcmltaXRpdmVVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAg
ICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjp4QXR0
ciwgWCwgeCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlckVsZW1lbnQsIFNW
R05hbWVzOjp5QXR0ciwgWSwgeSkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRl
ckVsZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKKyAgICBERUZJTkVf
QU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBI
ZWlnaHQsIGhlaWdodCkKKyAgICBERUZJTkVfQU5JTUFURURfSU5URUdFUl9NVUxUSVBMRV9XUkFQ
UEVSUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6ZmlsdGVyUmVzQXR0ciwgZmlsdGVyUmVz
WElkZW50aWZpZXIoKSwgRmlsdGVyUmVzWCwgZmlsdGVyUmVzWCkKKyAgICBERUZJTkVfQU5JTUFU
RURfSU5URUdFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6
ZmlsdGVyUmVzQXR0ciwgZmlsdGVyUmVzWUlkZW50aWZpZXIoKSwgRmlsdGVyUmVzWSwgZmlsdGVy
UmVzWSkKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZpbHRlckVsZW1lbnQsIFhMaW5r
TmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFO
KFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0
ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkK
K0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR0ZpbHRlckVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkoZmlsdGVyVW5pdHMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkocHJpbWl0aXZlVW5pdHMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkoeCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5KQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHdpZHRoKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKGhlaWdodCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWShmaWx0ZXJSZXNYKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGZp
bHRlclJlc1kpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZpbHRl
ckVsZW1lbnQ6OlNWR0ZpbHRlckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkKLSAgICAsIFNWR1VSSVJlZmVyZW5jZSgpCi0gICAgLCBTVkdMYW5nU3BhY2UoKQotICAg
ICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCiAgICAgLCBtX2ZpbHRlclVuaXRzKFNW
R1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkKICAgICAsIG1fcHJp
bWl0aXZlVW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKQog
ICAgICwgbV94KExlbmd0aE1vZGVXaWR0aCwgIi0xMCUiKQpAQCAtNjMsNiArNzQsNyBAQCBpbmxp
bmUgU1ZHRmlsdGVyRWxlbWVudDo6U1ZHRmlsdGVyRWxlbWVuCiAgICAgLy8gU3BlYzogSWYgdGhl
IHgveSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZh
bHVlIG9mICItMTAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICAvLyBTcGVjOiBJZiB0aGUgd2lkdGgv
aGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEg
dmFsdWUgb2YgIjEyMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNW
R05hbWVzOjpmaWx0ZXJUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNW
R0ZpbHRlckVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGaWx0ZXJFbGVtZW50PiBTVkdG
aWx0ZXJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQpAQCAtMTg5LDk4ICsyMDEsNiBAQCB2b2lkIFNWR0ZpbHRlckVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nCiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7
CiB9CiAKLXZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUo
KSkgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0g
ICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsK
LSAgICAgICAgc3luY2hyb25pemVGaWx0ZXJVbml0cygpOwotICAgICAgICBzeW5jaHJvbml6ZVBy
aW1pdGl2ZVVuaXRzKCk7Ci0gICAgICAgIHN5bmNocm9uaXplRmlsdGVyUmVzWCgpOwotICAgICAg
ICBzeW5jaHJvbml6ZUZpbHRlclJlc1koKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICBT
VkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5h
bWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjp4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAg
c3luY2hyb25pemVZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVdpZHRoKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OmhlaWdodEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZmlsdGVyVW5pdHNB
dHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRmlsdGVyVW5pdHMoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cHJpbWl0aXZlVW5pdHNB
dHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplUHJpbWl0aXZlVW5pdHMoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZmlsdGVyUmVzQXR0
cikgewotICAgICAgICBzeW5jaHJvbml6ZUZpbHRlclJlc1goKTsKLSAgICAgICAgc3luY2hyb25p
emVGaWx0ZXJSZXNZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAg
ICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRl
KGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgU1ZHRmlsdGVyRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyLCBB
bmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OnByaW1pdGl2ZVVuaXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRM
ZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwot
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZmlsdGVyUmVzQXR0
ciwgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0K
IHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFy
c2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3Vu
dERlbHRhKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2Vk
QnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNTQsOSArNTQsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hh
bmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7
CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopOwpAQCAtNjYsMjEgKzYzLDE4IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgZmlsdGVyUmVzWElkZW50aWZpZXIoKTsKICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBmaWx0ZXJSZXNZSWRlbnRpZmllcigpOwogCi0gICAgLy8gQW5p
bWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJB
VElPTihGaWx0ZXJVbml0cywgZmlsdGVyVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUp
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihQcmltaXRpdmVVbml0cywgcHJpbWl0
aXZlVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRF
RF9MRU5HVEgoWCwgeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQotICAgIERF
Q0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKLSAgICBERUNMQVJFX0FOSU1BVEVE
X0xFTkdUSChIZWlnaHQsIGhlaWdodCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoRmls
dGVyUmVzWCwgZmlsdGVyUmVzWCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoRmlsdGVy
UmVzWSwgZmlsdGVyUmVzWSkKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERFQ0xBUkVf
QU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgQkVHSU5fREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlckVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfRU5VTUVSQVRJT04oRmlsdGVyVW5pdHMsIGZpbHRlclVuaXRzLCBTVkdVbml0VHlwZXM6
OlNWR1VuaXRUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFByaW1p
dGl2ZVVuaXRzLCBwcmltaXRpdmVVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9MRU5HVEgoWSwgeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgs
IHdpZHRoKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9JTlRFR0VSKEZpbHRlclJlc1gsIGZpbHRlclJlc1gp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihGaWx0ZXJSZXNZLCBmaWx0ZXJSZXNZ
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVT
CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkocmV2aXNpb24gOTA0NTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTEgKzM3LDIyIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURf
TEVOR1RIKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTmFtZXM6OnhB
dHRyLCBYLCB4KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKLURFRklORV9BTklNQVRFRF9M
RU5HVEgoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdOYW1lczo6d2lk
dGhBdHRyLCBXaWR0aCwgd2lkdGgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhlaWdodCwg
aGVpZ2h0KQotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMsIFNWR05hbWVzOjpyZXN1bHRBdHRyLCBSZXN1bHQsIHJlc3VsdCkKK0JFR0lO
X0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR05hbWVzOjp4QXR0ciwgWCwg
eCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcywgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQorICAgIERFRklORV9BTklNQVRFRF9M
RU5HVEgoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdOYW1lczo6d2lk
dGhBdHRyLCBXaWR0aCwgd2lkdGgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBIZWln
aHQsIGhlaWdodCkKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTmFtZXM6OnJlc3VsdEF0dHIsIFJlc3VsdCwgcmVzdWx0
KQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WSh3aWR0aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShoZWlnaHQpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocmVzdWx0KQorICAgIFJFR0lTVEVS
X1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVsZW1lbnQpCitFTkRfUkVHSVNU
RVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KQpAQCAtNTIsNiArNjMsNyBAQCBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OlNWCiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIHgveSBhdHRy
aWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIw
JSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgLy8gU3BlYzogSWYgdGhlIHdpZHRoL2hlaWdodCBhdHRy
aWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIx
MDAlIiB3ZXJlIHNwZWNpZmllZC4KKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcygpOwogfQogCiBib29sIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBAIC0xMjEsNTEgKzEzMyw2IEBAIHZvaWQgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGUKICAgICBpbnZhbGlkYXRlKCk7CiB9CiAKLXZv
aWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoteyAgICAKLSAgICBpZiAoYXR0ck5h
bWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAgc3luY2hy
b25pemVIZWlnaHQoKTsKLSAgICAgICAgc3luY2hyb25pemVSZXN1bHQoKTsKLSAgICAgICAgU1ZH
U3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1l
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6eEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplWSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjp3aWR0aEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpo
ZWlnaHRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJlc3VsdEF0dHIpIHsK
LSAgICAgICAgc3luY2hyb25pemVSZXN1bHQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCiB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBO
b2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRh
KQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJz
ZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkBAIC0yMDQs
MTcgKzE3MSw2IEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGUKICAg
ICBmaWx0ZXJFZmZlY3QtPnNldEVmZmVjdEJvdW5kYXJpZXMoZWZmZWN0QkJveCk7CiB9CiAKLXZv
aWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsUGFzc2VkQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKQotewotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0g
ICAgCi0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwg
QW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoU1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRM
ZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cmVz
dWx0QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotfQotCiBSZW5kZXJPYmplY3QqIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFy
ZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1Jl
c291cmNlRmlsdGVyUHJpbWl0aXZlKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkocmV2
aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDYgQEAgcHJvdGVj
dGVkOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7
Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwotICAgIHZvaWQgZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJik7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBO
b2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIGlu
bGluZSB2b2lkIGludmFsaWRhdGUoKQpAQCAtNzMsMTIgKzcxLDEzIEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVy
U3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVu
ZGVyaW5nQ29udGV4dCYpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25z
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKLSAgICBERUNMQVJFX0FOSU1BVEVE
X0xFTkdUSChZLCB5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkK
LSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKLSAgICBERUNMQVJF
X0FOSU1BVEVEX1NUUklORyhSZXN1bHQsIHJlc3VsdCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX0xFTkdUSChZLCB5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwg
d2lkdGgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhSZXN1bHQsIHJlc3VsdCkKKyAgICBFTkRf
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAkocmV2aXNpb24gOTA0
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA0LDIwICsxMDQsNiBAQCBib29sIFNWR0ZpdFRvVmlld0JveDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNWR0ZpdFRvVmlld0JveDo6
c3luY2hyb25pemVQcm9wZXJ0aWVzKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewot
ICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplVmll
d0JveCgpOwotICAgICAgICBzeW5jaHJvbml6ZVByZXNlcnZlQXNwZWN0UmF0aW8oKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dmlld0Jv
eEF0dHIpCi0gICAgICAgIHN5bmNocm9uaXplVmlld0JveCgpOwotICAgIGVsc2UgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cikKLSAgICAgICAgc3luY2hy
b25pemVQcmVzZXJ2ZUFzcGVjdFJhdGlvKCk7Ci19Ci0KIGJvb2wgU1ZHRml0VG9WaWV3Qm94Ojpp
c0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIHJl
dHVybiBhdHRyTmFtZSA9PSBTVkdOYW1lczo6dmlld0JveEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZpdFRvVmlld0JveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aXRUb1ZpZXdCb3guaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rml0VG9WaWV3Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDE0ICs0MywxMCBAQCBwdWJsaWM6
CiAgICAgYm9vbCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShEb2N1bWVudCosIEF0dHJpYnV0ZSopOwog
ICAgIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdm9p
ZCBhZGRTdXBwb3J0ZWRBdHRyaWJ1dGVzKEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4mKTsKLSAgICB2
b2lkIHN5bmNocm9uaXplUHJvcGVydGllcyhjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Vmlld0JveEJhc2VWYWx1ZShjb25zdCBGbG9hdFJlY3QmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFByZXNlcnZlQXNwZWN0UmF0aW9CYXNlVmFsdWUoY29uc3QgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpbyYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVZpZXdCb3goKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJlc2VydmVBc3Bl
Y3RSYXRpbygpID0gMDsKLQogcHJpdmF0ZToKICAgICBib29sIHBhcnNlVmlld0JveChEb2N1bWVu
dCosIGNvbnN0IFN0cmluZyYsIEZsb2F0UmVjdCYpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGb250RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZvbnRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRm9udEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiwxNCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9u
cwotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHRm9udEVsZW1lbnQsIFNWR05hbWVzOjpleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVT
CisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHRm9udEVsZW1lbnQsIFNWR05hbWVzOjpl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwg
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElF
UworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZvbnRFbGVtZW50KQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVk
RWxlbWVudCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdG
b250RWxlbWVudDo6U1ZHRm9udEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkgCkBAIC00NSw2ICs1MSw3IEBAIGlubGluZSBTVkdGb250RWxlbWVudDo6U1ZHRm9udEVs
ZW1lbnQoY28KICAgICAsIG1faXNHbHlwaENhY2hlVmFsaWQoZmFsc2UpCiB7CiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZvbnRUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJv
cGVydGllc0ZvclNWR0ZvbnRFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRm9udEVsZW1l
bnQ+IFNWR0ZvbnRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNTIsMTQgKzU5LDYgQEAgUGFzc1JlZlB0cjxTVkdGb250
RWxlbWVudD4gU1ZHRm9udEVsZW1lbgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRm9udEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBTVkdGb250RWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBT
VkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLQotICAgIGlm
IChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpIHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQoKTsKLX0KLQogdm9pZCBTVkdGb250RWxlbWVudDo6aW52YWxpZGF0
ZUdseXBoQ2FjaGUoKQogewogICAgIGlmIChtX2lzR2x5cGhDYWNoZVZhbGlkKSB7CkBAIC0yNTks
MTcgKzI1OCw2IEBAIEdseXBoIFNWR0ZvbnRFbGVtZW50OjptaXNzaW5nR2x5cGgoKQogICAgIHJl
dHVybiBtX21pc3NpbmdHbHlwaDsKIH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNW
R0ZvbnRFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwOwotfQotCi12b2lkIFNWR0ZvbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKQotewotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpKTsKLX0KLQogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNWR19GT05UUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b250RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxl
bWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MywxOCArNzMsMTQgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBTVkdGb250RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVy
aW5nQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9ICAKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZvaWQgZW5z
dXJlR2x5cGhDYWNoZSgpOwogICAgIHZvaWQgcmVnaXN0ZXJMaWdhdHVyZXNJbkdseXBoQ2FjaGUo
VmVjdG9yPFN0cmluZz4mKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9u
cwotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5J
TUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGb250
RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVElFUwogCiAgICAgS2VybmluZ1BhaXJWZWN0b3IgbV9ob3Jpem9udGFs
S2VybmluZ1BhaXJzOwogICAgIEtlcm5pbmdQYWlyVmVjdG9yIG1fdmVydGljYWxLZXJuaW5nUGFp
cnM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVu
dC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTMgKzM0LDI1IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURF
RklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjp4
QXR0ciwgWCwgeCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKLURF
RklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjpo
ZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdodCkKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQotREVG
SU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjpl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwg
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJU
SUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwg
U1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKKyAgICBERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRy
LCBXaWR0aCwgd2lkdGgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhlaWdodCwgaGVpZ2h0KQorICAgIERF
RklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFhMaW5rTmFtZXM6
OmhyZWZBdHRyLCBIcmVmLCBocmVmKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0Zv
cmVpZ25PYmplY3RFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0
dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQp
CitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NB
TF9BTklNQVRFRF9QUk9QRVJUWSh4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKHkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkod2lkdGgpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaGVpZ2h0KQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKGhyZWYpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICBS
RUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RF
Ul9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCkBAIC01MCw2ICs2Miw3IEBAIGlubGluZSBTVkdGb3JlaWduT2JqZWN0
RWxlbWVudDo6U1ZHRm9yZWkKICAgICAsIG1faGVpZ2h0KExlbmd0aE1vZGVIZWlnaHQpCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RUYWcpKTsKKyAgICBy
ZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KCk7CiB9
CiAKIFBhc3NSZWZQdHI8U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ+IFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQpAQCAtMTM0LDc2ICsxNDcsNiBAQCB2b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50
OjpzdmdBdHRyaWJ1CiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5k
UGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVyZXIpOwogfQogCi12b2lkIFNWR0ZvcmVp
Z25PYmplY3RFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgc3luY2hy
b25pemVXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAgICBzeW5j
aHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgc3luY2hyb25pemVI
cmVmKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0
ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25p
emVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
IWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVko
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6d2lkdGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikg
ewotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3du
QXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9w
ZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17ICAgIAotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Zmls
bFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRy
LCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRl
ZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6
OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0KIFJlbmRlck9iamVjdCogU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVy
U3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdGb3JlaWduT2JqZWN0
KHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDI2ICs0NSwyNSBAQCBwcml2YXRl
OgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0g
ICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAg
ICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIo
Tm9kZSopIGNvbnN0OwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSk7CiAKICAgICB2aXJ0dWFsIGJv
b2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJv
cGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVO
R1RIKFdpZHRoLCB3aWR0aCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhl
aWdodCkKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RS
SU5HKEhyZWYsIGhyZWYpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X0xFTkdUSChYLCB4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwgd2lkdGgpCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4o
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAg
ICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpz
eW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVp
cmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3Rl
bUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsg
fQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0Vs
ZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEzICszMSwyMSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotREVGSU5FX0FO
SU1BVEVEX0JPT0xFQU4oU1ZHR0VsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FO
SU1BVEVEX0JPT0xFQU4oU1ZHR0VsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RF
Ul9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0dFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJf
UEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQp
CisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRf
UkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBTVkdHRWxlbWVudDo6U1ZHR0VsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDog
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmdUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVk
UHJvcGVydGllc0ZvclNWR0dFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHR0VsZW1lbnQ+
IFNWR0dFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQpAQCAtODksNDQgKzk3LDYgQEAgdm9pZCBTVkdHRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChjbwogICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91
dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyKTsKIH0KIAotdm9pZCBTVkdH
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJv
bml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNo
cm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewot
ICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBh
dHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0dFbGVtZW50OjphdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkp
OwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNW
R0dFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKSk7Ci19Ci0KIFJlbmRlck9iamVjdCog
U1ZHR0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5
bGUqIHN0eWxlKQogewogICAgIC8vIFNWRyAxLjEgdGVzdHN1aXRlIGV4cGxpY2l0ZWx5IHVzZXMg
Y29uc3RydWN0cyBsaWtlIDxnIGRpc3BsYXk9Im5vbmUiPjxsaW5lYXJHcmFkaWVudD4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxNiArNTEsMTcgQEAg
cHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7
CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBk
ZWNsYXJhdGlvbnMKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHR0Vs
ZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMKIAotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQK
LSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwg
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVS
ZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5z
aW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdl
KCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBo
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxl
bWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBo
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOSwyMCArMTI5LDYgQEAgc3RhdGljIGlu
bGluZSBmbG9hdCBwYXJzZVNWR0dseXBoQXR0cmlidQogICAgIHJldHVybiB2YWx1ZS50b0Zsb2F0
KCk7CiB9CiAKLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdHbHlwaEVsZW1lbnQ6OmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAo
KSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQg
U1ZHR2x5cGhFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAg
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9
IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRFbGVt
ZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6ZEF0dHIsIEFuaW1hdGVkUGF0aCk7Ci19Ci0KIFNWR0dseXBoIFNWR0dseXBoRWxlbWVudDo6
YnVpbGRHZW5lcmljR2x5cGhJZGVudGlmaWVyKGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQpCiB7
CiAgICAgU1ZHR2x5cGggaWRlbnRpZmllcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
bHlwaEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhF
bGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBo
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0Niw4IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgU1ZHR2x5cGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OwogCisgICAgLy8gRklYTUU6IHN2Z0F0dHJpYnV0ZUNoYW5nZWQgbWlzc2luZy4KICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7Ci0gICAgdmlydHVhbCB2
b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRp
ZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRp
ZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE4ICszOCwyOSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25z
Ci1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHR3JhZGllbnRFbGVtZW50LCBTVkdOYW1l
czo6c3ByZWFkTWV0aG9kQXR0ciwgU3ByZWFkTWV0aG9kLCBzcHJlYWRNZXRob2QsIFNWR0dyYWRp
ZW50RWxlbWVudDo6U1ZHU3ByZWFkTWV0aG9kVHlwZSkKLURFRklORV9BTklNQVRFRF9FTlVNRVJB
VElPTihTVkdHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0ciwgR3Jh
ZGllbnRVbml0cywgZ3JhZGllbnRVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKLURF
RklORV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChTVkdHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVz
OjpncmFkaWVudFRyYW5zZm9ybUF0dHIsIEdyYWRpZW50VHJhbnNmb3JtLCBncmFkaWVudFRyYW5z
Zm9ybSkKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHR3JhZGllbnRFbGVtZW50LCBYTGlua05h
bWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0dy
YWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorQkVH
SU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVS
QVRJT04oU1ZHR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6c3ByZWFkTWV0aG9kQXR0ciwgU3By
ZWFkTWV0aG9kLCBzcHJlYWRNZXRob2QsIFNWR1NwcmVhZE1ldGhvZFR5cGUpCisgICAgREVGSU5F
X0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0dyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmdyYWRp
ZW50VW5pdHNBdHRyLCBHcmFkaWVudFVuaXRzLCBncmFkaWVudFVuaXRzLCBTVkdVbml0VHlwZXM6
OlNWR1VuaXRUeXBlKQorICAgIERFRklORV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChTVkdHcmFk
aWVudEVsZW1lbnQsIFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIsIEdyYWRpZW50VHJh
bnNmb3JtLCBncmFkaWVudFRyYW5zZm9ybSkKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNW
R0dyYWRpZW50RWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCisgICAg
REVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6ZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMK
KworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdHcmFkaWVudEVsZW1lbnQp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc3ByZWFkTWV0aG9kKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGdyYWRpZW50VW5pdHMpCisgICAgUkVH
SVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZ3JhZGllbnRUcmFuc2Zvcm0pCisgICAgUkVH
SVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVS
X1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVsZW1lbnQpCitFTkRfUkVHSVNU
RVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR0dyYWRpZW50
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAgICwgbV9zcHJl
YWRNZXRob2QoU1ZHX1NQUkVBRE1FVEhPRF9QQUQpCisgICAgLCBtX3NwcmVhZE1ldGhvZChTVkdT
cHJlYWRNZXRob2RQYWQpCiAgICAgLCBtX2dyYWRpZW50VW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdf
VU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKQogeworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9w
ZXJ0aWVzRm9yU1ZHR3JhZGllbnRFbGVtZW50KCk7CiB9CiAKIGJvb2wgU1ZHR3JhZGllbnRFbGVt
ZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
QEAgLTExNiw2MSArMTI3LDYgQEAgdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYQogICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCiAgICAgICAg
IG9iamVjdC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiB9Ci0KLXZvaWQgU1ZHR3JhZGllbnRFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQot
ewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
R3JhZGllbnRVbml0cygpOwotICAgICAgICBzeW5jaHJvbml6ZUdyYWRpZW50VHJhbnNmb3JtKCk7
Ci0gICAgICAgIHN5bmNocm9uaXplU3ByZWFkTWV0aG9kKCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsK
LSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRl
KGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6Z3JhZGllbnRVbml0c0F0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVH
cmFkaWVudFVuaXRzKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0cikgewotICAgICAgICBzeW5jaHJv
bml6ZUdyYWRpZW50VHJhbnNmb3JtKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwcmVhZE1ldGhvZEF0dHIpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVTcHJlYWRNZXRob2QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQg
U1ZHR3JhZGllbnRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKQot
ewotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0KLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNwcmVhZE1ldGhvZEF0dHIsIEFuaW1hdGVkRW51bWVy
YXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Z3Jh
ZGllbnRVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Z3JhZGllbnRUcmFuc2Zvcm1BdHRyLCBBbmltYXRl
ZFRyYW5zZm9ybUxpc3QpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChYTGlu
a05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotfQogICAgIAogdm9pZCBTVkdHcmFk
aWVudEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSog
YmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmgJKHJldmlzaW9uIDkw
NDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw1OSArMzMsMjcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTVkdHcmFkaWVudEVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCB7Ci1wdWJs
aWM6Ci0gICAgZW51bSBTVkdTcHJlYWRNZXRob2RUeXBlIHsKLSAgICAgICAgU1ZHX1NQUkVBRE1F
VEhPRF9VTktOT1dOID0gMCwKLSAgICAgICAgU1ZHX1NQUkVBRE1FVEhPRF9QQUQgICAgID0gMSwK
LSAgICAgICAgU1ZHX1NQUkVBRE1FVEhPRF9SRUZMRUNUID0gMiwKLSAgICAgICAgU1ZHX1NQUkVB
RE1FVEhPRF9SRVBFQVQgID0gMwotICAgIH07Ci0KLSAgICBWZWN0b3I8R3JhZGllbnQ6OkNvbG9y
U3RvcD4gYnVpbGRTdG9wcygpOwotIAotcHJvdGVjdGVkOgotICAgIFNWR0dyYWRpZW50RWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIGJvb2wgaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZvaWQgZmlsbFBhc3Nl
ZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJik7
Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIG5lZWRzUGVuZGluZ1Jlc291cmNlSGFuZGxp
bmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVu
Q2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2Ug
PSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKLQot
ICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFU
RURfRU5VTUVSQVRJT04oU3ByZWFkTWV0aG9kLCBzcHJlYWRNZXRob2QsIFNWR1NwcmVhZE1ldGhv
ZFR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihHcmFkaWVudFVuaXRzLCBn
cmFkaWVudFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQotICAgIERFQ0xBUkVfQU5J
TUFURURfVFJBTlNGT1JNX0xJU1QoR3JhZGllbnRUcmFuc2Zvcm0sIGdyYWRpZW50VHJhbnNmb3Jt
KQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkco
SHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKK2VudW0gU1ZHU3ByZWFkTWV0aG9kVHlwZSB7CisgICAgU1ZH
U3ByZWFkTWV0aG9kVW5rbm93biA9IDAsCisgICAgU1ZHU3ByZWFkTWV0aG9kUGFkLAorICAgIFNW
R1NwcmVhZE1ldGhvZFJlZmxlY3QsCisgICAgU1ZHU3ByZWFkTWV0aG9kUmVwZWF0CiB9OwogCiB0
ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHR3JhZGllbnRFbGVtZW50OjpT
VkdTcHJlYWRNZXRob2RUeXBlPiB7Ci0gICAgc3RhdGljIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZH
U3ByZWFkTWV0aG9kVHlwZSBoaWdoZXN0RW51bVZhbHVlKCkgeyByZXR1cm4gU1ZHR3JhZGllbnRF
bGVtZW50OjpTVkdfU1BSRUFETUVUSE9EX1JFUEVBVDsgfQorc3RydWN0IFNWR1Byb3BlcnR5VHJh
aXRzPFNWR1NwcmVhZE1ldGhvZFR5cGU+IHsKKyAgICBzdGF0aWMgU1ZHU3ByZWFkTWV0aG9kVHlw
ZSBoaWdoZXN0RW51bVZhbHVlKCkgeyByZXR1cm4gU1ZHU3ByZWFkTWV0aG9kUmVwZWF0OyB9CiAK
LSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHU3ByZWFk
TWV0aG9kVHlwZSB0eXBlKQorICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoU1ZHU3ByZWFkTWV0
aG9kVHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNh
c2UgU1ZHR3JhZGllbnRFbGVtZW50OjpTVkdfU1BSRUFETUVUSE9EX1VOS05PV046CisgICAgICAg
IGNhc2UgU1ZHU3ByZWFkTWV0aG9kVW5rbm93bjoKICAgICAgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwotICAgICAgICBjYXNlIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHX1NQUkVBRE1FVEhP
RF9QQUQ6CisgICAgICAgIGNhc2UgU1ZHU3ByZWFkTWV0aG9kUGFkOgogICAgICAgICAgICAgcmV0
dXJuICJwYWQiOwotICAgICAgICBjYXNlIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHX1NQUkVBRE1F
VEhPRF9SRUZMRUNUOgorICAgICAgICBjYXNlIFNWR1NwcmVhZE1ldGhvZFJlZmxlY3Q6CiAgICAg
ICAgICAgICByZXR1cm4gInJlZmxlY3QiOwotICAgICAgICBjYXNlIFNWR0dyYWRpZW50RWxlbWVu
dDo6U1ZHX1NQUkVBRE1FVEhPRF9SRVBFQVQ6CisgICAgICAgIGNhc2UgU1ZHU3ByZWFkTWV0aG9k
UmVwZWF0OgogICAgICAgICAgICAgcmV0dXJuICJyZXBlYXQiOwogICAgICAgICB9CiAKQEAgLTkz
LDE4ICs2MSw1MiBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHR3JhZGllbnRFbGVtCiAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIAotICAgIHN0YXRpYyBTVkdHcmFk
aWVudEVsZW1lbnQ6OlNWR1NwcmVhZE1ldGhvZFR5cGUgZnJvbVN0cmluZyhjb25zdCBTdHJpbmcm
IHZhbHVlKQorICAgIHN0YXRpYyBTVkdTcHJlYWRNZXRob2RUeXBlIGZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICh2YWx1ZSA9PSAicGFkIikKLSAgICAg
ICAgICAgIHJldHVybiBTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR19TUFJFQURNRVRIT0RfUEFEOwor
ICAgICAgICAgICAgcmV0dXJuIFNWR1NwcmVhZE1ldGhvZFBhZDsKICAgICAgICAgaWYgKHZhbHVl
ID09ICJyZWZsZWN0IikKLSAgICAgICAgICAgIHJldHVybiBTVkdHcmFkaWVudEVsZW1lbnQ6OlNW
R19TUFJFQURNRVRIT0RfUkVGTEVDVDsKKyAgICAgICAgICAgIHJldHVybiBTVkdTcHJlYWRNZXRo
b2RSZWZsZWN0OwogICAgICAgICBpZiAodmFsdWUgPT0gInJlcGVhdCIpCi0gICAgICAgICAgICBy
ZXR1cm4gU1ZHR3JhZGllbnRFbGVtZW50OjpTVkdfU1BSRUFETUVUSE9EX1JFUEVBVDsKLSAgICAg
ICAgcmV0dXJuIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHX1NQUkVBRE1FVEhPRF9VTktOT1dOOwor
ICAgICAgICAgICAgcmV0dXJuIFNWR1NwcmVhZE1ldGhvZFJlcGVhdDsKKyAgICAgICAgcmV0dXJu
IFNWR1NwcmVhZE1ldGhvZFVua25vd247CiAgICAgfQogfTsKIAorY2xhc3MgU1ZHR3JhZGllbnRF
bGVtZW50IDogcHVibGljIFNWR1N0eWxlZEVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgeworcHVibGljOgorICAgIGVudW0g
eworICAgICAgICBTVkdfU1BSRUFETUVUSE9EX1VOS05PV04gPSBTVkdTcHJlYWRNZXRob2RVbmtu
b3duLAorICAgICAgICBTVkdfU1BSRUFETUVUSE9EX1BBRCA9IFNWR1NwcmVhZE1ldGhvZFBhZCwK
KyAgICAgICAgU1ZHX1NQUkVBRE1FVEhPRF9SRUZMRUNUID0gU1ZHU3ByZWFkTWV0aG9kUmVmbGVj
dCwKKyAgICAgICAgU1ZHX1NQUkVBRE1FVEhPRF9SRVBFQVQgPSBTVkdTcHJlYWRNZXRob2RSZXBl
YXQgCisgICAgfTsKKworICAgIFZlY3RvcjxHcmFkaWVudDo6Q29sb3JTdG9wPiBidWlsZFN0b3Bz
KCk7CisgCitwcm90ZWN0ZWQ6CisgICAgU1ZHR3JhZGllbnRFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCopOworCisgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSopOworICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQZW5k
aW5nUmVzb3VyY2VIYW5kbGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5v
ZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291
bnREZWx0YSA9IDApOworCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R0dyYWRpZW50RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihT
cHJlYWRNZXRob2QsIHNwcmVhZE1ldGhvZCwgU1ZHU3ByZWFkTWV0aG9kVHlwZSkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihHcmFkaWVudFVuaXRzLCBncmFkaWVudFVuaXRz
LCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1RS
QU5TRk9STV9MSVNUKEdyYWRpZW50VHJhbnNmb3JtLCBncmFkaWVudFRyYW5zZm9ybSkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworfTsKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NiwxNCArMzYsMjcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9w
ZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdJbWFnZUVsZW1lbnQs
IFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHSW1hZ2VF
bGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNW
R0ltYWdlRWxlbWVudCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgV2lkdGgsIHdpZHRoKQotREVGSU5F
X0FOSU1BVEVEX0xFTkdUSChTVkdJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBI
ZWlnaHQsIGhlaWdodCkKLURFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR0lt
YWdlRWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBQcmVzZXJ2ZUFz
cGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQotREVGSU5FX0FOSU1BVEVEX1NUUklORyhT
VkdJbWFnZUVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQotREVGSU5F
X0FOSU1BVEVEX0JPT0xFQU4oU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERF
RklORV9BTklNQVRFRF9MRU5HVEgoU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgs
IHgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdJbWFnZUVsZW1lbnQsIFNWR05hbWVz
Ojp5QXR0ciwgWSwgeSkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ltYWdlRWxlbWVu
dCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgV2lkdGgsIHdpZHRoKQorICAgIERFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBo
ZWlnaHQpCisgICAgREVGSU5FX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oU1ZHSW1hZ2VF
bGVtZW50LCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFByZXNlcnZlQXNwZWN0
UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhT
VkdJbWFnZUVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQorICAgIERF
RklORV9BTklNQVRFRF9CT09MRUFOKFNWR0ltYWdlRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JF
R0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHSW1hZ2VFbGVtZW50KQorICAgIFJF
R0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh3
aWR0aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShoZWlnaHQpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocHJlc2VydmVBc3BlY3RSYXRpbykKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShocmVmKQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVH
SVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMp
CitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHSW1hZ2VFbGVt
ZW50OjpTVkdJbWFnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpCkBAIC01NCw2ICs2Nyw3IEBAIGlubGluZSBTVkdJbWFnZUVsZW1lbnQ6OlNW
R0ltYWdlRWxlbWVudCgKICAgICAsIG1faW1hZ2VMb2FkZXIodGhpcykKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShTVkdOYW1lczo6aW1hZ2VUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJv
cGVydGllc0ZvclNWR0ltYWdlRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ltYWdlRWxl
bWVudD4gU1ZHSW1hZ2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTczLDg4ICsxODcsNiBAQCB2b2lkIFNWR0ltYWdl
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAKLXZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAg
ICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAg
ICAgICBzeW5jaHJvbml6ZVByZXNlcnZlQXNwZWN0UmF0aW8oKTsKLSAgICAgICAgc3luY2hyb25p
emVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigp
OwotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1l
KTsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1
cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cikgewotICAg
ICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Ondp
ZHRoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVdpZHRoKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsKLSAg
ICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIpIHsKLSAg
ICAgICAgc3luY2hyb25pemVQcmVzZXJ2ZUFzcGVjdFJhdGlvKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVVJJUmVm
ZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6
ZUhyZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdUZXN0czo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXpl
UHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IFNWR0ltYWdlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
LQotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3Ro
KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBB
bmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0
aW9BdHRyLCBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwot
fQotCiBib29sIFNWR0ltYWdlRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHgoKS5pc1JlbGF0aXZlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdJbWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
SW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw5ICs1MSw2IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAg
IHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lk
IGluc2VydGVkSW50b0RvY3VtZW50KCk7CkBAIC02OCwxOCArNjUsMjAgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogICAgIHZpcnR1
YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogCi0gICAgLy8gQW5pbWF0ZWQg
cHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkK
LSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQotICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIKFdpZHRoLCB3aWR0aCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQs
IGhlaWdodCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oUHJlc2Vy
dmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKLQotICAgIC8vIFNWR1VSSVJlZmVy
ZW5jZQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCi0KLSAgICAvLyBT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFO
KEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisg
ICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ltYWdlRWxlbWVudCkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9MRU5HVEgoWSwgeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgs
IHdpZHRoKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNw
ZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
U1RSSU5HKEhyZWYsIGhyZWYpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVO
RF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3RzCisgICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNo
cm9uaXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRF
eHRlbnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFu
Z3VhZ2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiAK
ICAgICBTVkdJbWFnZUxvYWRlciBtX2ltYWdlTG9hZGVyOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0xpbmVFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMiArMzMsMjMg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0
aW9ucwotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6Ongx
QXR0ciwgWDEsIHgxKQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5lRWxlbWVudCwgU1ZH
TmFtZXM6OnkxQXR0ciwgWTEsIHkxKQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5lRWxl
bWVudCwgU1ZHTmFtZXM6OngyQXR0ciwgWDIsIHgyKQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChT
VkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6OnkyQXR0ciwgWTIsIHkyKQotREVGSU5FX0FOSU1BVEVE
X0JPT0xFQU4oU1ZHTGluZUVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1B
VEVEX0xFTkdUSChTVkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6OngxQXR0ciwgWDEsIHgxKQorICAg
IERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZUVsZW1lbnQsIFNWR05hbWVzOjp5MUF0dHIs
IFkxLCB5MSkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0xpbmVFbGVtZW50LCBTVkdO
YW1lczo6eDJBdHRyLCBYMiwgeDIpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5l
RWxlbWVudCwgU1ZHTmFtZXM6OnkyQXR0ciwgWTIsIHkyKQorICAgIERFRklORV9BTklNQVRFRF9C
T09MRUFOKFNWR0xpbmVFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdMaW5lRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWSh4MSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5
MSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh4MikKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5MikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVO
VF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KQorICAg
IFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lT
VEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0xpbmVFbGVtZW50OjpTVkdMaW5l
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CiAgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
QEAgLTQ4LDYgKzU5LDcgQEAgaW5saW5lIFNWR0xpbmVFbGVtZW50OjpTVkdMaW5lRWxlbWVudChj
bwogICAgICwgbV95MihMZW5ndGhNb2RlSGVpZ2h0KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KFNWR05hbWVzOjpsaW5lVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JT
VkdMaW5lRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0xpbmVFbGVtZW50PiBTVkdMaW5l
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCkKQEAgLTE0NSw3NCArMTU3LDYgQEAgdm9pZCBTVkdMaW5lRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0xp
bmVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplWDEoKTsKLSAgICAgICAgc3luY2hyb25pemVZMSgpOwotICAgICAgICBzeW5jaHJvbml6
ZVgyKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWTIoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVBy
b3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAg
ICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShh
dHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OngxQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVgxKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnkxQXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZVkxKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OngyQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVgy
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnkyQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVkyKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVGVzdHM6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBTVkdMaW5lRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdMaW5lRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwotCi0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4MUF0dHIsIEFuaW1hdGVkTGVu
Z3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnkxQXR0
ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6eDJBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5MkF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLX0KLQogdm9p
ZCBTVkdMaW5lRWxlbWVudDo6dG9QYXRoRGF0YShQYXRoJiBwYXRoKSBjb25zdAogewogICAgIEFT
U0VSVChwYXRoLmlzRW1wdHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQu
aAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcsOSArNDcsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAg
ICAgdmlydHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0OwogCkBAIC01NywxNCArNTQs
MTggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhz
KCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYMSwgeDEpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoWTEsIHkxKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgyLCB4MikKLSAgICBERUNM
QVJFX0FOSU1BVEVEX0xFTkdUSChZMiwgeTIpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgQkVHSU5fREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR0xpbmVFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX0xFTkdUSChYMSwgeDEpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFkxLCB5
MSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWDIsIHgyKQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX0xFTkdUSChZMiwgeTIpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9P
TEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3Rz
CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVz
dHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXpl
UmVxdWlyZWRFeHRlbnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
U3lzdGVtTGFuZ3VhZ2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRo
aXMpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDAsMTEgKzQwLDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Ly8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9MRU5HVEgo
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6eDFBdHRyLCBYMSwgeDEpCi1ERUZJ
TkVfQU5JTUFURURfTEVOR1RIKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6Onkx
QXR0ciwgWTEsIHkxKQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQsIFNWR05hbWVzOjp4MkF0dHIsIFgyLCB4MikKLURFRklORV9BTklNQVRFRF9MRU5HVEgo
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6eTJBdHRyLCBZMiwgeTIpCitCRUdJ
Tl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgo
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6eDFBdHRyLCBYMSwgeDEpCisgICAg
REVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVz
Ojp5MUF0dHIsIFkxLCB5MSkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0xpbmVhckdy
YWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OngyQXR0ciwgWDIsIHgyKQorICAgIERFRklORV9BTklN
QVRFRF9MRU5HVEgoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6eTJBdHRyLCBZ
MiwgeTIpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeDEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkoeTEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeDIp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeTIpCisgICAgUkVHSVNURVJf
UEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHR3JhZGllbnRFbGVtZW50KQorRU5EX1JFR0lT
VEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0xpbmVhckdyYWRpZW50RWxlbWVu
dDo6U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0dyYWRpZW50RWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKQEAgLTU1LDYgKzY0LDcgQEAgaW5saW5lIFNWR0xpbmVhckdyYWRpZW50RWxlbWVu
dDo6U1ZHTGluZQogewogICAgIC8vIFNwZWM6IElmIHRoZSB4MiBhdHRyaWJ1dGUgaXMgbm90IHNw
ZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIxMDAlIiB3ZXJlIHNwZWNp
ZmllZC4KICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6bGluZWFyR3JhZGllbnRUYWcp
KTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0xpbmVhckdyYWRpZW50RWxl
bWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0xpbmVhckdyYWRpZW50RWxlbWVudD4gU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTE5LDYyICsxMjksNiBAQCB2b2lkIFNWR0xpbmVhckdy
YWRpZW50RWxlbWVudDo6c3ZnQXR0cmliCiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQo
dHJ1ZSk7CiB9CiAKLXZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoteyAgICAKLSAgICBpZiAoYXR0
ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVgxKCk7Ci0gICAgICAg
IHN5bmNocm9uaXplWTEoKTsKLSAgICAgICAgc3luY2hyb25pemVYMigpOwotICAgICAgICBzeW5j
aHJvbml6ZVkyKCk7Ci0gICAgICAgIFNWR0dyYWRpZW50RWxlbWVudDo6c3luY2hyb25pemVQcm9w
ZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3Vw
cG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdHcmFkaWVudEVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfSAg
IAotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4MUF0dHIpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVYMSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjp5MUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVZMSgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4MkF0dHIp
IHsKLSAgICAgICAgc3luY2hyb25pemVYMigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5MkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25p
emVZMigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19
Ci0KLXZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0K
LSAgICBTVkdHcmFkaWVudEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4MUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnkxQXR0ciwgQW5pbWF0ZWRMZW5n
dGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eDJBdHRy
LCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjp5MkF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLX0KLQogUmVuZGVyT2JqZWN0KiBTVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwg
UmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJj
ZUxpbmVhckdyYWRpZW50KHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVh
ckdyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDE5
ICs0MiwxNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShB
dHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIHZpcnR1
YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRl
ZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYMSwg
eDEpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWTEsIHkxKQotICAgIERFQ0xBUkVfQU5J
TUFURURfTEVOR1RIKFgyLCB4MikKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZMiwgeTIp
CisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0xpbmVhckdyYWRpZW50
RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWDEsIHgxKQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZMSwgeTEpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfTEVOR1RIKFgyLCB4MikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWTIsIHky
KQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxNCArMjgsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NU
UklORyhTVkdNUGF0aEVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQot
REVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHTVBhdGhFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUwor
ICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHTVBhdGhFbGVtZW50LCBYTGlua05hbWVzOjpo
cmVmQXR0ciwgSHJlZiwgaHJlZikKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdNUGF0
aEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJ
TkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR01QYXRoRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShocmVmKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxp
bmUgU1ZHTVBhdGhFbGVtZW50OjpTVkdNUGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6bXBhdGhUYWcpKTsK
KyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR01QYXRoRWxlbWVudCgpOwogfQog
CiBQYXNzUmVmUHRyPFNWR01QYXRoRWxlbWVudD4gU1ZHTVBhdGhFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNjgsNDEg
Kzc1LDYgQEAgdm9pZCBTVkdNUGF0aEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR01QYXRoRWxlbWVudDo6c3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0
ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQoKTsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNW
R1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVIcmVmKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR01QYXRoRWxl
bWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0K
LQotdm9pZCBTVkdNUGF0aEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
Ci17Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKS5zZXQoWExpbmtOYW1lczo6aHJl
ZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQogU1ZHUGF0aEVsZW1lbnQqIFNWR01QYXRoRWxl
bWVudDo6cGF0aEVsZW1lbnQoKQogewogICAgIEVsZW1lbnQqIHRhcmdldCA9IHRyZWVTY29wZSgp
LT5nZXRFbGVtZW50QnlJZChnZXRUYXJnZXQoaHJlZigpKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01QYXRoRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNUGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTcgKzQ0LDExIEBAIHBy
aXZhdGU6CiAgICAgLy8gRklYTUU6IHN2Z0F0dHJpYnV0ZUNoYW5nZWQgbWlzc2luZy4KICAgICBi
b29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7Ci0gICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1
YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwog
Ci0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0KLSAgICAvLyBTVkdVUklS
ZWZlcmVuY2UKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQotCi0gICAg
Ly8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9P
TEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdNUGF0aEVsZW1lbnQp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdNYXJrZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFya2VyRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hcmtlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNiArMzMsNDUgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9u
cwotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6cmVm
WEF0dHIsIFJlZlgsIHJlZlgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01hcmtlckVsZW1l
bnQsIFNWR05hbWVzOjpyZWZZQXR0ciwgUmVmWSwgcmVmWSkKLURFRklORV9BTklNQVRFRF9MRU5H
VEgoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0ciwgTWFya2VyV2lk
dGgsIG1hcmtlcldpZHRoKQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXJrZXJFbGVtZW50
LCBTVkdOYW1lczo6bWFya2VySGVpZ2h0QXR0ciwgTWFya2VySGVpZ2h0LCBtYXJrZXJIZWlnaHQp
Ci1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6
Om1hcmtlclVuaXRzQXR0ciwgTWFya2VyVW5pdHMsIG1hcmtlclVuaXRzLCBTVkdNYXJrZXJFbGVt
ZW50OjpTVkdNYXJrZXJVbml0c1R5cGUpCi1ERUZJTkVfQU5JTUFURURfQU5HTEVfTVVMVElQTEVf
V1JBUFBFUlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6Om9yaWVudEF0dHIsIG9yaWVudEFu
Z2xlSWRlbnRpZmllcigpLCBPcmllbnRBbmdsZSwgb3JpZW50QW5nbGUpCi1ERUZJTkVfQU5JTUFU
RURfQk9PTEVBTihTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpCi1ERUZJTkVfQU5JTUFURURfUkVDVChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1l
czo6dmlld0JveEF0dHIsIFZpZXdCb3gsIHZpZXdCb3gpCi1ERUZJTkVfQU5JTUFURURfUFJFU0VS
VkVBU1BFQ1RSQVRJTyhTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RS
YXRpb0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisvLyBE
ZWZpbmUgY3VzdG9tIGFuaW1hdGVkIHByb3BlcnR5ICdvcmllbnRUeXBlJy4KK2NvbnN0IFNWR1By
b3BlcnR5SW5mbyogU1ZHTWFya2VyRWxlbWVudDo6b3JpZW50VHlwZVByb3BlcnR5SW5mbygpCit7
CisgICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogc19wcm9wZXJ0eUluZm8gPSAwOwor
ICAgIGlmICghc19wcm9wZXJ0eUluZm8pIHsKKyAgICAgICAgc19wcm9wZXJ0eUluZm8gPSBuZXcg
U1ZHUHJvcGVydHlJbmZvKEFuaW1hdGVkRW51bWVyYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6b3JpZW50QXR0ciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWVudFR5cGVJZGVudGlmaWVy
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU1ZHTWFy
a2VyRWxlbWVudDo6c3luY2hyb25pemVPcmllbnRUeXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJlNWR01hcmtlckVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRl
T3JpZW50VHlwZVdyYXBwZXIpOworICAgIH0KKyAgICByZXR1cm4gc19wcm9wZXJ0eUluZm87Cit9
CisKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVE
X0xFTkdUSChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6cmVmWEF0dHIsIFJlZlgsIHJlZlgp
CisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6
cmVmWUF0dHIsIFJlZlksIHJlZlkpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXJr
ZXJFbGVtZW50LCBTVkdOYW1lczo6bWFya2VyV2lkdGhBdHRyLCBNYXJrZXJXaWR0aCwgbWFya2Vy
V2lkdGgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXJrZXJFbGVtZW50LCBTVkdO
YW1lczo6bWFya2VySGVpZ2h0QXR0ciwgTWFya2VySGVpZ2h0LCBtYXJrZXJIZWlnaHQpCisgICAg
REVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjpt
YXJrZXJVbml0c0F0dHIsIE1hcmtlclVuaXRzLCBtYXJrZXJVbml0cywgU1ZHTWFya2VyVW5pdHNU
eXBlKQorICAgIERFRklORV9BTklNQVRFRF9BTkdMRV9NVUxUSVBMRV9XUkFQUEVSUyhTVkdNYXJr
ZXJFbGVtZW50LCBTVkdOYW1lczo6b3JpZW50QXR0ciwgb3JpZW50QW5nbGVJZGVudGlmaWVyKCks
IE9yaWVudEFuZ2xlLCBvcmllbnRBbmdsZSkKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihT
VkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIs
IEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisg
ICAgREVGSU5FX0FOSU1BVEVEX1JFQ1QoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6OnZpZXdC
b3hBdHRyLCBWaWV3Qm94LCB2aWV3Qm94KQorICAgIERFRklORV9BTklNQVRFRF9QUkVTRVJWRUFT
UEVDVFJBVElPKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlv
QXR0ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKK0VORF9ERUZJ
TkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR01hcmtlckVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkocmVmWCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShyZWZZKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKG1hcmtlcldpZHRoKQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKG1hcmtlckhlaWdodCkKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShtYXJrZXJVbml0cykKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWShvcmllbnRBbmdsZSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShvcmllbnRUeXBlKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkodmlld0JveCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR1N0eWxlZEVsZW1lbnQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElF
UwogCiBpbmxpbmUgU1ZHTWFya2VyRWxlbWVudDo6U1ZHTWFya2VyRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQpAQCAtNTAsMTEgKzc5LDEyIEBAIGlubGluZSBTVkdN
YXJrZXJFbGVtZW50OjpTVkdNYXJrZXJFbGVtZW4KICAgICAsIG1fcmVmWShMZW5ndGhNb2RlSGVp
Z2h0KQogICAgICwgbV9tYXJrZXJXaWR0aChMZW5ndGhNb2RlV2lkdGgsICIzIikKICAgICAsIG1f
bWFya2VySGVpZ2h0KExlbmd0aE1vZGVIZWlnaHQsICIzIikgCi0gICAgLCBtX21hcmtlclVuaXRz
KFNWR19NQVJLRVJVTklUU19TVFJPS0VXSURUSCkKLSAgICAsIG1fb3JpZW50VHlwZShTVkdfTUFS
S0VSX09SSUVOVF9BTkdMRSkKKyAgICAsIG1fbWFya2VyVW5pdHMoTWFya2VyVW5pdHNTdHJva2VX
aWR0aCkKKyAgICAsIG1fb3JpZW50VHlwZShNYXJrZXJPcmllbnRBbmdsZSkKIHsKICAgICAvLyBT
cGVjOiBJZiB0aGUgbWFya2VyV2lkdGgvbWFya2VySGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qgc3Bl
Y2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjMiIHdlcmUgc3BlY2lmaWVk
LgogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjptYXJrZXJUYWcpKTsKKyAgICByZWdp
c3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR01hcmtlckVsZW1lbnQoKTsKIH0KIAogUGFzc1Jl
ZlB0cjxTVkdNYXJrZXJFbGVtZW50PiBTVkdNYXJrZXJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTMzLDEwICsxNjMs
MTAgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogCiAgICAgaWYg
KGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6b3JpZW50QXR0cikgewogICAgICAgICBTVkdBbmds
ZSBhbmdsZTsKLSAgICAgICAgU1ZHTWFya2VyT3JpZW50VHlwZSBvcmllbnRUeXBlID0gU1ZHUHJv
cGVydHlUcmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT46OmZyb21TdHJpbmcodmFsdWUsIGFuZ2xl
KTsKKyAgICAgICAgTWFya2VyT3JpZW50VHlwZSBvcmllbnRUeXBlID0gU1ZHUHJvcGVydHlUcmFp
dHM8TWFya2VyT3JpZW50VHlwZT46OmZyb21TdHJpbmcodmFsdWUsIGFuZ2xlKTsKICAgICAgICAg
aWYgKG9yaWVudFR5cGUgPiAwKQogICAgICAgICAgICAgc2V0T3JpZW50VHlwZUJhc2VWYWx1ZShv
cmllbnRUeXBlKTsKLSAgICAgICAgaWYgKG9yaWVudFR5cGUgPT0gU1ZHX01BUktFUl9PUklFTlRf
QU5HTEUpCisgICAgICAgIGlmIChvcmllbnRUeXBlID09IE1hcmtlck9yaWVudEFuZ2xlKQogICAg
ICAgICAgICAgc2V0T3JpZW50QW5nbGVCYXNlVmFsdWUoYW5nbGUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMTcwLDkxICsyMDAsNiBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nCiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiB9CiAK
LXZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewot
ICAgICAgICBzeW5jaHJvbml6ZU1hcmtlclVuaXRzKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUmVm
WCgpOwotICAgICAgICBzeW5jaHJvbml6ZVJlZlkoKTsKLSAgICAgICAgc3luY2hyb25pemVNYXJr
ZXJXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZU1hcmtlckhlaWdodCgpOwotICAgICAgICBz
eW5jaHJvbml6ZU9yaWVudEFuZ2xlKCk7Ci0gICAgICAgIHN5bmNocm9uaXplT3JpZW50VHlwZSgp
OwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAg
ICAgU1ZHRml0VG9WaWV3Qm94OjpzeW5jaHJvbml6ZVByb3BlcnRpZXMoYXR0ck5hbWUpOwotICAg
ICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHko
YXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjptYXJrZXJVbml0c0F0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVNYXJrZXJV
bml0cygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjpyZWZYQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVJlZlgoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cmVmWUF0dHIp
IHsKLSAgICAgICAgc3luY2hyb25pemVSZWZZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0cikgewotICAgICAg
ICBzeW5jaHJvbml6ZU1hcmtlcldpZHRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIpIHsKLSAgICAgICAg
c3luY2hyb25pemVNYXJrZXJIZWlnaHQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6b3JpZW50QXR0cikgewotICAgICAgICBzeW5jaHJv
bml6ZU9yaWVudEFuZ2xlKCk7Ci0gICAgICAgIHN5bmNocm9uaXplT3JpZW50VHlwZSgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAg
ICAgU1ZHRml0VG9WaWV3Qm94OjpzeW5jaHJvbml6ZVByb3BlcnRpZXMoYXR0ck5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdNYXJrZXJFbGVtZW50OjphdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJl
dHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR01hcmtlckVs
ZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQ
YXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyZWZYQXR0
ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6cmVmWUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgp
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6bWFya2VySGVp
Z2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6bWFya2VyVW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om9yaWVudEF0dHIsIEFu
aW1hdGVkQW5nbGUpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6dmlld0JveEF0dHIsIEFuaW1hdGVkUmVjdCk7Ci19Ci0KIHZvaWQgU1ZHTWFya2VyRWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFu
Z2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIFNWR1N0
eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5n
ZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkBAIC0yNjgsMjAgKzIxMywyNiBAQCB2
b2lkIFNWR01hcmtlckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChiCiAKIHZvaWQgU1ZHTWFya2Vy
RWxlbWVudDo6c2V0T3JpZW50VG9BdXRvKCkKIHsKLSAgICBzZXRPcmllbnRUeXBlQmFzZVZhbHVl
KFNWR19NQVJLRVJfT1JJRU5UX0FVVE8pOworICAgIHNldE9yaWVudFR5cGVCYXNlVmFsdWUoTWFy
a2VyT3JpZW50QXV0byk7CiAgICAgc2V0T3JpZW50QW5nbGVCYXNlVmFsdWUoU1ZHQW5nbGUoKSk7
CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBv
YmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOworICAgIC8vIE1hcmsgb3JpZW50QXR0ciBkaXJ0
eSAtIHRoZSBuZXh0IFhNTCBET00gYWNjZXNzIG9mIHRoYXQgYXR0cmlidXRlIGtpY2tzIGluIHN5
bmNocm9uaXphdGlvbi4KKyAgICBtX29yaWVudEFuZ2xlLnNob3VsZFN5bmNocm9uaXplID0gdHJ1
ZTsKKyAgICBtX29yaWVudFR5cGUuc2hvdWxkU3luY2hyb25pemUgPSB0cnVlOworICAgIGludmFs
aWRhdGVTVkdBdHRyaWJ1dGVzKCk7CisgICAgc3ZnQXR0cmlidXRlQ2hhbmdlZChvcmllbnRBbmds
ZVByb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lKTsKIH0KIAogdm9pZCBTVkdNYXJrZXJFbGVt
ZW50OjpzZXRPcmllbnRUb0FuZ2xlKGNvbnN0IFNWR0FuZ2xlJiBhbmdsZSkKIHsKLSAgICBzZXRP
cmllbnRUeXBlQmFzZVZhbHVlKFNWR19NQVJLRVJfT1JJRU5UX0FOR0xFKTsKKyAgICBzZXRPcmll
bnRUeXBlQmFzZVZhbHVlKE1hcmtlck9yaWVudEFuZ2xlKTsKICAgICBzZXRPcmllbnRBbmdsZUJh
c2VWYWx1ZShhbmdsZSk7CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJl
cigpKQotICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOworICAgIC8vIE1hcmsg
b3JpZW50QXR0ciBkaXJ0eSAtIHRoZSBuZXh0IFhNTCBET00gYWNjZXNzIG9mIHRoYXQgYXR0cmli
dXRlIGtpY2tzIGluIHN5bmNocm9uaXphdGlvbi4KKyAgICBtX29yaWVudEFuZ2xlLnNob3VsZFN5
bmNocm9uaXplID0gdHJ1ZTsKKyAgICBtX29yaWVudFR5cGUuc2hvdWxkU3luY2hyb25pemUgPSB0
cnVlOworICAgIGludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7CisgICAgc3ZnQXR0cmlidXRlQ2hh
bmdlZChvcmllbnRBbmdsZVByb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lKTsKIH0KIAogUmVu
ZGVyT2JqZWN0KiBTVkdNYXJrZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKikKQEAgLTI5NywyNCArMjQ4LDM0IEBAIGJvb2wgU1ZHTWFya2Vy
RWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGUKICAgICAgICAgfHwgbWFya2VySGVpZ2h0KCkuaXNS
ZWxhdGl2ZSgpOwogfQogCi12b2lkIFNWR01hcmtlckVsZW1lbnQ6OnN5bmNocm9uaXplT3JpZW50
VHlwZSgpCit2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnN5bmNocm9uaXplT3JpZW50VHlwZSh2b2lk
KiBjb250ZXh0RWxlbWVudCkKIHsKLSAgICBpZiAoIW1fb3JpZW50VHlwZS5zaG91bGRTeW5jaHJv
bml6ZSkKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgIFNWR01hcmtlckVsZW1lbnQq
IG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR01hcmtlckVsZW1lbnQqPihjb250ZXh0RWxlbWVu
dCk7CisgICAgaWYgKCFvd25lclR5cGUtPm1fb3JpZW50VHlwZS5zaG91bGRTeW5jaHJvbml6ZSkK
ICAgICAgICAgcmV0dXJuOwotICAgIAorICAgCiAgICAgQXRvbWljU3RyaW5nIHZhbHVlOwotICAg
IGlmIChtX29yaWVudFR5cGUudmFsdWUgPT0gU1ZHX01BUktFUl9PUklFTlRfQVVUTykKKyAgICBp
ZiAob3duZXJUeXBlLT5tX29yaWVudFR5cGUudmFsdWUgPT0gTWFya2VyT3JpZW50QXV0bykKICAg
ICAgICAgdmFsdWUgPSAiYXV0byI7Ci0gICAgZWxzZSBpZiAobV9vcmllbnRUeXBlLnZhbHVlID09
IFNWR19NQVJLRVJfT1JJRU5UX0FOR0xFKQotICAgICAgICB2YWx1ZSA9IG9yaWVudEFuZ2xlKCku
dmFsdWVBc1N0cmluZygpOworICAgIGVsc2UgaWYgKG93bmVyVHlwZS0+bV9vcmllbnRUeXBlLnZh
bHVlID09IE1hcmtlck9yaWVudEFuZ2xlKQorICAgICAgICB2YWx1ZSA9IG93bmVyVHlwZS0+bV9v
cmllbnRBbmdsZS52YWx1ZS52YWx1ZUFzU3RyaW5nKCk7CiAKLSAgICBTVkdBbmltYXRlZFByb3Bl
cnR5U3luY2hyb25pemVyPHRydWU+OjpzeW5jaHJvbml6ZSh0aGlzLCBTVkdOYW1lczo6b3JpZW50
QXR0ciwgdmFsdWUpOworICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46
OnN5bmNocm9uaXplKG93bmVyVHlwZSwgb3JpZW50VHlwZVByb3BlcnR5SW5mbygpLT5hdHRyaWJ1
dGVOYW1lLCB2YWx1ZSk7Cit9CisKK1Bhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gU1ZH
TWFya2VyRWxlbWVudDo6bG9va3VwT3JDcmVhdGVPcmllbnRUeXBlV3JhcHBlcih2b2lkKiBjb250
ZXh0RWxlbWVudCkKK3sKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgIFNWR01hcmtl
ckVsZW1lbnQqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR01hcmtlckVsZW1lbnQqPihjb250
ZXh0RWxlbWVudCk7CisgICAgcmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3Jl
YXRlV3JhcHBlcjxTVkdNYXJrZXJFbGVtZW50LCBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVy
dHlUZWFyT2ZmPE1hcmtlck9yaWVudFR5cGU+LCBNYXJrZXJPcmllbnRUeXBlLCB0cnVlPgorICAg
ICAgICAgICAob3duZXJUeXBlLCBvcmllbnRUeXBlUHJvcGVydHlJbmZvKCksIG93bmVyVHlwZS0+
bV9vcmllbnRUeXBlLnZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0
aW9uUHJvcGVydHlUZWFyT2ZmPFNWR01hcmtlckVsZW1lbnQ6OlNWR01hcmtlck9yaWVudFR5cGU+
ID4gU1ZHTWFya2VyRWxlbWVudDo6b3JpZW50VHlwZUFuaW1hdGVkKCkKK1Bhc3NSZWZQdHI8U1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZjxNYXJrZXJPcmllbnRUeXBlPiA+IFNW
R01hcmtlckVsZW1lbnQ6Om9yaWVudFR5cGVBbmltYXRlZCgpCiB7CiAgICAgbV9vcmllbnRUeXBl
LnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKLSAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0
eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRl
YXJPZmY8U1ZHTWFya2VyT3JpZW50VHlwZT4sIFNWR01hcmtlck9yaWVudFR5cGU+KHRoaXMsIFNW
R05hbWVzOjpvcmllbnRBdHRyLCBvcmllbnRUeXBlSWRlbnRpZmllcigpLCBtX29yaWVudFR5cGUu
dmFsdWUpOworICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR0FuaW1hdGVkRW51bWVy
YXRpb25Qcm9wZXJ0eVRlYXJPZmY8TWFya2VyT3JpZW50VHlwZT4gPihsb29rdXBPckNyZWF0ZU9y
aWVudFR5cGVXcmFwcGVyKHRoaXMpKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hcmtlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFya2VyRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdNYXJrZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDIxICszNSw4MSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2VudW0gU1ZHTWFya2VyVW5pdHNUeXBlIHsKKyAgICBNYXJr
ZXJVbml0c1Vua25vd24gPSAwLAorICAgIE1hcmtlclVuaXRzVXNlclNwYWNlT25Vc2UsCisgICAg
TWFya2VyVW5pdHNTdHJva2VXaWR0aAorfTsKKworZW51bSBNYXJrZXJPcmllbnRUeXBlIHsKKyAg
ICBNYXJrZXJPcmllbnRVbmtub3duID0gMCwKKyAgICBNYXJrZXJPcmllbnRBdXRvLAorICAgIE1h
cmtlck9yaWVudEFuZ2xlCit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFp
dHM8U1ZHTWFya2VyVW5pdHNUeXBlPiB7CisgICAgc3RhdGljIFNWR01hcmtlclVuaXRzVHlwZSBo
aWdoZXN0RW51bVZhbHVlKCkgeyByZXR1cm4gTWFya2VyVW5pdHNTdHJva2VXaWR0aDsgfQorCisg
ICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhTVkdNYXJrZXJVbml0c1R5cGUgdHlwZSkKKyAgICB7
CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIE1hcmtlclVuaXRzVW5rbm93
bjoKKyAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgICAgICBjYXNlIE1hcmtl
clVuaXRzVXNlclNwYWNlT25Vc2U6CisgICAgICAgICAgICByZXR1cm4gInVzZXJTcGFjZU9uVXNl
IjsKKyAgICAgICAgY2FzZSBNYXJrZXJVbml0c1N0cm9rZVdpZHRoOgorICAgICAgICAgICAgcmV0
dXJuICJzdHJva2VXaWR0aCI7CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgfQorCisgICAgc3RhdGlj
IFNWR01hcmtlclVuaXRzVHlwZSBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCisgICAg
eworICAgICAgICBpZiAodmFsdWUgPT0gInVzZXJTcGFjZU9uVXNlIikKKyAgICAgICAgICAgIHJl
dHVybiBNYXJrZXJVbml0c1VzZXJTcGFjZU9uVXNlOworICAgICAgICBpZiAodmFsdWUgPT0gInN0
cm9rZVdpZHRoIikKKyAgICAgICAgICAgIHJldHVybiBNYXJrZXJVbml0c1N0cm9rZVdpZHRoOwor
ICAgICAgICByZXR1cm4gTWFya2VyVW5pdHNVbmtub3duOworICAgIH0KK307CisKK3RlbXBsYXRl
PD4KK3N0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxNYXJrZXJPcmllbnRUeXBlPiB7CisgICAgc3Rh
dGljIE1hcmtlck9yaWVudFR5cGUgaGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJuIE1hcmtlck9y
aWVudEFuZ2xlOyB9CisKKyAgICAvLyB0b1N0cmluZyBpcyBub3QgbmVlZGVkLCBzeW5jaHJvbml6
ZU9yaWVudFR5cGUoKSBoYW5kbGVzIHRoaXMgb24gaXRzIG93bi4KKworICAgIHN0YXRpYyBNYXJr
ZXJPcmllbnRUeXBlIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSwgU1ZHQW5nbGUmIGFu
Z2xlKQorICAgIHsKKyAgICAgICAgaWYgKHZhbHVlID09ICJhdXRvIikKKyAgICAgICAgICAgIHJl
dHVybiBNYXJrZXJPcmllbnRBdXRvOworCisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgICAgICBhbmdsZS5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlLCBlYyk7CisgICAgICAgIGlmICgh
ZWMpCisgICAgICAgICAgICByZXR1cm4gTWFya2VyT3JpZW50QW5nbGU7CisgICAgICAgIHJldHVy
biBNYXJrZXJPcmllbnRVbmtub3duOworICAgIH0KK307CisKIGNsYXNzIFNWR01hcmtlckVsZW1l
bnQgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICBw
dWJsaWMgU1ZHTGFuZ1NwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxp
YyBTVkdGaXRUb1ZpZXdCb3ggewogcHVibGljOgotICAgIGVudW0gU1ZHTWFya2VyVW5pdHNUeXBl
IHsKLSAgICAgICAgU1ZHX01BUktFUlVOSVRTX1VOS05PV04gICAgICAgICAgID0gMCwKLSAgICAg
ICAgU1ZHX01BUktFUlVOSVRTX1VTRVJTUEFDRU9OVVNFICAgID0gMSwKLSAgICAgICAgU1ZHX01B
UktFUlVOSVRTX1NUUk9LRVdJRFRIICAgICAgID0gMgorICAgIGVudW0geworICAgICAgICBTVkdf
TUFSS0VSVU5JVFNfVU5LTk9XTiA9IE1hcmtlclVuaXRzVW5rbm93biwKKyAgICAgICAgU1ZHX01B
UktFUlVOSVRTX1VTRVJTUEFDRU9OVVNFID0gTWFya2VyVW5pdHNVc2VyU3BhY2VPblVzZSwKKyAg
ICAgICAgU1ZHX01BUktFUlVOSVRTX1NUUk9LRVdJRFRIID0gTWFya2VyVW5pdHNTdHJva2VXaWR0
aAogICAgIH07CiAKLSAgICBlbnVtIFNWR01hcmtlck9yaWVudFR5cGUgewotICAgICAgICBTVkdf
TUFSS0VSX09SSUVOVF9VTktOT1dOICAgID0gMCwKLSAgICAgICAgU1ZHX01BUktFUl9PUklFTlRf
QVVUTyAgICAgICA9IDEsCi0gICAgICAgIFNWR19NQVJLRVJfT1JJRU5UX0FOR0xFICAgICAgPSAy
CisgICAgZW51bSB7CisgICAgICAgIFNWR19NQVJLRVJfT1JJRU5UX1VOS05PV04gPSBNYXJrZXJP
cmllbnRVbmtub3duLAorICAgICAgICBTVkdfTUFSS0VSX09SSUVOVF9BVVRPID0gTWFya2VyT3Jp
ZW50QXV0bywKKyAgICAgICAgU1ZHX01BUktFUl9PUklFTlRfQU5HTEUgPSBNYXJrZXJPcmllbnRB
bmdsZQogICAgIH07CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdNYXJrZXJFbGVtZW50PiBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CkBAIC01OSw2ICsxMTksOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPcmllbnRUb0F1dG8oKTsKICAgICB2b2lkIHNldE9yaWVu
dFRvQW5nbGUoY29uc3QgU1ZHQW5nbGUmKTsKIAorICAgIHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0
eUluZm8qIG9yaWVudFR5cGVQcm9wZXJ0eUluZm8oKTsKKwogcHJpdmF0ZToKICAgICBTVkdNYXJr
ZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCkBAIC02Nyw5ICsx
MjksNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5n
ZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwg
Tm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwpAQCAtNzcsODIgKzEzNiwzNCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29s
IHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIAorICAgIHZvaWQgc3luY2hyb25pemVP
cmllbnRUeXBlKCk7CisKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBvcmllbnRUeXBl
SWRlbnRpZmllcigpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG9yaWVudEFuZ2xl
SWRlbnRpZmllcigpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUmVmWCwgcmVmWCkKLSAgICBERUNMQVJFX0FOSU1B
VEVEX0xFTkdUSChSZWZZLCByZWZZKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKE1hcmtl
cldpZHRoLCBtYXJrZXJXaWR0aCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChNYXJrZXJI
ZWlnaHQsIG1hcmtlckhlaWdodCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKE1h
cmtlclVuaXRzLCBtYXJrZXJVbml0cywgU1ZHTWFya2VyVW5pdHNUeXBlKQotICAgIERFQ0xBUkVf
QU5JTUFURURfQU5HTEUoT3JpZW50QW5nbGUsIG9yaWVudEFuZ2xlKQotCi0gICAgLy8gU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotCi0gICAg
Ly8gU1ZHRml0VG9WaWV3Qm94Ci0gICAgREVDTEFSRV9BTklNQVRFRF9SRUNUKFZpZXdCb3gsIHZp
ZXdCb3gpCi0gICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZl
QXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgQkVHSU5fREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUSUVTKFNWR01hcmtlckVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfTEVOR1RIKFJlZlgsIHJlZlgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFJl
ZlksIHJlZlkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKE1hcmtlcldpZHRoLCBt
YXJrZXJXaWR0aCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoTWFya2VySGVpZ2h0
LCBtYXJrZXJIZWlnaHQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oTWFy
a2VyVW5pdHMsIG1hcmtlclVuaXRzLCBTVkdNYXJrZXJVbml0c1R5cGUpCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfQU5HTEUoT3JpZW50QW5nbGUsIG9yaWVudEFuZ2xlKQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9SRUNUKFZpZXdCb3gs
IHZpZXdCb3gpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQ
cmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgIEVORF9ERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRJRVMKIAogcHVibGljOgotICAgIC8vIEN1c3RvbSBhbmltYXRlZCBw
cm9wZXJ0eTogb3JpZW50VHlwZQotICAgIFNWR01hcmtlck9yaWVudFR5cGUmIG9yaWVudFR5cGUo
KSBjb25zdCB7IHJldHVybiBtX29yaWVudFR5cGUudmFsdWU7IH0KLSAgICBTVkdNYXJrZXJPcmll
bnRUeXBlJiBvcmllbnRUeXBlQmFzZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRUeXBl
LnZhbHVlOyB9Ci0gICAgdm9pZCBzZXRPcmllbnRUeXBlQmFzZVZhbHVlKGNvbnN0IFNWR01hcmtl
ck9yaWVudFR5cGUmIHR5cGUpIHsgbV9vcmllbnRUeXBlLnZhbHVlID0gdHlwZTsgfQotICAgIFBh
c3NSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZjxTVkdNYXJrZXJP
cmllbnRUeXBlPiA+IG9yaWVudFR5cGVBbmltYXRlZCgpOworICAgIC8vIEN1c3RvbSAnb3JpZW50
VHlwZScgcHJvcGVydHkuCisgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVPcmllbnRUeXBlKHZv
aWQqIGNvbnRleHRFbGVtZW50KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFBy
b3BlcnR5PiBsb29rdXBPckNyZWF0ZU9yaWVudFR5cGVXcmFwcGVyKHZvaWQqIGNvbnRleHRFbGVt
ZW50KTsKKyAgICBNYXJrZXJPcmllbnRUeXBlJiBvcmllbnRUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9vcmllbnRUeXBlLnZhbHVlOyB9CisgICAgTWFya2VyT3JpZW50VHlwZSYgb3JpZW50VHlwZUJh
c2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50VHlwZS52YWx1ZTsgfQorICAgIHZvaWQg
c2V0T3JpZW50VHlwZUJhc2VWYWx1ZShjb25zdCBNYXJrZXJPcmllbnRUeXBlJiB0eXBlKSB7IG1f
b3JpZW50VHlwZS52YWx1ZSA9IHR5cGU7IH0KKyAgICBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkRW51
bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY8TWFya2VyT3JpZW50VHlwZT4gPiBvcmllbnRUeXBlQW5p
bWF0ZWQoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHN5bmNocm9uaXplT3JpZW50VHlwZSgpOwot
ICAgIG11dGFibGUgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5PFNWR01hcmtlck9y
aWVudFR5cGU+IG1fb3JpZW50VHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBTVkdQcm9w
ZXJ0eVRyYWl0czxTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJVbml0c1R5cGU+IHsKLSAgICBz
dGF0aWMgU1ZHTWFya2VyRWxlbWVudDo6U1ZHTWFya2VyVW5pdHNUeXBlIGhpZ2hlc3RFbnVtVmFs
dWUoKSB7IHJldHVybiBTVkdNYXJrZXJFbGVtZW50OjpTVkdfTUFSS0VSVU5JVFNfU1RST0tFV0lE
VEg7IH0KLQotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoU1ZHTWFya2VyRWxlbWVudDo6U1ZH
TWFya2VyVW5pdHNUeXBlIHR5cGUpCi0gICAgewotICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAg
ICAgICAgY2FzZSBTVkdNYXJrZXJFbGVtZW50OjpTVkdfTUFSS0VSVU5JVFNfVU5LTk9XTjoKLSAg
ICAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgICAgICBjYXNlIFNWR01hcmtlckVs
ZW1lbnQ6OlNWR19NQVJLRVJVTklUU19VU0VSU1BBQ0VPTlVTRToKLSAgICAgICAgICAgIHJldHVy
biAidXNlclNwYWNlT25Vc2UiOwotICAgICAgICBjYXNlIFNWR01hcmtlckVsZW1lbnQ6OlNWR19N
QVJLRVJVTklUU19TVFJPS0VXSURUSDoKLSAgICAgICAgICAgIHJldHVybiAic3Ryb2tlV2lkdGgi
OwotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwotICAgIH0KLQotICAgIHN0YXRpYyBTVkdNYXJrZXJFbGVtZW50
OjpTVkdNYXJrZXJVbml0c1R5cGUgZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQotICAg
IHsKLSAgICAgICAgaWYgKHZhbHVlID09ICJ1c2VyU3BhY2VPblVzZSIpCi0gICAgICAgICAgICBy
ZXR1cm4gU1ZHTWFya2VyRWxlbWVudDo6U1ZHX01BUktFUlVOSVRTX1VTRVJTUEFDRU9OVVNFOwot
ICAgICAgICBpZiAodmFsdWUgPT0gInN0cm9rZVdpZHRoIikKLSAgICAgICAgICAgIHJldHVybiBT
VkdNYXJrZXJFbGVtZW50OjpTVkdfTUFSS0VSVU5JVFNfU1RST0tFV0lEVEg7Ci0gICAgICAgIHJl
dHVybiBTVkdNYXJrZXJFbGVtZW50OjpTVkdfTUFSS0VSVU5JVFNfVU5LTk9XTjsKLSAgICB9Ci19
OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyRWxlbWVu
dDo6U1ZHTWFya2VyT3JpZW50VHlwZT4gewotICAgIHN0YXRpYyBTVkdNYXJrZXJFbGVtZW50OjpT
VkdNYXJrZXJPcmllbnRUeXBlIGhpZ2hlc3RFbnVtVmFsdWUoKSB7IHJldHVybiBTVkdNYXJrZXJF
bGVtZW50OjpTVkdfTUFSS0VSX09SSUVOVF9BTkdMRTsgfQotCi0gICAgLy8gdG9TdHJpbmcgaXMg
bm90IG5lZWRlZCwgc3luY2hyb25pemVPcmllbnRUeXBlKCkgaGFuZGxlcyB0aGlzIG9uIGl0cyBv
d24uCi0KLSAgICBzdGF0aWMgU1ZHTWFya2VyRWxlbWVudDo6U1ZHTWFya2VyT3JpZW50VHlwZSBm
cm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUsIFNWR0FuZ2xlJiBhbmdsZSkKLSAgICB7Ci0g
ICAgICAgIGlmICh2YWx1ZSA9PSAiYXV0byIpCi0gICAgICAgICAgICByZXR1cm4gU1ZHTWFya2Vy
RWxlbWVudDo6U1ZHX01BUktFUl9PUklFTlRfQVVUTzsKLQotICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICAgICAgYW5nbGUuc2V0VmFsdWVBc1N0cmluZyh2YWx1ZSwgZWMpOwotICAg
ICAgICBpZiAoIWVjKQotICAgICAgICAgICAgcmV0dXJuIFNWR01hcmtlckVsZW1lbnQ6OlNWR19N
QVJLRVJfT1JJRU5UX0FOR0xFOwotICAgICAgICByZXR1cm4gU1ZHTWFya2VyRWxlbWVudDo6U1ZH
X01BUktFUl9PUklFTlRfVU5LTk9XTjsKLSAgICB9CisgICAgbXV0YWJsZSBTVkdTeW5jaHJvbml6
YWJsZUFuaW1hdGVkUHJvcGVydHk8TWFya2VyT3JpZW50VHlwZT4gbV9vcmllbnRUeXBlOwogfTsK
IAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCShyZXZpc2lvbiA5
MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDE0ICszNiwyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFu
aW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04o
U1ZHTWFza0VsZW1lbnQsIFNWR05hbWVzOjptYXNrVW5pdHNBdHRyLCBNYXNrVW5pdHMsIG1hc2tV
bml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKLURFRklORV9BTklNQVRFRF9FTlVNRVJB
VElPTihTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6Om1hc2tDb250ZW50VW5pdHNBdHRyLCBNYXNr
Q29udGVudFVuaXRzLCBtYXNrQ29udGVudFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBl
KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRy
LCBYLCB4KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6
OnlBdHRyLCBZLCB5KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXNrRWxlbWVudCwgU1ZH
TmFtZXM6OndpZHRoQXR0ciwgV2lkdGgsIHdpZHRoKQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChT
VkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhlaWdodCwgaGVpZ2h0KQotREVG
SU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHTWFza0VsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAg
REVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6bWFz
a1VuaXRzQXR0ciwgTWFza1VuaXRzLCBtYXNrVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5
cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR01hc2tFbGVtZW50LCBTVkdO
YW1lczo6bWFza0NvbnRlbnRVbml0c0F0dHIsIE1hc2tDb250ZW50VW5pdHMsIG1hc2tDb250ZW50
VW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX0xF
TkdUSChTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQorICAgIERFRklORV9B
TklNQVRFRF9MRU5HVEgoU1ZHTWFza0VsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKKyAg
ICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhB
dHRyLCBXaWR0aCwgd2lkdGgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXNrRWxl
bWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhlaWdodCwgaGVpZ2h0KQorICAgIERFRklORV9B
TklNQVRFRF9CT09MRUFOKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVH
SVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdNYXNrRWxlbWVudCkKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShtYXNrVW5pdHMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkobWFza0NvbnRlbnRVbml0cykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWSh4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHkp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkod2lkdGgpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaGVpZ2h0KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJf
UEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCkKKyAg
ICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJ
U1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdNYXNrRWxlbWVudDo6U1ZHTWFz
a0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQogICAgIDogU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKQEAg
LTU3LDYgKzcwLDcgQEAgaW5saW5lIFNWR01hc2tFbGVtZW50OjpTVkdNYXNrRWxlbWVudChjbwog
ICAgIC8vIFNwZWM6IElmIHRoZSB4L3kgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBl
ZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiLTEwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgLy8g
U3BlYzogSWYgdGhlIHdpZHRoL2hlaWdodCBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhl
IGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIxMjAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICBB
U1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6bWFza1RhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0
ZWRQcm9wZXJ0aWVzRm9yU1ZHTWFza0VsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdNYXNr
RWxlbWVudD4gU1ZHTWFza0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xNTEsODggKzE2NSw2IEBAIHZvaWQgU1ZHTWFz
a0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xh
eW91dCh0cnVlKTsKIH0KIAotdm9pZCBTVkdNYXNrRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0g
YW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZU1hc2tVbml0cygpOwotICAgICAgICBz
eW5jaHJvbml6ZU1hc2tDb250ZW50VW5pdHMoKTsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0g
ICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICBzeW5jaHJvbml6ZVdpZHRoKCk7Ci0gICAg
ICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVz
KHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQ
cm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlz
U3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRFbGVtZW50
OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6bWFza1VuaXRzQXR0cikgewotICAgICAg
ICBzeW5jaHJvbml6ZU1hc2tVbml0cygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjptYXNrQ29udGVudFVuaXRzQXR0cikgewotICAgICAg
ICBzeW5jaHJvbml6ZU1hc2tDb250ZW50VW5pdHMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpIHsKLSAgICAgICAgc3luY2hy
b25pemVYKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpIHsK
LSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAg
ICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0
ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdNYXNrRWxlbWVudDo6YXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgp
KTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBT
VkdNYXNrRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0
aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHU3R5bGVkTG9jYXRh
YmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExl
bmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWln
aHRBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjptYXNrVW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om1hc2tDb250ZW50VW5pdHNB
dHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLX0KLQogdm9pZCBTVkdNYXNrRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5v
ZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIFNWR1N0eWxlZEVs
ZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0
ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFza0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0Vs
ZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0Vs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMjUgKzUwLDI2IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmly
dHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAg
dmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1
YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNl
ciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAs
IGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKICAgICB2aXJ0dWFs
IGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCi0gICAgLy8gQW5pbWF0ZWQg
cHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihN
YXNrVW5pdHMsIG1hc2tVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKLSAgICBERUNM
QVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKE1hc2tDb250ZW50VW5pdHMsIG1hc2tDb250ZW50VW5p
dHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoWCwgeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQotICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdU
SChIZWlnaHQsIGhlaWdodCkKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQK
LSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwg
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHTWFza0VsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVS
QVRJT04oTWFza1VuaXRzLCBtYXNrVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oTWFza0NvbnRlbnRVbml0cywgbWFz
a0NvbnRlbnRVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgo
WSwgeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwor
CisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZl
YXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9
CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdU
ZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXpl
U3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiwxNyArMzYsNiBAQCBQYXNzUmVmUHRyPFNWR01pc3NpbmdHbHlwaEVsZW1lbnQ+IFNW
R01pCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdNaXNzaW5nR2x5cGhFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KSk7CiB9CiAKLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdNaXNz
aW5nR2x5cGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwOwotfQotCi12b2lkIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbFBhc3NlZEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkpOwot
fQotCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHX0ZPTlRTKQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDkgKzMyLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdNaXNzaW5nR2x5cGhF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCB2
b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KICAg
ICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4
dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCkBAIC00Miw1ICszOSwzIEBAIHByaXZhdGU6CiAK
ICNlbmRpZiAvLyBFTkFCTEUoU1ZHX0ZPTlRTKQogI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Niw5ICs0NiwzMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVk
IHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR1BhdGhFbGVt
ZW50LCBTVkdOYW1lczo6cGF0aExlbmd0aEF0dHIsIFBhdGhMZW5ndGgsIHBhdGhMZW5ndGgpCi1E
RUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdQYXRoRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKQorLy8gRGVmaW5lIGN1c3RvbSBhbmltYXRlZCBwcm9wZXJ0eSAn
ZCcuCitjb25zdCBTVkdQcm9wZXJ0eUluZm8qIFNWR1BhdGhFbGVtZW50OjpkUHJvcGVydHlJbmZv
KCkKK3sKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBzX3Byb3BlcnR5SW5mbyA9
IDA7CisgICAgaWYgKCFzX3Byb3BlcnR5SW5mbykgeworICAgICAgICBzX3Byb3BlcnR5SW5mbyA9
IG5ldyBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRQYXRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6OmRBdHRyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6OmRBdHRyLmxvY2FsTmFtZSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNWR1BhdGhF
bGVtZW50OjpzeW5jaHJvbml6ZUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmU1ZHUGF0aEVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIpOworICAg
IH0KKyAgICByZXR1cm4gc19wcm9wZXJ0eUluZm87Cit9CisKK0JFR0lOX0RFRklORV9BTklNQVRF
RF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdQYXRoRWxlbWVudCwg
U1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyLCBQYXRoTGVuZ3RoLCBwYXRoTGVuZ3RoKQorICAgIERF
RklORV9BTklNQVRFRF9CT09MRUFOKFNWR1BhdGhFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVH
SU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdQYXRoRWxlbWVudCkKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShkKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1B
VEVEX1BST1BFUlRZKHBhdGhMZW5ndGgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJ
U1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdQYXRoRWxlbWVudDo6U1ZHUGF0aEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAg
IDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC01
Niw2ICs3OSw3IEBAIGlubGluZSBTVkdQYXRoRWxlbWVudDo6U1ZHUGF0aEVsZW1lbnQoY28KICAg
ICAsIG1fcGF0aFNlZ0xpc3QoUGF0aFNlZ1VuYWx0ZXJlZFJvbGUpCiB7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoU1ZHTmFtZXM6OnBhdGhUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVy
dGllc0ZvclNWR1BhdGhFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHUGF0aEVsZW1lbnQ+
IFNWR1BhdGhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQpAQCAtMjM4LDcgKzI2Miw3IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICBSZW5kZXJTVkdQYXRoKiByZW5kZXJlciA9IHN0YXRp
Y19jYXN0PFJlbmRlclNWR1BhdGgqPih0aGlzLT5yZW5kZXJlcigpKTsKIAogICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6ZEF0dHIpIHsKLSAgICAgICAgaWYgKG1fYW5pbWF0YWJsZVBhdGhT
ZWdMaXN0KSB7CisgICAgICAgIGlmIChTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBXcmFwcGVy
PFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+KHRoaXMsIGRQcm9wZXJ0eUlu
Zm8oKSkpIHsKICAgICAgICAgICAgIFNWR1BhdGhTZWdMaXN0IG5ld0xpc3QoUGF0aFNlZ1VuYWx0
ZXJlZFJvbGUpOwogICAgICAgICAgICAgU1ZHUGF0aFBhcnNlckZhY3RvcnkqIGZhY3RvcnkgPSBT
VkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpOwogICAgICAgICAgICAgZmFjdG9yeS0+YnVpbGRT
VkdQYXRoU2VnTGlzdEZyb21CeXRlU3RyZWFtKG1fcGF0aEJ5dGVTdHJlYW0uZ2V0KCksIHRoaXMs
IG5ld0xpc3QsIFVuYWx0ZXJlZFBhcnNpbmcpOwpAQCAtMjUzLDgwICsyNzcsMzIgQEAgdm9pZCBT
VkdQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgICAgICBSZW5kZXJTVkdSZXNv
dXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVy
KTsKIH0KIAotdm9pZCBTVkdQYXRoRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK1Bhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4g
U1ZHUGF0aEVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIodm9pZCogY29udGV4dEVsZW1l
bnQpCiB7Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hy
b25pemVEKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUGF0aExlbmd0aCgpOwotICAgICAgICBzeW5j
aHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5
bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6ZEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVEKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBh
dGhMZW5ndGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplUGF0aExlbmd0aCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIEFTU0VS
VChjb250ZXh0RWxlbWVudCk7CisgICAgU1ZHUGF0aEVsZW1lbnQqIG93bmVyVHlwZSA9IHN0YXRp
Y19jYXN0PFNWR1BhdGhFbGVtZW50Kj4oY29udGV4dEVsZW1lbnQpOwogCi0gICAgaWYgKFNWR1Rl
c3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3lu
Y2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KKyAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSogZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0
b3J5OjpzZWxmKCk7CisgICAgZmFjdG9yeS0+YnVpbGRTVkdQYXRoU2VnTGlzdEZyb21CeXRlU3Ry
ZWFtKG93bmVyVHlwZS0+bV9wYXRoQnl0ZVN0cmVhbS5nZXQoKSwgb3duZXJUeXBlLCBvd25lclR5
cGUtPm1fcGF0aFNlZ0xpc3QudmFsdWUsIFVuYWx0ZXJlZFBhcnNpbmcpOwogCi0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9y
Q3JlYXRlV3JhcHBlcjxTVkdQYXRoRWxlbWVudCwgU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3Bl
cnR5VGVhck9mZiwgU1ZHUGF0aFNlZ0xpc3QsIHRydWU+CisgICAgICAgICAgIChvd25lclR5cGUs
IGRQcm9wZXJ0eUluZm8oKSwgb3duZXJUeXBlLT5tX3BhdGhTZWdMaXN0LnZhbHVlKTsKIH0KIAot
dm9pZCBTVkdQYXRoRWxlbWVudDo6c3luY2hyb25pemVEKCkKK3ZvaWQgU1ZHUGF0aEVsZW1lbnQ6
OnN5bmNocm9uaXplRCh2b2lkKiBjb250ZXh0RWxlbWVudCkKIHsKLSAgICBpZiAoIW1fcGF0aFNl
Z0xpc3Quc2hvdWxkU3luY2hyb25pemUpCisgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAg
ICBTVkdQYXRoRWxlbWVudCogb3duZXJUeXBlID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aEVsZW1lbnQq
Pihjb250ZXh0RWxlbWVudCk7CisgICAgaWYgKCFvd25lclR5cGUtPm1fcGF0aFNlZ0xpc3Quc2hv
dWxkU3luY2hyb25pemUpCiAgICAgICAgIHJldHVybjsKLQotICAgIFNWR0FuaW1hdGVkUHJvcGVy
dHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5bmNocm9uaXplKHRoaXMsIFNWR05hbWVzOjpkQXR0ciwg
bV9wYXRoU2VnTGlzdC52YWx1ZS52YWx1ZUFzU3RyaW5nKCkpOwotfQotCi1BdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgU1ZHUGF0aEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHUGF0aEVsZW1lbnQ6OmZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsUGFz
c2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAp
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZEF0dHIsIEFu
aW1hdGVkUGF0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjpwYXRoTGVuZ3RoQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIFNWR0FuaW1hdGVkUHJvcGVy
dHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5bmNocm9uaXplKG93bmVyVHlwZSwgZFByb3BlcnR5SW5m
bygpLT5hdHRyaWJ1dGVOYW1lLCBvd25lclR5cGUtPm1fcGF0aFNlZ0xpc3QudmFsdWUudmFsdWVB
c1N0cmluZygpKTsKIH0KIAogU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYqIFNWR1BhdGhF
bGVtZW50OjpwYXRoU2VnTGlzdCgpCiB7Ci0gICAgaWYgKCFtX2FuaW1hdGFibGVQYXRoU2VnTGlz
dCkgewotICAgICAgICBtX3BhdGhTZWdMaXN0LnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKLQot
ICAgICAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSogZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0
b3J5OjpzZWxmKCk7Ci0gICAgICAgIGZhY3RvcnktPmJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0
ZVN0cmVhbShtX3BhdGhCeXRlU3RyZWFtLmdldCgpLCB0aGlzLCBtX3BhdGhTZWdMaXN0LnZhbHVl
LCBVbmFsdGVyZWRQYXJzaW5nKTsKLQotICAgICAgICBtX2FuaW1hdGFibGVQYXRoU2VnTGlzdCA9
IFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdBbmltYXRlZFBh
dGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLCBTVkdQYXRoU2VnTGlzdD4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICh0aGlzLCBTVkdOYW1lczo6ZEF0dHIsIFNWR05hbWVzOjpkQXR0
ci5sb2NhbE5hbWUoKSwgbV9wYXRoU2VnTGlzdC52YWx1ZSk7Ci0gICAgfQotCisgICAgbV9wYXRo
U2VnTGlzdC5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7CisgICAgaWYgKCFtX2FuaW1hdGFibGVQ
YXRoU2VnTGlzdCkKKyAgICAgICAgbV9hbmltYXRhYmxlUGF0aFNlZ0xpc3QgPSBzdGF0aWNfcG9p
bnRlcl9jYXN0PFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+KGxvb2t1cE9y
Q3JlYXRlRFdyYXBwZXIodGhpcykpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdQYXRoU2Vn
TGlzdFByb3BlcnR5VGVhck9mZio+KG1fYW5pbWF0YWJsZVBhdGhTZWdMaXN0LT5iYXNlVmFsKFBh
dGhTZWdVbmFsdGVyZWRSb2xlKSk7CiB9CiAKQEAgLTMzOCwxNiArMzE0LDkgQEAgU1ZHUGF0aFNl
Z0xpc3RQcm9wZXJ0eVRlYXJPZmYqIFNWR1BhdGhFbAogCiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5
VGVhck9mZiogU1ZHUGF0aEVsZW1lbnQ6OmFuaW1hdGVkUGF0aFNlZ0xpc3QoKQogewotICAgIGlm
ICghbV9hbmltYXRhYmxlUGF0aFNlZ0xpc3QpIHsKLSAgICAgICAgbV9wYXRoU2VnTGlzdC5zaG91
bGRTeW5jaHJvbml6ZSA9IHRydWU7Ci0KLSAgICAgICAgU1ZHUGF0aFBhcnNlckZhY3RvcnkqIGZh
Y3RvcnkgPSBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpOwotICAgICAgICBmYWN0b3J5LT5i
dWlsZFNWR1BhdGhTZWdMaXN0RnJvbUJ5dGVTdHJlYW0obV9wYXRoQnl0ZVN0cmVhbS5nZXQoKSwg
dGhpcywgbV9wYXRoU2VnTGlzdC52YWx1ZSwgVW5hbHRlcmVkUGFyc2luZyk7Ci0KLSAgICAgICAg
bV9hbmltYXRhYmxlUGF0aFNlZ0xpc3QgPSBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBPckNy
ZWF0ZVdyYXBwZXI8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZiwgU1ZHUGF0
aFNlZ0xpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcywgU1ZHTmFt
ZXM6OmRBdHRyLCBTVkdOYW1lczo6ZEF0dHIubG9jYWxOYW1lKCksIG1fcGF0aFNlZ0xpc3QudmFs
dWUpOwotICAgIH0KLQorICAgIG1fcGF0aFNlZ0xpc3Quc2hvdWxkU3luY2hyb25pemUgPSB0cnVl
OworICAgIGlmICghbV9hbmltYXRhYmxlUGF0aFNlZ0xpc3QpCisgICAgICAgIG1fYW5pbWF0YWJs
ZVBhdGhTZWdMaXN0ID0gc3RhdGljX3BvaW50ZXJfY2FzdDxTVkdBbmltYXRlZFBhdGhTZWdMaXN0
UHJvcGVydHlUZWFyT2ZmPihsb29rdXBPckNyZWF0ZURXcmFwcGVyKHRoaXMpKTsKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYqPihtX2FuaW1hdGFi
bGVQYXRoU2VnTGlzdC0+YW5pbVZhbChQYXRoU2VnVW5hbHRlcmVkUm9sZSkpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsMTEg
KzkxLDEyIEBAIHB1YmxpYzoKICAgICBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZiogYW5p
bWF0ZWROb3JtYWxpemVkUGF0aFNlZ0xpc3QoKTsKIAogICAgIFNWR1BhdGhCeXRlU3RyZWFtKiBw
YXRoQnl0ZVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aEJ5dGVTdHJlYW0uZ2V0KCk7IH0K
LSAgICBTVkdBbmltYXRlZFByb3BlcnR5KiBhbmltYXRhYmxlUGF0aFNlZ0xpc3QoKSBjb25zdCB7
IHJldHVybiBtX2FuaW1hdGFibGVQYXRoU2VnTGlzdC5nZXQoKTsgfQogCiAgICAgdmlydHVhbCB2
b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0OwogICAgIHZvaWQgcGF0aFNlZ0xpc3RDaGFuZ2Vk
KFNWR1BhdGhTZWdSb2xlKTsKIAorICAgIHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIGRQ
cm9wZXJ0eUluZm8oKTsKKwogcHJpdmF0ZToKICAgICBTVkdQYXRoRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApAQCAtMTA0LDIxICsxMDUsMjQgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAg
ICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAg
ICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c01hcmtlcnMoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihQYXRoTGVuZ3RoLCBwYXRoTGVuZ3RoKQotCi0gICAg
Ly8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9P
TEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQorICAgIC8vIEN1c3RvbSAnZCcgcHJvcGVydHkKKyAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6
ZUQodm9pZCogY29udGV4dEVsZW1lbnQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0FuaW1h
dGVkUHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIodm9pZCogY29udGV4dEVsZW1lbnQp
OworCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1BhdGhFbGVtZW50
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihQYXRoTGVuZ3RoLCBwYXRoTGVuZ3Ro
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVh
dHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVu
c2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0
czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogCi0gICAgdm9pZCBzeW5jaHJv
bml6ZUQoKTsKLQotcHJvdGVjdGVkOgorcHJpdmF0ZToKICAgICBPd25QdHI8U1ZHUGF0aEJ5dGVT
dHJlYW0+IG1fcGF0aEJ5dGVTdHJlYW07CiAgICAgbXV0YWJsZSBTVkdTeW5jaHJvbml6YWJsZUFu
aW1hdGVkUHJvcGVydHk8U1ZHUGF0aFNlZ0xpc3Q+IG1fcGF0aFNlZ0xpc3Q7CiAgICAgUmVmUHRy
PFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+IG1fYW5pbWF0YWJsZVBhdGhT
ZWdMaXN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdXaXRoQ29udGV4dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnV2l0aENvbnRleHQu
aAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ1dpdGhD
b250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgICAg
ICBjYXNlIFBhdGhTZWdVbmRlZmluZWRSb2xlOgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgIGNhc2UgUGF0aFNlZ1VuYWx0ZXJlZFJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gbV9lbGVt
ZW50LT5hbmltYXRhYmxlUGF0aFNlZ0xpc3QoKTsKKyAgICAgICAgICAgIHJldHVybiBTVkdBbmlt
YXRlZFByb3BlcnR5Ojpsb29rdXBXcmFwcGVyPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0
eVRlYXJPZmY+KG1fZWxlbWVudC5nZXQoKSwgU1ZHUGF0aEVsZW1lbnQ6OmRQcm9wZXJ0eUluZm8o
KSk7CiAgICAgICAgIGNhc2UgUGF0aFNlZ05vcm1hbGl6ZWRSb2xlOgogICAgICAgICAgICAgLy8g
RklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQxMiAtIElt
cGxlbWVudCBub3JtYWxpemVkIHBhdGggc2VnbWVudCBsaXN0cyEKICAgICAgICAgICAgIHJldHVy
biAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCShyZXZp
c2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDE4ICs0MiwzNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCi1ERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCi1E
RUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6d2lkdGhB
dHRyLCBXaWR0aCwgd2lkdGgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1BhdHRlcm5FbGVt
ZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQpCi1ERUZJTkVfQU5JTUFU
RURfRU5VTUVSQVRJT04oU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjpwYXR0ZXJuVW5pdHNB
dHRyLCBQYXR0ZXJuVW5pdHMsIHBhdHRlcm5Vbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlw
ZSkKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFt
ZXM6OnBhdHRlcm5Db250ZW50VW5pdHNBdHRyLCBQYXR0ZXJuQ29udGVudFVuaXRzLCBwYXR0ZXJu
Q29udGVudFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQotREVGSU5FX0FOSU1BVEVE
X1RSQU5TRk9STV9MSVNUKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6cGF0dGVyblRyYW5z
Zm9ybUF0dHIsIFBhdHRlcm5UcmFuc2Zvcm0sIHBhdHRlcm5UcmFuc2Zvcm0pIAotREVGSU5FX0FO
SU1BVEVEX1NUUklORyhTVkdQYXR0ZXJuRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhy
ZWYsIGhyZWYpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdQYXR0ZXJuRWxlbWVudCwgU1ZH
TmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotREVGSU5FX0FOSU1BVEVEX1JFQ1Qo
U1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgVmlld0JveCwgdmlld0Jv
eCkKLURFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR1BhdHRlcm5FbGVtZW50
LCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8s
IHByZXNlcnZlQXNwZWN0UmF0aW8pIAorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMK
KyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6
eEF0dHIsIFgsIHgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdQYXR0ZXJuRWxlbWVu
dCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZH
UGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKKyAgICBE
RUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0
QXR0ciwgSGVpZ2h0LCBoZWlnaHQpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNW
R1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6cGF0dGVyblVuaXRzQXR0ciwgUGF0dGVyblVuaXRz
LCBwYXR0ZXJuVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgREVGSU5FX0FO
SU1BVEVEX0VOVU1FUkFUSU9OKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6cGF0dGVybkNv
bnRlbnRVbml0c0F0dHIsIFBhdHRlcm5Db250ZW50VW5pdHMsIHBhdHRlcm5Db250ZW50VW5pdHMs
IFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX1RSQU5TRk9S
TV9MSVNUKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIs
IFBhdHRlcm5UcmFuc2Zvcm0sIHBhdHRlcm5UcmFuc2Zvcm0pIAorICAgIERFRklORV9BTklNQVRF
RF9TVFJJTkcoU1ZHUGF0dGVybkVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBo
cmVmKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdO
YW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgREVGSU5FX0FOSU1BVEVEX1JF
Q1QoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgVmlld0JveCwgdmll
d0JveCkKKyAgICBERUZJTkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhTVkdQYXR0ZXJu
RWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBQcmVzZXJ2ZUFzcGVj
dFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSAKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVS
VElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1BhdHRlcm5FbGVt
ZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWSh3aWR0aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSho
ZWlnaHQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocGF0dGVyblVuaXRz
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHBhdHRlcm5Db250ZW50VW5p
dHMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocGF0dGVyblRyYW5zZm9y
bSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShocmVmKQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkodmlld0JveCkKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShwcmVzZXJ2ZUFzcGVjdFJhdGlvKSAKKyAgICBSRUdJ
U1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRFbGVtZW50KQorICAgIFJF
R0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVS
X0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1BhdHRlcm5FbGVtZW50OjpTVkdQYXR0
ZXJuRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQpAQCAtNjUsNiAr
ODIsNyBAQCBpbmxpbmUgU1ZHUGF0dGVybkVsZW1lbnQ6OlNWR1BhdHRlcm5FbGVtCiAgICAgLCBt
X3BhdHRlcm5Db250ZW50VW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFD
RU9OVVNFKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpwYXR0ZXJuVGFnKSk7
CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdQYXR0ZXJuRWxlbWVudCgpOwog
fQogCiBQYXNzUmVmUHRyPFNWR1BhdHRlcm5FbGVtZW50PiBTVkdQYXR0ZXJuRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAg
LTE4MCwxMTAgKzE5OCw2IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW4KICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KIAotdm9pZCBTVkdQ
YXR0ZXJuRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKLXsgICAgCi0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAg
ICAgc3luY2hyb25pemVQYXR0ZXJuVW5pdHMoKTsKLSAgICAgICAgc3luY2hyb25pemVQYXR0ZXJu
Q29udGVudFVuaXRzKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUGF0dGVyblRyYW5zZm9ybSgpOwot
ICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAg
IHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAg
ICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHN5bmNo
cm9uaXplSHJlZigpOwotICAgICAgICBTVkdGaXRUb1ZpZXdCb3g6OnN5bmNocm9uaXplUHJvcGVy
dGllcyhhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXMo
dGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplUGF0dGVyblVuaXRzKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50VW5pdHNBdHRyKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplUGF0dGVybkNvbnRlbnRVbml0cygpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwYXR0ZXJuVHJhbnNm
b3JtQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVBhdHRlcm5UcmFuc2Zvcm0oKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIp
IHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
WSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjp3aWR0aEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRml0VG9WaWV3Qm94
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaXRUb1ZpZXdCb3g6
OnN5bmNocm9uaXplUHJvcGVydGllcyhhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAg
U1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1BhdHRlcm5FbGVtZW50OjphdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVy
biBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR1BhdHRlcm5FbGVt
ZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsUGFz
c2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAp
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFu
aW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVu
Z3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnBhdHRl
cm5Vbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6cGF0dGVybkNvbnRlbnRVbml0c0F0dHIsIEFuaW1hdGVk
RW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6cGF0dGVyblRyYW5zZm9ybUF0dHIsIEFuaW1hdGVkVHJhbnNmb3JtTGlzdCk7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRl
ZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp2
aWV3Qm94QXR0ciwgQW5pbWF0ZWRSZWN0KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBBbmltYXRlZFByZXNlcnZl
QXNwZWN0UmF0aW8pOwotfQotCiB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJD
aGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgU1ZHU3R5bGVkRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwg
Y2hpbGRDb3VudERlbHRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVu
dC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCwzMyArNjAsMzAgQEAgcHJpdmF0ZToKICAgICBi
b29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1
YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVh
bCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2Vy
ID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwg
aW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBw
cm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQot
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEgoV2lkdGgsIHdpZHRoKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwg
aGVpZ2h0KQotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oUGF0dGVyblVuaXRzLCBw
YXR0ZXJuVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCi0gICAgREVDTEFSRV9BTklN
QVRFRF9FTlVNRVJBVElPTihQYXR0ZXJuQ29udGVudFVuaXRzLCBwYXR0ZXJuQ29udGVudFVuaXRz
LCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURfVFJBTlNG
T1JNX0xJU1QoUGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblRyYW5zZm9ybSkKLQotICAgIC8vIFNW
R1VSSVJlZmVyZW5jZQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCi0K
LSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRF
RF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpCi0KLSAgICAvLyBTVkdQYXR0ZXJuRWxlbWVudAotICAgIERFQ0xBUkVfQU5JTUFURURf
UkVDVChWaWV3Qm94LCB2aWV3Qm94KQotICAgIERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BF
Q1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSAKKyAgICBC
RUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUGF0dGVybkVsZW1lbnQpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfTEVOR1RIKFksIHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3
aWR0aCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oUGF0dGVyblVuaXRzLCBwYXR0ZXJu
VW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfRU5VTUVSQVRJT04oUGF0dGVybkNvbnRlbnRVbml0cywgcGF0dGVybkNvbnRlbnRVbml0cywg
U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9UUkFO
U0ZPUk1fTElTVChQYXR0ZXJuVHJhbnNmb3JtLCBwYXR0ZXJuVHJhbnNmb3JtKQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9SRUNUKFZpZXdCb3gsIHZpZXdCb3gp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFz
cGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSAKKyAgICBFTkRfREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVh
dHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVu
c2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0
czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCShyZXZp
c2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDEyICszNSwzNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfQk9PTEVB
TihTVkdQb2x5RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRy
LCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQor
Ly8gRGVmaW5lIGN1c3RvbSBhbmltYXRlZCBwcm9wZXJ0eSAncG9pbnRzJy4KK2NvbnN0IFNWR1By
b3BlcnR5SW5mbyogU1ZHUG9seUVsZW1lbnQ6OnBvaW50c1Byb3BlcnR5SW5mbygpCit7CisgICAg
c3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogc19wcm9wZXJ0eUluZm8gPSAwOworICAgIGlm
ICghc19wcm9wZXJ0eUluZm8pIHsKKyAgICAgICAgc19wcm9wZXJ0eUluZm8gPSBuZXcgU1ZHUHJv
cGVydHlJbmZvKEFuaW1hdGVkUG9pbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU1ZHTmFtZXM6OnBvaW50c0F0dHIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6cG9pbnRzQXR0ci5sb2NhbE5hbWUo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTVkdQb2x5
RWxlbWVudDo6c3luY2hyb25pemVQb2ludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmU1ZHUG9seUVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlUG9pbnRzV3Jh
cHBlcik7CisgICAgfQorICAgIHJldHVybiBzX3Byb3BlcnR5SW5mbzsKK30KKworQkVHSU5fREVG
SU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdQ
b2x5RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorRU5EX0RF
RklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHUG9seUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkocG9pbnRzKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FO
SU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVS
VElFUwogCiBTVkdQb2x5RWxlbWVudDo6U1ZHUG9seUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CisgICAgcmVnaXN0ZXJBbmltYXRlZFBy
b3BlcnRpZXNGb3JTVkdQb2x5RWxlbWVudCgpOyAgICAKIH0KIAogYm9vbCBTVkdQb2x5RWxlbWVu
dDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBA
IC02OCw4ICs5MSw4IEBAIHZvaWQgU1ZHUG9seUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXQK
ICAgICAgICAgaWYgKCFwb2ludHNMaXN0RnJvbVNWR0RhdGEobmV3TGlzdCwgdmFsdWUpKQogICAg
ICAgICAgICAgZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5yZXBvcnRFcnJvcigi
UHJvYmxlbSBwYXJzaW5nIHBvaW50cz1cIiIgKyB2YWx1ZSArICJcIiIpOwogCi0gICAgICAgIGlm
IChTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiogbGlzdCA9IG1f
YW5pbWF0YWJsZVBvaW50c0xpc3QuZ2V0KCkpCi0gICAgICAgICAgICBsaXN0LT5kZXRhY2hMaXN0
V3JhcHBlcnMobmV3TGlzdC5zaXplKCkpOworICAgICAgICBpZiAoU1ZHQW5pbWF0ZWRQcm9wZXJ0
eSogd3JhcHBlciA9IFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cFdyYXBwZXI8U1ZHQW5pbWF0
ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4gPih0aGlzLCBwb2ludHNQcm9wZXJ0
eUluZm8oKSkpCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxTVkdBbmltYXRlZExpc3RQcm9wZXJ0
eVRlYXJPZmY8U1ZHUG9pbnRMaXN0Pio+KHdyYXBwZXIpLT5kZXRhY2hMaXN0V3JhcHBlcnMobmV3
TGlzdC5zaXplKCkpOwogCiAgICAgICAgIG1fcG9pbnRzLnZhbHVlID0gbmV3TGlzdDsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTE1LDY3ICsxMzgsMzMgQEAgdm9pZCBTVkdQb2x5RWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNW
R1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQordm9pZCBTVkdQb2x5RWxlbWVudDo6c3luY2hyb25pemVQb2ludHModm9pZCogY29u
dGV4dEVsZW1lbnQpCiB7Ci0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNo
cm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotCi0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1l
KCkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0g
ICAgICAgIHN5bmNocm9uaXplUG9pbnRzKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOworICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7
CisgICAgU1ZHUG9seUVsZW1lbnQqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR1BvbHlFbGVt
ZW50Kj4oY29udGV4dEVsZW1lbnQpOworICAgIGlmICghb3duZXJUeXBlLT5tX3BvaW50cy5zaG91
bGRTeW5jaHJvbml6ZSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKLSAgICAg
ICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgZWxzZSBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0dHIpCi0gICAgICAgIHN5bmNocm9uaXplUG9p
bnRzKCk7Ci0gICAgZWxzZSBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KQotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1l
KTsKKyAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPHRydWU+OjpzeW5jaHJvbml6
ZShvd25lclR5cGUsIHBvaW50c1Byb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lLCBvd25lclR5
cGUtPm1fcG9pbnRzLnZhbHVlLnZhbHVlQXNTdHJpbmcoKSk7CiB9CiAKLUF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBTVkdQb2x5RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQorUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBTVkdQb2x5RWxlbWVudDo6bG9va3Vw
T3JDcmVhdGVQb2ludHNXcmFwcGVyKHZvaWQqIGNvbnRleHRFbGVtZW50KQogewotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcDsKLX0KLQotdm9pZCBTVkdQb2x5RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0g
ICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwb2ludHNBdHRyLCBBbmltYXRlZFBvaW50
cyk7Ci19Ci0KLXZvaWQgU1ZHUG9seUVsZW1lbnQ6OnN5bmNocm9uaXplUG9pbnRzKCkKLXsKLSAg
ICBpZiAoIW1fcG9pbnRzLnNob3VsZFN5bmNocm9uaXplKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPHRydWU+OjpzeW5jaHJvbml6ZSh0aGlz
LCBTVkdOYW1lczo6cG9pbnRzQXR0ciwgbV9wb2ludHMudmFsdWUudmFsdWVBc1N0cmluZygpKTsK
KyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgIFNWR1BvbHlFbGVtZW50KiBvd25lclR5
cGUgPSBzdGF0aWNfY2FzdDxTVkdQb2x5RWxlbWVudCo+KGNvbnRleHRFbGVtZW50KTsKKyAgICBy
ZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR1BvbHlF
bGVtZW50LCBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiwgU1ZH
UG9pbnRMaXN0LCB0cnVlPgorICAgICAgICAgICAob3duZXJUeXBlLCBwb2ludHNQcm9wZXJ0eUlu
Zm8oKSwgb3duZXJUeXBlLT5tX3BvaW50cy52YWx1ZSk7CiB9CiAKIFNWR0xpc3RQcm9wZXJ0eVRl
YXJPZmY8U1ZHUG9pbnRMaXN0PiogU1ZHUG9seUVsZW1lbnQ6OnBvaW50cygpCiB7Ci0gICAgaWYg
KCFtX2FuaW1hdGFibGVQb2ludHNMaXN0KSB7Ci0gICAgICAgIG1fcG9pbnRzLnNob3VsZFN5bmNo
cm9uaXplID0gdHJ1ZTsKLSAgICAgICAgbV9hbmltYXRhYmxlUG9pbnRzTGlzdCA9IFNWR0FuaW1h
dGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdBbmltYXRlZExpc3RQcm9wZXJ0
eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiAsIFNWR1BvaW50TGlzdD4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICh0aGlzLCBTVkdOYW1lczo6cG9pbnRzQXR0ciwgU1ZHTmFtZXM6OnBv
aW50c0F0dHIubG9jYWxOYW1lKCksIG1fcG9pbnRzLnZhbHVlKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8U1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3Q+Kj4obV9h
bmltYXRhYmxlUG9pbnRzTGlzdC0+YmFzZVZhbCgpKTsKKyAgICBtX3BvaW50cy5zaG91bGRTeW5j
aHJvbml6ZSA9IHRydWU7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0xpc3RQcm9wZXJ0eVRl
YXJPZmY8U1ZHUG9pbnRMaXN0Pio+KHN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHQW5pbWF0ZWRMaXN0
UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4gPihsb29rdXBPckNyZWF0ZVBvaW50c1dyYXBw
ZXIodGhpcykpLT5iYXNlVmFsKCkpOwogfQogCiBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1Bv
aW50TGlzdD4qIFNWR1BvbHlFbGVtZW50OjphbmltYXRlZFBvaW50cygpCiB7Ci0gICAgaWYgKCFt
X2FuaW1hdGFibGVQb2ludHNMaXN0KSB7Ci0gICAgICAgIG1fcG9pbnRzLnNob3VsZFN5bmNocm9u
aXplID0gdHJ1ZTsKLSAgICAgICAgbV9hbmltYXRhYmxlUG9pbnRzTGlzdCA9IFNWR0FuaW1hdGVk
UHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRl
YXJPZmY8U1ZHUG9pbnRMaXN0PiAsIFNWR1BvaW50TGlzdD4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICh0aGlzLCBTVkdOYW1lczo6cG9pbnRzQXR0ciwgU1ZHTmFtZXM6OnBvaW50
c0F0dHIubG9jYWxOYW1lKCksIG1fcG9pbnRzLnZhbHVlKTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8U1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3Q+Kj4obV9hbmlt
YXRhYmxlUG9pbnRzTGlzdC0+YW5pbVZhbCgpKTsKKyAgICBtX3BvaW50cy5zaG91bGRTeW5jaHJv
bml6ZSA9IHRydWU7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0xpc3RQcm9wZXJ0eVRlYXJP
ZmY8U1ZHUG9pbnRMaXN0Pio+KHN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHQW5pbWF0ZWRMaXN0UHJv
cGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4gPihsb29rdXBPckNyZWF0ZVBvaW50c1dyYXBwZXIo
dGhpcykpLT5hbmltVmFsKCkpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UG9seUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVs
ZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOCBAQCBwdWJsaWM6CiAKICAgICBT
VkdQb2ludExpc3QmIHBvaW50TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRzLnZhbHVlOyB9
CiAKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBwb2ludHNQcm9wZXJ0eUluZm8o
KTsKKwogcHJvdGVjdGVkOgogICAgIFNWR1BvbHlFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCopOwogCkBAIC01MSwyMCArNTMsMjQgQEAgcHJpdmF0ZToKICAgICBib29sIGlz
U3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7IAogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVh
bCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNYXJrZXJzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5J
TUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKQotCi0gICAgdm9pZCBzeW5jaHJvbml6ZVBvaW50cygpOworICAgIC8vIEN1c3Rv
bSAncG9pbnRzJyBwcm9wZXJ0eQorICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXplUG9pbnRzKHZv
aWQqIGNvbnRleHRFbGVtZW50KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFBy
b3BlcnR5PiBsb29rdXBPckNyZWF0ZVBvaW50c1dyYXBwZXIodm9pZCogY29udGV4dEVsZW1lbnQp
OworCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1BvbHlFbGVtZW50
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVh
dHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVu
c2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0
czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAg
bXV0YWJsZSBTVkdTeW5jaHJvbml6YWJsZUFuaW1hdGVkUHJvcGVydHk8U1ZHUG9pbnRMaXN0PiBt
X3BvaW50czsKLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1Bv
aW50TGlzdD4gPiBtX2FuaW1hdGFibGVQb2ludHNMaXN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50
RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDEyICs0MCwyMiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRp
b25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZH
TmFtZXM6OmN4QXR0ciwgQ3gsIGN4KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpjeUF0dHIsIEN5LCBjeSkKLURFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6ckF0dHIsIFIsIHIp
Ci1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFt
ZXM6OmZ4QXR0ciwgRngsIGZ4KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQsIFNWR05hbWVzOjpmeUF0dHIsIEZ5LCBmeSkKK0JFR0lOX0RFRklORV9BTklN
QVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQsIFNWR05hbWVzOjpjeEF0dHIsIEN4LCBjeCkKKyAgICBERUZJTkVfQU5JTUFU
RURfTEVOR1RIKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmN5QXR0ciwgQ3ks
IGN5KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
LCBTVkdOYW1lczo6ckF0dHIsIFIsIHIpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpmeEF0dHIsIEZ4LCBmeCkKKyAgICBERUZJ
TkVfQU5JTUFURURfTEVOR1RIKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmZ5
QXR0ciwgRnksIGZ5KQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JF
R0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50KQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGN4KQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKGN5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKHIpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZngpCisgICAgUkVH
SVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZnkpCisgICAgUkVHSVNURVJfUEFSRU5UX0FO
SU1BVEVEX1BST1BFUlRJRVMoU1ZHR3JhZGllbnRFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1B
VEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6U1ZHUmFk
aWFsR3JhZGllbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKICAgICA6IFNWR0dyYWRpZW50RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
QEAgLTU3LDYgKzY3LDcgQEAgaW5saW5lIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6U1ZHUmFk
aQogewogICAgIC8vIFNwZWM6IElmIHRoZSBjeC9jeS9yIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lm
aWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjUwJSIgd2VyZSBzcGVjaWZpZWQu
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnJhZGlhbEdyYWRpZW50VGFnKSk7Cisg
ICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQo
KTsKIH0KIAogUGFzc1JlZlB0cjxTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ+IFNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKQEAgLTEyOSw2OSArMTQwLDYgQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQ6OnN2Z0F0dHJpYgogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUp
OwogfQogCi12b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0g
YW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUN4KCk7Ci0gICAgICAgIHN5bmNocm9u
aXplQ3koKTsKLSAgICAgICAgc3luY2hyb25pemVGeCgpOwotICAgICAgICBzeW5jaHJvbml6ZUZ5
KCk7Ci0gICAgICAgIHN5bmNocm9uaXplUigpOwotICAgICAgICBTVkdHcmFkaWVudEVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZH
R3JhZGllbnRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6Y3hBdHRyKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplQ3goKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6Y3lBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
Q3koKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6ZnhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRngoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZnlBdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplRnkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6ckF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVSKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQot
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6YXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgp
KTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBT
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
Ci17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR0dy
YWRpZW50RWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OmN4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Y3lBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyQXR0ciwgQW5pbWF0ZWRM
ZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZnhB
dHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjpmeUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLX0KLQogUmVuZGVyT2JqZWN0KiBT
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVu
YSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNv
dXJjZVJhZGlhbEdyYWRpZW50KHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDIwICs0MiwxOCBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmpl
Y3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIHZp
cnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKLSAgICAvLyBBbmlt
YXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChD
eCwgY3gpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3ksIGN5KQotICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKFIsIHIpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoRngsIGZ4
KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEZ5LCBmeSkKKyAgICBCRUdJTl9ERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50KQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeCwgY3gpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIKEN5LCBjeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUiwgcikKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoRngsIGZ4KQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX0xFTkdUSChGeSwgZnkpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElF
UwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1JlY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UmVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE0ICszMiwyNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1E
RUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgs
IHgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6eUF0
dHIsIFksIHkpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1l
czo6d2lkdGhBdHRyLCBXaWR0aCwgd2lkdGgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1Jl
Y3RFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQpCi1ERUZJTkVf
QU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6cnhBdHRyLCBSeCwgcngp
Ci1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6cnlBdHRy
LCBSeSwgcnkpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdSZWN0RWxlbWVudCwgU1ZHTmFt
ZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BS
T1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdO
YW1lczo6eEF0dHIsIFgsIHgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdSZWN0RWxl
bWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgo
U1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKKyAgICBE
RUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0
ciwgSGVpZ2h0LCBoZWlnaHQpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdSZWN0RWxl
bWVudCwgU1ZHTmFtZXM6OnJ4QXR0ciwgUngsIHJ4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5H
VEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjpyeUF0dHIsIFJ5LCByeSkKKyAgICBERUZJTkVf
QU5JTUFURURfQk9PTEVBTihTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JF
R0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUmVjdEVsZW1lbnQpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWSh5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHdpZHRoKQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGhlaWdodCkKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShyeCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShyeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVO
VF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BS
T1BFUlRJRVMKIAogaW5saW5lIFNWR1JlY3RFbGVtZW50OjpTVkdSZWN0RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTUxLDYgKzY0LDcg
QEAgaW5saW5lIFNWR1JlY3RFbGVtZW50OjpTVkdSZWN0RWxlbWVudChjbwogICAgICwgbV9yeShM
ZW5ndGhNb2RlSGVpZ2h0KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpyZWN0
VGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdSZWN0RWxlbWVudCgp
OwogfQogCiBQYXNzUmVmUHRyPFNWR1JlY3RFbGVtZW50PiBTVkdSZWN0RWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTE3
MCw4OCArMTg0LDYgQEAgdm9pZCBTVkdSZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR1JlY3RFbGVtZW50OjpzeW5j
aHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlm
IChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAg
ICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAg
ICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAgICBzeW5jaHJvbml6ZVJ4KCk7Ci0gICAgICAg
IHN5bmNocm9uaXplUnkoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywg
YXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6
ZVkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6d2lkdGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0
cikgewotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpyeEF0dHIpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVSeCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpyeUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVSeSgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0
czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgU1ZHUmVjdEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHUmVjdEVsZW1lbnQ6OmZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsUGFz
c2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAp
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFu
aW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVu
Z3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnJ4QXR0
ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6cnlBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci19Ci0KIHZvaWQgU1ZHUmVjdEVsZW1l
bnQ6OnRvUGF0aERhdGEoUGF0aCYgcGF0aCkgY29uc3QKIHsKICAgICBBU1NFUlQocGF0aC5pc0Vt
cHR5KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgJKHJldmlzaW9uIDkw
NDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDI0ICs0NywyNSBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCB2
b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNS
ZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xh
cmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCi0gICAgREVDTEFSRV9B
TklNQVRFRF9MRU5HVEgoWSwgeSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwg
d2lkdGgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCi0gICAg
REVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUngsIHJ4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVO
R1RIKFJ5LCByeSkKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHUmVjdEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEgoSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFJ4
LCByeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUnksIHJ5KQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVT
CisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVk
RmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNW
R1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25p
emVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU2LDE0ICs1NiwyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHBy
b3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1NWR0VsZW1lbnQs
IFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHU1ZHRWxl
bWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdT
VkdFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0aCwgd2lkdGgpCi1ERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQs
IGhlaWdodCkKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVz
OjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKLURFRklORV9BTklNQVRFRF9QUkVTRVJWRUFT
UEVDVFJBVElPKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0
ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKLURFRklORV9BTklN
QVRFRF9SRUNUKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgVmlld0JveCwg
dmlld0JveCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FO
SU1BVEVEX0xFTkdUSChTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCisgICAg
REVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFks
IHkpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6
d2lkdGhBdHRyLCBXaWR0aCwgd2lkdGgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdT
VkdFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQpCisgICAgREVG
SU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKQorICAgIERFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElP
KFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgUHJlc2Vy
dmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICBERUZJTkVfQU5JTUFURURf
UkVDVChTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6dmlld0JveEF0dHIsIFZpZXdCb3gsIHZpZXdC
b3gpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdTVkdFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1B
VEVEX1BST1BFUlRZKHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeSkK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh3aWR0aCkKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShoZWlnaHQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWSh2aWV3Qm94KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1B
VEVEX1BST1BFUlRZKHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgUkVHSVNURVJfUEFSRU5UX0FO
SU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCkKKyAgICBSRUdJU1RF
Ul9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklN
QVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdTVkdFbGVtZW50OjpTVkdTVkdFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdTdHls
ZWRMb2NhdGFibGVFbGVtZW50KHRhZ05hbWUsIGRvYykKQEAgLTc3LDYgKzkwLDcgQEAgaW5saW5l
IFNWR1NWR0VsZW1lbnQ6OlNWR1NWR0VsZW1lbnQoY29ucwogICAgICwgbV9oYXNTZXRDb250YWlu
ZXJTaXplKGZhbHNlKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpzdmdUYWcp
KTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1NWR0VsZW1lbnQoKTsKICAg
ICBkb2MtPnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOwogfQog
CkBAIC0zNTUsNTUgKzM2OSw2IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZCgKICAgICBTVkdTdHlsZWRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1l
KTsKIH0KIAotdm9pZCBTVkdTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgp
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAg
ICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwot
ICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAg
U1ZHRml0VG9WaWV3Qm94OjpzeW5jaHJvbml6ZVByb3BlcnRpZXMoYXR0ck5hbWUpOwotICAgICAg
ICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAg
ICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRy
KQotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6eUF0dHIpCi0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgIGVsc2UgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsK
LSAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAg
c3luY2hyb25pemVIZWlnaHQoKTsKLSAgICBlbHNlIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKLSAgICAgICAgc3luY2hyb25pemVF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgZWxzZSBpZiAoU1ZHRml0VG9WaWV3Qm94
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgCi0gICAgICAgIFNWR0ZpdFRvVmlld0JveDo6
c3luY2hyb25pemVQcm9wZXJ0aWVzKGF0dHJOYW1lKTsKLSAgICBlbHNlIGlmIChTVkdUZXN0czo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgIGVsc2UKLSAgICAgICAgU1ZHU3R5bGVk
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci19Ci0KLUF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBTVkdTVkdFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR1NWR0VsZW1lbnQ6OmZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OnhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBB
bmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp2aWV3Qm94QXR0ciwgQW5pbWF0ZWRSZWN0KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBBbmltYXRlZFBy
ZXNlcnZlQXNwZWN0UmF0aW8pOwotfQotCiB1bnNpZ25lZCBTVkdTVkdFbGVtZW50OjpzdXNwZW5k
UmVkcmF3KHVuc2lnbmVkIC8qIG1heFdhaXRNaWxsaXNlY29uZHMgKi8pCiB7CiAgICAgLy8gRklY
TUU6IEltcGxlbWVudCBtZSAoc2VlIGJ1ZyAxMTI3NSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NW
R0VsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZH
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsMjcgKzE0NSwyNiBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZp
cnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFs
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIAog
ICAgIHZvaWQgaW5oZXJpdFZpZXdBdHRyaWJ1dGVzKFNWR1ZpZXdFbGVtZW50Kik7CiAKLSAgICAv
LyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSChYLCB4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCi0gICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVO
R1RIKEhlaWdodCwgaGVpZ2h0KQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotCi0gICAgLy8gU1ZHRml0VG9WaWV3Qm94Ci0g
ICAgREVDTEFSRV9BTklNQVRFRF9SRUNUKFZpZXdCb3gsIHZpZXdCb3gpCi0gICAgREVDTEFSRV9B
TklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZl
QXNwZWN0UmF0aW8pCi0gCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R1NWR0VsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgo
SGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX1JFQ1QoVmlld0JveCwgdmlld0JveCkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZl
QXNwZWN0UmF0aW8pCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisgICAg
Ly8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVz
KCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAg
dmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6
c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVt
TGFuZ3VhZ2UodGhpcyk7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudFdpbGxCZWNvbWVJ
bmFjdGl2ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5
MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsMjEgKzI4LDI5IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiU1ZHQW5p
bWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFu
Y2UuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVu
ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZp
bml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdTY3JpcHRFbGVtZW50LCBYTGlua05h
bWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1Nj
cmlwdEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lO
X0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhT
VkdTY3JpcHRFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKKyAgICBE
RUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdTY3JpcHRFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKwor
QkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTY3JpcHRFbGVtZW50KQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGhyZWYpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9SRUdJ
U1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdTY3JpcHRFbGVtZW50OjpTVkdT
Y3JpcHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCwgYm9vbCB3YXNJbnNlcnRlZEJ5UGFyc2VyLCBib29sIGFscmVhZHlTdGFydGVkKQogICAg
IDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIFNjcmlwdEVsZW1lbnQodGhp
cywgd2FzSW5zZXJ0ZWRCeVBhcnNlciwgYWxyZWFkeVN0YXJ0ZWQpCiB7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoU1ZHTmFtZXM6OnNjcmlwdFRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9w
ZXJ0aWVzRm9yU1ZHU2NyaXB0RWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR1NjcmlwdEVs
ZW1lbnQ+IFNWR1NjcmlwdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgaW5zZXJ0ZWRCeVBhcnNlcikKQEAgLTEyMCw0
NCArMTI4LDYgQEAgdm9pZCBTVkdTY3JpcHRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZwogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OnN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYg
KGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICBT
VkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0g
ICAgICAgIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfSAgIAotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAg
ICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1Nj
cmlwdEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXA7Ci19Ci0KLXZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKLXsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpLnNldChYTGlua05h
bWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotfQotCiB2b2lkIFNWR1NjcmlwdEVsZW1l
bnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsKICAgICBTVkdFbGVtZW50OjppbnNlcnRlZElu
dG9Eb2N1bWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCShy
ZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDkgKzUxLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJl
Zm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0
YSA9IDApOwogCiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1
dGUoQXR0cmlidXRlKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGls
ZHJlbigpOwogCkBAIC03NSwxMyArNzIsMTAgQEAgcHJpdmF0ZToKIAogICAgIFBhc3NSZWZQdHI8
RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpIGNvbnN0
OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0KLSAgICAvLyBTVkdV
UklSZWZlcmVuY2UKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQotCi0g
ICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURf
Qk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTY3JpcHRFbGVt
ZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTCiAKICAgICBTdHJpbmcgbV90eXBlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTdG9wRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
b3BFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3RvcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNCArMzMsMjEgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVG
SU5FX0FOSU1BVEVEX05VTUJFUihTVkdTdG9wRWxlbWVudCwgU1ZHTmFtZXM6Om9mZnNldEF0dHIs
IE9mZnNldCwgb2Zmc2V0KQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBE
RUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR1N0b3BFbGVtZW50LCBTVkdOYW1lczo6b2Zmc2V0QXR0
ciwgT2Zmc2V0LCBvZmZzZXQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVH
SU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdG9wRWxlbWVudCkKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShvZmZzZXQpCisgICAgUkVHSVNURVJfUEFSRU5U
X0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkRWxlbWVudCkKK0VORF9SRUdJU1RFUl9BTklN
QVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdTdG9wRWxlbWVudDo6U1ZHU3RvcEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDog
U1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fb2Zmc2V0KDApCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN0b3BUYWcpKTsKKyAgICByZWdpc3Rl
ckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1N0b3BFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8
U1ZHU3RvcEVsZW1lbnQ+IFNWR1N0b3BFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtOTUsNDEgKzEwMiw2IEBAIHZvaWQg
U1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIH0KIAotdm9pZCBTVkdTdG9wRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5h
bWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZU9mZnNldCgpOwotICAgICAgICBTVkdTdHlsZWRF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAg
ICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpvZmZz
ZXRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplT2Zmc2V0KCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIFNWR1N0b3BFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
Ci17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
c19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR1N0b3BFbGVtZW50OjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6b2Zmc2V0QXR0ciwgQW5pbWF0ZWRMZW5n
dGgpOwotfQotCiBSZW5kZXJPYmplY3QqIFNWR1N0b3BFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVu
YSkgUmVuZGVyU1ZHR3JhZGllbnRTdG9wKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N0b3BFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
b3BFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
b3BFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDE2ICszOSwxNCBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAg
dmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwot
ICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2
aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIGlzR3JhZGllbnRTdG9wKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRl
Y2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKE9mZnNldCwgb2Zmc2V0KQor
ICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdG9wRWxlbWVudCkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoT2Zmc2V0LCBvZmZzZXQpCisgICAgRU5EX0RF
Q0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDExICs0NCwxNyBAQAogI2luY2x1ZGUgIlNWR1VzZUVsZW1lbnQuaCIKICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFu
aW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR1N0
eWxlZEVsZW1lbnQsIEhUTUxOYW1lczo6Y2xhc3NBdHRyLCBDbGFzc05hbWUsIGNsYXNzTmFtZSkK
K0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NU
UklORyhTVkdTdHlsZWRFbGVtZW50LCBIVE1MTmFtZXM6OmNsYXNzQXR0ciwgQ2xhc3NOYW1lLCBj
bGFzc05hbWUpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNU
RVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRFbGVtZW50KQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKGNsYXNzTmFtZSkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9Q
Uk9QRVJUSUVTCiAKIHVzaW5nIG5hbWVzcGFjZSBTVkdOYW1lczsKIApAQCAtNjIsNiArNjgsNyBA
QCB2b2lkIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkoSGFzaE1hcDxBCiBTVkdTdHlsZWRFbGVt
ZW50OjpTVkdTdHlsZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7Cisg
ICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdTdHlsZWRFbGVtZW50KCk7CiB9CiAK
IFNWR1N0eWxlZEVsZW1lbnQ6On5TVkdTdHlsZWRFbGVtZW50KCkKQEAgLTIwNSwxMCArMjEyLDEx
IEBAIGludCBTVkdTdHlsZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1YKICAgICByZXR1cm4g
cHJvcGVydHlOYW1lVG9JZE1hcC0+Z2V0KGF0dHJOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9
CiAKK3R5cGVkZWYgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZFByb3BlcnR5VHlwZT4g
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7CiBzdGF0aWMgaW5saW5lIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBjc3NQcm9wZXJ0eVRvVHlwZU1hcCgpCiB7CiAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19jc3NQcm9wZXJ0eU1hcCwgKCkp
OwotICAgIAorCiAgICAgaWYgKCFzX2Nzc1Byb3BlcnR5TWFwLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIHNfY3NzUHJvcGVydHlNYXA7CiAKQEAgLTI2OSwxMiArMjc3LDE1IEBAIHN0YXRpYyBp
bmxpbmUgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAKICAgICByZXR1cm4gc19jc3NQcm9wZXJ0
eU1hcDsKIH0KIAotQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIFNWR1N0eWxlZEVsZW1lbnQ6OmFuaW1h
dGVkUHJvcGVydHlUeXBlRm9yQ1NTUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCit2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBWZWN0b3I8QW5pbWF0ZWRQcm9wZXJ0
eVR5cGU+JiBwcm9wZXJ0eVR5cGVzKQogeworICAgIFNWR0VsZW1lbnQ6OmFuaW1hdGVkUHJvcGVy
dHlUeXBlRm9yQXR0cmlidXRlKGF0dHJOYW1lLCBwcm9wZXJ0eVR5cGVzKTsKKyAgICBpZiAoIXBy
b3BlcnR5VHlwZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKICAgICBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgY3NzUHJvcGVydHlUeXBlTWFwID0gY3NzUHJvcGVydHlUb1R5cGVN
YXAoKTsKICAgICBpZiAoY3NzUHJvcGVydHlUeXBlTWFwLmNvbnRhaW5zKGF0dHJOYW1lKSkKLSAg
ICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5VHlwZU1hcC5nZXQoYXR0ck5hbWUpOwotICAgIHJldHVy
biBBbmltYXRlZFVua25vd247CisgICAgICAgIHByb3BlcnR5VHlwZXMuYXBwZW5kKGNzc1Byb3Bl
cnR5VHlwZU1hcC5nZXQoYXR0ck5hbWUpKTsKIH0KIAogYm9vbCBTVkdTdHlsZWRFbGVtZW50Ojpp
c0FuaW1hdGFibGVDU1NQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKQEAg
LTI4MiwxMSArMjkzLDYgQEAgYm9vbCBTVkdTdHlsZWRFbGVtZW50Ojppc0FuaW1hdGFibGVDU1NQ
cgogICAgIHJldHVybiBjc3NQcm9wZXJ0eVRvVHlwZU1hcCgpLmNvbnRhaW5zKGF0dHJOYW1lKTsK
IH0KIAotdm9pZCBTVkdTdHlsZWRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKQotewotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChIVE1MTmFtZXM6
OmNsYXNzQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotfQotCiBib29sIFNWR1N0eWxlZEVsZW1lbnQ6
Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0
ZUVudHJ5JiByZXN1bHQpIGNvbnN0CiB7CiAgICAgaWYgKFNWR1N0eWxlZEVsZW1lbnQ6OmNzc1By
b3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHJOYW1lKSA+IDApIHsKQEAgLTM1MSwxMiAr
MzU3LDYgQEAgdm9pZCBTVkdTdHlsZWRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZwogICAgIH0K
IH0KIAotdm9pZCBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgp
IHx8IGF0dHJOYW1lID09IEhUTUxOYW1lczo6Y2xhc3NBdHRyKQotICAgICAgICBzeW5jaHJvbml6
ZUNsYXNzTmFtZSgpOwotfQotCiB2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OmF0dGFjaCgpCiB7CiAg
ICAgU1ZHRWxlbWVudDo6YXR0YWNoKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5
bGVkRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRF
bGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxl
ZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBoYXNQZW5kaW5nUmVzb3VyY2VzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRIYXNQZW5kaW5n
UmVzb3VyY2VzKGJvb2wpOwogCi0gICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIGFuaW1hdGVkUHJv
cGVydHlUeXBlRm9yQ1NTUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1
YWwgdm9pZCBhbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgVmVjdG9yPEFuaW1hdGVkUHJvcGVydHlUeXBlPiYpOwogICAgIHN0YXRpYyBib29sIGlz
QW5pbWF0YWJsZUNTU1Byb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIHZpcnR1
YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtKFNWR0xvY2F0
YWJsZTo6Q1RNU2NvcGUpIGNvbnN0OwpAQCAtNjIsMTUgKzYyLDExIEBAIHB1YmxpYzoKIAogcHJv
dGVjdGVkOiAKICAgICBTVkdTdHlsZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOwotCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJl
bmRlcmluZ0NvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotCi0gICAgdm9p
ZCBmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZv
aWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKQEAgLTk0LDggKzkwLDkgQEAgcHJpdmF0ZToKIAog
ICAgIEhhc2hTZXQ8U1ZHU3R5bGVkRWxlbWVudCo+IG1fZWxlbWVudHNXaXRoUmVsYXRpdmVMZW5n
dGhzOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFS
RV9BTklNQVRFRF9TVFJJTkcoQ2xhc3NOYW1lLCBjbGFzc05hbWUpCisgICAgQkVHSU5fREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfU1RSSU5HKENsYXNzTmFtZSwgY2xhc3NOYW1lKQorICAgIEVORF9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMiArMzIsMTkgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9u
cwotREVGSU5FX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50LCBTVkdOYW1lczo6dHJhbnNmb3JtQXR0ciwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCitC
RUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9UUkFO
U0ZPUk1fTElTVChTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwgU1ZHTmFtZXM6OnRyYW5z
Zm9ybUF0dHIsIFRyYW5zZm9ybSwgdHJhbnNmb3JtKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9Q
RVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
dHJhbnNmb3JtKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0
eWxlZExvY2F0YWJsZUVsZW1lbnQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwog
CiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQog
ICAgIDogU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKKyAg
ICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50KCk7CiB9CiAKIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojp+U1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQoKQpAQCAtMTE5LDI3ICsxMjYsNiBAQCB2b2lkIFNWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50OjpzdmdBCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXZvaWQgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFu
eVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVUcmFuc2Zvcm0oKTsKLSAgICAgICAgU1ZH
U3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0
dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6dHJhbnNmb3JtQXR0cikgewotICAgICAgICBzeW5jaHJvbml6
ZVRyYW5zZm9ybSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KIFNWR0VsZW1lbnQqIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
OjpuZWFyZXN0Vmlld3BvcnRFbGVtZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHVHJhbnNm
b3JtYWJsZTo6bmVhcmVzdFZpZXdwb3J0RWxlbWVudCh0aGlzKTsKQEAgLTE2MSwxMyArMTQ3LDYg
QEAgUmVuZGVyT2JqZWN0KiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbQogICAgIHJldHVybiBu
ZXcgKGFyZW5hKSBSZW5kZXJTVkdQYXRoKHRoaXMpOwogfQogCi12b2lkIFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKQotewot
ICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgCi0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLCBBbmltYXRlZFRyYW5zZm9y
bUxpc3QpOwotfQotCiB2b2lkIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojp0b0NsaXBQ
YXRoKFBhdGgmIHBhdGgpIGNvbnN0CiB7CiAgICAgdG9QYXRoRGF0YShwYXRoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5o
CShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxMSArNTgsMTAgQEAgcHJvdGVj
dGVkOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7
Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwotICAgIHZvaWQgZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNs
YXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFRyYW5zZm9ybSwg
dHJhbnNmb3JtKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9UUkFOU0ZP
Uk1fTElTVChUcmFuc2Zvcm0sIHRyYW5zZm9ybSkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUSUVTCiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzU3R5bGVkVHJhbnNmb3Jt
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTd2l0Y2hFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3dpdGNoRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N3aXRjaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMyArMjgsMjEgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9u
cwotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHU3dpdGNoRWxlbWVudCwgU1ZHTmFtZXM6OmV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJ
RVMKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdTd2l0Y2hFbGVtZW50LCBTVkdOYW1l
czo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTd2l0Y2hFbGVt
ZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwog
CiBpbmxpbmUgU1ZHU3dpdGNoRWxlbWVudDo6U1ZHU3dpdGNoRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZShTVkdOYW1lczo6c3dpdGNoVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRp
ZXNGb3JTVkdTd2l0Y2hFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHU3dpdGNoRWxlbWVu
dD4gU1ZHU3dpdGNoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTY1LDMzICs3Myw2IEBAIFJlbmRlck9iamVjdCogU1ZH
U3dpdGNoRWxlbWVudDo6Y3JlYXRlUmUKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZH
VHJhbnNmb3JtYWJsZUNvbnRhaW5lcih0aGlzKTsKIH0KIAotdm9pZCBTVkdTd2l0Y2hFbGVtZW50
OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewot
ICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLQotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBTVkdUZXN0czo6
c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKCk7Ci0gICAgZWxzZSBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKQotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJO
YW1lKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1N3aXRjaEVsZW1lbnQ6
OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZv
aWQgU1ZHU3dpdGNoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsK
LSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkpOwotfQotCiB9CiAK
ICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRj
aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxl
bWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDE1ICs0NiwxNSBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJl
bmRlclN0eWxlKik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwotICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3Bl
cnR5IGRlY2xhcmF0aW9ucworICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhT
VkdTd2l0Y2hFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRf
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgLy8gU1ZHVGVzdHMKKyAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6
c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5
bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1
aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0
ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7
IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU3ltYm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxNSArMjksMjQg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0
aW9ucwotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHU3ltYm9sRWxlbWVudCwgU1ZHTmFtZXM6
OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotREVGSU5FX0FOSU1BVEVEX1BSRVNFUlZFQVNQ
RUNUUkFUSU8oU1ZHU3ltYm9sRWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9B
dHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSAKLURFRklORV9B
TklNQVRFRF9SRUNUKFNWR1N5bWJvbEVsZW1lbnQsIFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgVmll
d0JveCwgdmlld0JveCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVG
SU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHU3ltYm9sRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKQorICAgIERFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJB
VElPKFNWR1N5bWJvbEVsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwg
UHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykgCisgICAgREVGSU5FX0FO
SU1BVEVEX1JFQ1QoU1ZHU3ltYm9sRWxlbWVudCwgU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBWaWV3
Qm94LCB2aWV3Qm94KQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5f
UkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTeW1ib2xFbGVtZW50KQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkodmlld0JveCkKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShwcmVzZXJ2ZUFzcGVjdFJhdGlvKSAKKyAgICBSRUdJ
U1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRFbGVtZW50KQorRU5EX1JF
R0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1N5bWJvbEVsZW1lbnQ6OlNW
R1N5bWJvbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6c3ltYm9sVGFnKSk7CisgICAgcmVnaXN0ZXJB
bmltYXRlZFByb3BlcnRpZXNGb3JTVkdTeW1ib2xFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8
U1ZHU3ltYm9sRWxlbWVudD4gU1ZHU3ltYm9sRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTg3LDQ4ICs5Niw2IEBAIHZv
aWQgU1ZHU3ltYm9sRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmcKICAgICAgICAgdXBkYXRlUmVs
YXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKIH0KIAotdm9pZCBTVkdTeW1ib2xFbGVtZW50Ojpz
eW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAg
IGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBTVkdGaXRUb1ZpZXdCb3g6OnN5bmNocm9u
aXplUHJvcGVydGllcyhhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNo
cm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVk
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRml0VG9W
aWV3Qm94Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaXRUb1Zp
ZXdCb3g6OnN5bmNocm9uaXplUHJvcGVydGllcyhhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIFNWR1N5bWJvbEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHU3ltYm9sRWxlbWVudDo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBBbmltYXRl
ZFJlY3QpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cHJl
c2VydmVBc3BlY3RSYXRpb0F0dHIsIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7Ci19Ci0K
IGJvb2wgU1ZHU3ltYm9sRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShTVkdOYW1lczo6dmlld0JveEF0dHIpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDIxICs0NywxNSBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0K
IAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKLSAg
ICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLQotICAgIC8vIFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKLSAKLSAgICAvLyBT
VkdGaXRUb1ZpZXdCb3gKLSAgICBERUNMQVJFX0FOSU1BVEVEX1JFQ1QoVmlld0JveCwgdmlld0Jv
eCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oUHJlc2VydmVBc3Bl
Y3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykgCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR1N5bWJvbEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
Qk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1JFQ1QoVmlld0JveCwgdmlld0JveCkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0
UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pIAorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RSZWZFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMyArMzcsMjAg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0
aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdUUmVmRWxlbWVudCwgWExpbmtOYW1lczo6
aHJlZkF0dHIsIEhyZWYsIGhyZWYpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUwor
ICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHVFJlZkVsZW1lbnQsIFhMaW5rTmFtZXM6Omhy
ZWZBdHRyLCBIcmVmLCBocmVmKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JF
R0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVFJlZkVsZW1lbnQpCisgICAgUkVH
SVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAgICBSRUdJU1RFUl9QQVJFTlRf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KQorRU5EX1JFR0lT
VEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1RSZWZFbGVtZW50OjpTVkdUUmVm
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CiAgICAgOiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjp0cmVmVGFnKSk7CisgICAgcmVnaXN0ZXJB
bmltYXRlZFByb3BlcnRpZXNGb3JTVkdUUmVmRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNW
R1RSZWZFbGVtZW50PiBTVkdUUmVmRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTE2NCw0MSArMTcxLDYgQEAgdm9pZCBT
VkdUUmVmRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCi12b2lkIFNWR1RSZWZFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFt
ZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICBTVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
Ci0gICAgICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHko
YXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1VSSVJlZmVy
ZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVI
cmVmKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1RSZWZFbGVtZW50OjphdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkp
OwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNW
R1RSZWZFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRo
aXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChY
TGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotfQotCiBSZW5kZXJPYmplY3Qq
IFNWR1RSZWZFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRl
clN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHSW5saW5lKHRoaXMp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDkgKzQyLDYgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmly
dHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OwpAQCAtNTYs
MTAgKzUzLDkgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBidWlsZFBlbmRpbmdSZXNv
dXJjZSgpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0KLSAgICAv
LyBTVkdVUklSZWZlcmVuY2UKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVm
KQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUUmVmRWxlbWVudCkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKKyAgICBFTkRfREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICBSZWZQdHI8U3VidHJlZU1vZGlmaWNhdGlv
bkV2ZW50TGlzdGVuZXI+IG1fZXZlbnRMaXN0ZW5lcjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVFNwYW5FbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTkgKzc0LDYg
QEAgYm9vbCBTVkdUU3BhbkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoYwogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1RTcGFuRWxlbWVudDo6
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAs
ICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9p
ZCBTVkdUU3BhbkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17ICAg
ICAgICAKLSAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKSk7Ci19Ci0KIH0K
IAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw5ICszNiw2
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRD
cmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNO
ZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCShyZXZpc2lv
biA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDYgKzMyLDQ5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gRGVmaW5l
IGN1c3RvbSBub24tYW5pbWF0ZWQgcHJvcGVydHkgJ3JlcXVpcmVkRmVhdHVyZXMnLgorY29uc3Qg
U1ZHUHJvcGVydHlJbmZvKiBTVkdUZXN0czo6cmVxdWlyZWRGZWF0dXJlc1Byb3BlcnR5SW5mbygp
Cit7CisgICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogc19wcm9wZXJ0eUluZm8gPSAw
OworICAgIGlmICghc19wcm9wZXJ0eUluZm8pIHsKKyAgICAgICAgc19wcm9wZXJ0eUluZm8gPSBu
ZXcgU1ZHUHJvcGVydHlJbmZvKEFuaW1hdGVkVW5rbm93biwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpyZXF1aXJlZEZlYXR1cmVzQXR0ciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpy
ZXF1aXJlZEZlYXR1cmVzQXR0ci5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVh
dHVyZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsK
KyAgICB9CisgICAgcmV0dXJuIHNfcHJvcGVydHlJbmZvOworfQorCisKKy8vIERlZmluZSBjdXN0
b20gbm9uLWFuaW1hdGVkIHByb3BlcnR5ICdyZXF1aXJlZEV4dGVuc2lvbnMnLgorY29uc3QgU1ZH
UHJvcGVydHlJbmZvKiBTVkdUZXN0czo6cmVxdWlyZWRFeHRlbnNpb25zUHJvcGVydHlJbmZvKCkK
K3sKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBzX3Byb3BlcnR5SW5mbyA9IDA7
CisgICAgaWYgKCFzX3Byb3BlcnR5SW5mbykgeworICAgICAgICBzX3Byb3BlcnR5SW5mbyA9IG5l
dyBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRVbmtub3duLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6OnJlcXVpcmVkRXh0ZW5zaW9uc0F0dHIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6
cmVxdWlyZWRFeHRlbnNpb25zQXR0ci5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVk
RXh0ZW5zaW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDApOworICAgIH0KKyAgICByZXR1cm4gc19wcm9wZXJ0eUluZm87Cit9CisKKy8vIERlZmluZSBj
dXN0b20gbm9uLWFuaW1hdGVkIHByb3BlcnR5ICdzeXN0ZW1MYW5ndWFnZScuCitjb25zdCBTVkdQ
cm9wZXJ0eUluZm8qIFNWR1Rlc3RzOjpzeXN0ZW1MYW5ndWFnZVByb3BlcnR5SW5mbygpCit7Cisg
ICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogc19wcm9wZXJ0eUluZm8gPSAwOworICAg
IGlmICghc19wcm9wZXJ0eUluZm8pIHsKKyAgICAgICAgc19wcm9wZXJ0eUluZm8gPSBuZXcgU1ZH
UHJvcGVydHlJbmZvKEFuaW1hdGVkVW5rbm93biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpzeXN0ZW1MYW5ndWFnZUF0dHIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6c3lzdGVtTGFu
Z3VhZ2VBdHRyLmxvY2FsTmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJlNWR0VsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICB9CisgICAg
cmV0dXJuIHNfcHJvcGVydHlJbmZvOworfQorCiBTVkdUZXN0czo6U1ZHVGVzdHMoKQogICAgIDog
bV9yZXF1aXJlZEZlYXR1cmVzKFNWR05hbWVzOjpyZXF1aXJlZEZlYXR1cmVzQXR0cikKICAgICAs
IG1fcmVxdWlyZWRFeHRlbnNpb25zKFNWR05hbWVzOjpyZXF1aXJlZEV4dGVuc2lvbnNBdHRyKQpA
QCAtMzksNiArODIsMTcgQEAgU1ZHVGVzdHM6OlNWR1Rlc3RzKCkKIHsKIH0KIAorU1ZHQXR0cmli
dXRlVG9Qcm9wZXJ0eU1hcCYgU1ZHVGVzdHM6OmF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCwgbWFwLCAo
KSk7CisgICAgaWYgKCFtYXAuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbWFwOworICAgIG1h
cC5hZGRQcm9wZXJ0eShyZXF1aXJlZEZlYXR1cmVzUHJvcGVydHlJbmZvKCkpOworICAgIG1hcC5h
ZGRQcm9wZXJ0eShyZXF1aXJlZEV4dGVuc2lvbnNQcm9wZXJ0eUluZm8oKSk7CisgICAgbWFwLmFk
ZFByb3BlcnR5KHN5c3RlbUxhbmd1YWdlUHJvcGVydHlJbmZvKCkpOworICAgIHJldHVybiBtYXA7
Cit9CisKIGJvb2wgU1ZHVGVzdHM6Omhhc0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKSBjb25zdAog
ewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbWUhCkBAIC0xMTUsNDUgKzE2OSwzMSBAQCB2b2lk
IFNWR1Rlc3RzOjphZGRTdXBwb3J0ZWRBdHRyaWJ1dGVzKEhhCiAgICAgc3VwcG9ydGVkQXR0cmli
dXRlcy5hZGQoU1ZHTmFtZXM6OnN5c3RlbUxhbmd1YWdlQXR0cik7CiB9CiAKLXZvaWQgU1ZHVGVz
dHM6OnN5bmNocm9uaXplUHJvcGVydGllcyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFO
YW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKGNvbnRleHRFbGVt
ZW50KTsKLSAgICAgICAgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoY29udGV4dEVsZW1l
bnQpOwotICAgICAgICBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKGNvbnRleHRFbGVtZW50KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
cmVxdWlyZWRGZWF0dXJlc0F0dHIpCi0gICAgICAgIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJl
cyhjb250ZXh0RWxlbWVudCk7Ci0gICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJl
cXVpcmVkRXh0ZW5zaW9uc0F0dHIpCi0gICAgICAgIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNp
b25zKGNvbnRleHRFbGVtZW50KTsKLSAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
c3lzdGVtTGFuZ3VhZ2VBdHRyKQotICAgICAgICBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKGNv
bnRleHRFbGVtZW50KTsKLX0KLQogdm9pZCBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZl
YXR1cmVzKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogeworICAgIEFTU0VSVChjb250ZXh0
RWxlbWVudCk7CiAgICAgaWYgKCFtX3JlcXVpcmVkRmVhdHVyZXMuc2hvdWxkU3luY2hyb25pemUp
CiAgICAgICAgIHJldHVybjsKICAgICBBdG9taWNTdHJpbmcgdmFsdWUobV9yZXF1aXJlZEZlYXR1
cmVzLnZhbHVlLnZhbHVlQXNTdHJpbmcoKSk7Ci0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNo
cm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUoY29udGV4dEVsZW1lbnQsIFNWR05hbWVzOjpyZXF1
aXJlZEZlYXR1cmVzQXR0ciwgdmFsdWUpOworICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJv
bml6ZXI8dHJ1ZT46OnN5bmNocm9uaXplKGNvbnRleHRFbGVtZW50LCByZXF1aXJlZEZlYXR1cmVz
UHJvcGVydHlJbmZvKCktPmF0dHJpYnV0ZU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBTVkdUZXN0
czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1l
bnQpCiB7CisgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKICAgICBpZiAoIW1fcmVxdWlyZWRF
eHRlbnNpb25zLnNob3VsZFN5bmNocm9uaXplKQogICAgICAgICByZXR1cm47CiAgICAgQXRvbWlj
U3RyaW5nIHZhbHVlKG1fcmVxdWlyZWRFeHRlbnNpb25zLnZhbHVlLnZhbHVlQXNTdHJpbmcoKSk7
Ci0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUo
Y29udGV4dEVsZW1lbnQsIFNWR05hbWVzOjpyZXF1aXJlZEV4dGVuc2lvbnNBdHRyLCB2YWx1ZSk7
CisgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUo
Y29udGV4dEVsZW1lbnQsIHJlcXVpcmVkRXh0ZW5zaW9uc1Byb3BlcnR5SW5mbygpLT5hdHRyaWJ1
dGVOYW1lLHZhbHVlKTsKIH0KIAogdm9pZCBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5n
dWFnZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKIHsKKyAgICBBU1NFUlQoY29udGV4dEVs
ZW1lbnQpOwogICAgIGlmICghbV9zeXN0ZW1MYW5ndWFnZS5zaG91bGRTeW5jaHJvbml6ZSkKICAg
ICAgICAgcmV0dXJuOwogICAgIEF0b21pY1N0cmluZyB2YWx1ZShtX3N5c3RlbUxhbmd1YWdlLnZh
bHVlLnZhbHVlQXNTdHJpbmcoKSk7Ci0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXpl
cjx0cnVlPjo6c3luY2hyb25pemUoY29udGV4dEVsZW1lbnQsIFNWR05hbWVzOjpzeXN0ZW1MYW5n
dWFnZUF0dHIsIHZhbHVlKTsKKyAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPHRy
dWU+OjpzeW5jaHJvbml6ZShjb250ZXh0RWxlbWVudCwgc3lzdGVtTGFuZ3VhZ2VQcm9wZXJ0eUlu
Zm8oKS0+YXR0cmlidXRlTmFtZSwgdmFsdWUpOwogfQogCiBTVkdTdHJpbmdMaXN0JiBTVkdUZXN0
czo6cmVxdWlyZWRGZWF0dXJlcygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaAkocmV2aXNpb24g
OTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBTVkdUZXN0c19oCiAKICNpZiBFTkFCTEUoU1ZHKQor
I2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHkuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFBy
b3BlcnR5TWFjcm9zLmgiCiAjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdC5oIgogCkBAIC00NSwxOCAr
NDYsMjcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRTdXBwb3J0ZWRBdHRyaWJ1dGVzKEhhc2hT
ZXQ8UXVhbGlmaWVkTmFtZT4mKTsKICAgICBib29sIGhhbmRsZUF0dHJpYnV0ZUNoYW5nZShjb25z
dCBTVkdFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZvaWQgc3luY2hyb25p
emVQcm9wZXJ0aWVzKFNWR0VsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CisKKyAgICBz
dGF0aWMgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgp
OwogCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHVGVzdHMoKTsKIAotcHJpdmF0ZToKLSAgICB2b2lkIHN5
bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyhTVkdFbGVtZW50Kik7Ci0gICAgdm9pZCBzeW5jaHJv
bml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyhTVkdFbGVtZW50Kik7Ci0gICAgdm9pZCBzeW5jaHJvbml6
ZVN5c3RlbUxhbmd1YWdlKFNWR0VsZW1lbnQqKTsKKyAgICB2b2lkIHN5bmNocm9uaXplUmVxdWly
ZWRGZWF0dXJlcyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7CisgICAgdm9pZCBzeW5jaHJv
bml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7CisgICAg
dm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50
KTsKIAorcHJpdmF0ZToKKyAgICAvLyBDdXN0b20gJ3JlcXVpcmVkRmVhdHVyZXMnIHByb3BlcnR5
CisgICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogcmVxdWlyZWRGZWF0dXJlc1Byb3Bl
cnR5SW5mbygpOwogICAgIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdTdHJp
bmdMaXN0PiBtX3JlcXVpcmVkRmVhdHVyZXM7CisKKyAgICAvLyBDdXN0b20gJ3JlcXVpcmVkRXh0
ZW5zaW9ucycgcHJvcGVydHkKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiByZXF1
aXJlZEV4dGVuc2lvbnNQcm9wZXJ0eUluZm8oKTsKICAgICBTVkdTeW5jaHJvbml6YWJsZUFuaW1h
dGVkUHJvcGVydHk8U1ZHU3RyaW5nTGlzdD4gbV9yZXF1aXJlZEV4dGVuc2lvbnM7CisKKyAgICAv
LyBDdXN0b20gJ3N5c3RlbUxhbmd1YWdlJyBwcm9wZXJ0eQorICAgIHN0YXRpYyBjb25zdCBTVkdQ
cm9wZXJ0eUluZm8qIHN5c3RlbUxhbmd1YWdlUHJvcGVydHlJbmZvKCk7CiAgICAgU1ZHU3luY2hy
b25pemFibGVBbmltYXRlZFByb3BlcnR5PFNWR1N0cmluZ0xpc3Q+IG1fc3lzdGVtTGFuZ3VhZ2U7
CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50
LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRl
bnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjQgKzM4LDU4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklO
RV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdUZXh0Q29udGVudEVsZW1lbnQsIFNWR05hbWVzOjps
ZW5ndGhBZGp1c3RBdHRyLCBMZW5ndGhBZGp1c3QsIGxlbmd0aEFkanVzdCwgU1ZHVGV4dENvbnRl
bnRFbGVtZW50OjpTVkdMZW5ndGhBZGp1c3RUeXBlKQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4o
U1ZHVGV4dENvbnRlbnRFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCisvLyBEZWZpbmUgY3VzdG9tIGFuaW1hdGVkIHByb3BlcnR5ICd0ZXh0TGVuZ3RoJy4KK2Nv
bnN0IFNWR1Byb3BlcnR5SW5mbyogU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojp0ZXh0TGVuZ3RoUHJv
cGVydHlJbmZvKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBzX3Byb3Bl
cnR5SW5mbyA9IDA7CisgICAgaWYgKCFzX3Byb3BlcnR5SW5mbykgeworICAgICAgICBzX3Byb3Bl
cnR5SW5mbyA9IG5ldyBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRMZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6dGV4dExlbmd0aEF0
dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1l
czo6dGV4dExlbmd0aEF0dHIubG9jYWxOYW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzeW5jaHJvbml6ZVRl
eHRMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
U1ZHVGV4dENvbnRlbnRFbGVtZW50Ojpsb29rdXBPckNyZWF0ZVRleHRMZW5ndGhXcmFwcGVyKTsK
KyAgICB9CisgICAgcmV0dXJuIHNfcHJvcGVydHlJbmZvOworfQorCitCRUdJTl9ERUZJTkVfQU5J
TUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdUZXh0
Q29udGVudEVsZW1lbnQsIFNWR05hbWVzOjpsZW5ndGhBZGp1c3RBdHRyLCBMZW5ndGhBZGp1c3Qs
IGxlbmd0aEFkanVzdCwgTGVuZ3RoQWRqdXN0VHlwZSkKKyAgICBERUZJTkVfQU5JTUFURURfQk9P
TEVBTihTVkdUZXh0Q29udGVudEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RF
Ul9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1RleHRDb250ZW50RWxlbWVudCkKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh0ZXh0TGVuZ3RoKQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKGxlbmd0aEFkanVzdCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BB
UkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVsZW1lbnQpCisgICAgUkVHSVNURVJf
UEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5JTUFU
RURfUFJPUEVSVElFUwogCiBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OlNWR1RleHRDb250ZW50RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAg
ICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAgICwgbV9zcGVjaWZp
ZWRUZXh0TGVuZ3RoKExlbmd0aE1vZGVPdGhlcikKICAgICAsIG1fdGV4dExlbmd0aChMZW5ndGhN
b2RlT3RoZXIpCi0gICAgLCBtX2xlbmd0aEFkanVzdChMRU5HVEhBREpVU1RfU1BBQ0lORykKKyAg
ICAsIG1fc3BlY2lmaWVkVGV4dExlbmd0aChMZW5ndGhNb2RlT3RoZXIpCisgICAgLCBtX2xlbmd0
aEFkanVzdChMZW5ndGhBZGp1c3RTcGFjaW5nKQogeworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9w
ZXJ0aWVzRm9yU1ZHVGV4dENvbnRlbnRFbGVtZW50KCk7CiB9CiAKLXZvaWQgU1ZHVGV4dENvbnRl
bnRFbGVtZW50OjpzeW5jaHJvbml6ZVRleHRMZW5ndGgoKQordm9pZCBTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6OnN5bmNocm9uaXplVGV4dExlbmd0aCh2b2lkKiBjb250ZXh0RWxlbWVudCkKIHsKLSAg
ICBpZiAoIW1fdGV4dExlbmd0aC5zaG91bGRTeW5jaHJvbml6ZSkKKyAgICBBU1NFUlQoY29udGV4
dEVsZW1lbnQpOworICAgIFNWR1RleHRDb250ZW50RWxlbWVudCogb3duZXJUeXBlID0gc3RhdGlj
X2Nhc3Q8U1ZHVGV4dENvbnRlbnRFbGVtZW50Kj4oY29udGV4dEVsZW1lbnQpOworICAgIGlmICgh
b3duZXJUeXBlLT5tX3RleHRMZW5ndGguc2hvdWxkU3luY2hyb25pemUpCiAgICAgICAgIHJldHVy
bjsKLSAgICBBdG9taWNTdHJpbmcgdmFsdWUoU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTGVuZ3RoPjo6
dG9TdHJpbmcobV9zcGVjaWZpZWRUZXh0TGVuZ3RoKSk7Ci0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUodGhpcywgU1ZHTmFtZXM6OnRleHRMZW5n
dGhBdHRyLCB2YWx1ZSk7CisgICAgQXRvbWljU3RyaW5nIHZhbHVlKFNWR1Byb3BlcnR5VHJhaXRz
PFNWR0xlbmd0aD46OnRvU3RyaW5nKG93bmVyVHlwZS0+bV9zcGVjaWZpZWRUZXh0TGVuZ3RoKSk7
CisgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUo
b3duZXJUeXBlLCB0ZXh0TGVuZ3RoUHJvcGVydHlJbmZvKCktPmF0dHJpYnV0ZU5hbWUsIHZhbHVl
KTsKK30KKworUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlVGV4dExlbmd0aFdyYXBwZXIodm9pZCogY29udGV4dEVsZW1l
bnQpCit7CisgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICBTVkdUZXh0Q29udGVudEVs
ZW1lbnQqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR1RleHRDb250ZW50RWxlbWVudCo+KGNv
bnRleHRFbGVtZW50KTsKKyAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JD
cmVhdGVXcmFwcGVyPFNWR1RleHRDb250ZW50RWxlbWVudCwgU1ZHQW5pbWF0ZWRMZW5ndGgsIFNW
R0xlbmd0aCwgdHJ1ZT4KKyAgICAgICAgICAgKG93bmVyVHlwZSwgdGV4dExlbmd0aFByb3BlcnR5
SW5mbygpLCBvd25lclR5cGUtPm1fdGV4dExlbmd0aC52YWx1ZSk7CiB9CiAKIFBhc3NSZWZQdHI8
U1ZHQW5pbWF0ZWRMZW5ndGg+IFNWR1RleHRDb250ZW50RWxlbWVudDo6dGV4dExlbmd0aEFuaW1h
dGVkKCkKQEAgLTY4LDcgKzEwMiw4IEBAIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IFNW
R1RleHRDb24KICAgICB9CiAKICAgICBtX3RleHRMZW5ndGguc2hvdWxkU3luY2hyb25pemUgPSB0
cnVlOwotICAgIHJldHVybiBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBPckNyZWF0ZVdyYXBw
ZXI8U1ZHQW5pbWF0ZWRMZW5ndGgsIFNWR0xlbmd0aD4odGhpcywgU1ZHTmFtZXM6OnRleHRMZW5n
dGhBdHRyLCBTVkdOYW1lczo6dGV4dExlbmd0aEF0dHIubG9jYWxOYW1lKCksIG1fdGV4dExlbmd0
aC52YWx1ZSk7CisgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHQW5pbWF0ZWRMZW5n
dGg+KGxvb2t1cE9yQ3JlYXRlVGV4dExlbmd0aFdyYXBwZXIodGhpcykpOworCiB9CiAKIHVuc2ln
bmVkIFNWR1RleHRDb250ZW50RWxlbWVudDo6Z2V0TnVtYmVyT2ZDaGFycygpIGNvbnN0CkBAIC0y
MDIsNyArMjM3LDcgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnBhcnNlTWFwcGVkQQog
ICAgIH0KIAogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0
dHIpIHsKLSAgICAgICAgU1ZHTGVuZ3RoQWRqdXN0VHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJv
cGVydHlUcmFpdHM8U1ZHTGVuZ3RoQWRqdXN0VHlwZT46OmZyb21TdHJpbmcoYXR0ci0+dmFsdWUo
KSk7CisgICAgICAgIExlbmd0aEFkanVzdFR5cGUgcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5
VHJhaXRzPExlbmd0aEFkanVzdFR5cGU+Ojpmcm9tU3RyaW5nKGF0dHItPnZhbHVlKCkpOwogICAg
ICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCiAgICAgICAgICAgICBzZXRMZW5ndGhBZGp1c3RC
YXNlVmFsdWUocHJvcGVydHlWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTIzNiw0NSArMjcx
LDYgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnBhcnNlTWFwcGVkQQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAo
YXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUxlbmd0aEFkanVz
dCgpOwotICAgICAgICBzeW5jaHJvbml6ZVRleHRMZW5ndGgoKTsKLSAgICAgICAgc3luY2hyb25p
emVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRFbGVtZW50
OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNW
R1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpsZW5ndGhBZGp1
c3RBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplTGVuZ3RoQWRqdXN0KCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRleHRMZW5ndGhB
dHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplVGV4dExlbmd0aCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3Rz
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hy
b25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCiB2b2lkIFNWR1RleHRDb250ZW50RWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
IHsKICAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewpAQCAtMjk0LDE0
ICsyOTAsNiBAQCB2b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlCiAgICAg
ICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZh
bGlkYXRpb24ocmVuZGVyZXIpOwogfQogCi12b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6Zmls
bFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCkKLXsKLSAgICBTVkdTdHlsZWRFbGVtZW50
OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXApOwotCi0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
Ojp0ZXh0TGVuZ3RoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6bGVuZ3RoQWRqdXN0QXR0ciwgQW5pbWF0ZWRFbnVtZXJh
dGlvbik7Ci19Ci0KIGJvb2wgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzZWxmSGFzUmVsYXRpdmVM
ZW5ndGhzKCkgY29uc3QKIHsKICAgICAvLyBBbnkgZWxlbWVudCBvZiB0aGUgPHRleHQ+IHN1YnRy
ZWUgaXMgYWR2ZXJ0aXplZCBhcyB1c2luZyByZWxhdGl2ZSBsZW5ndGhzLgpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDE1ICszMiw1MSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2VudW0gTGVu
Z3RoQWRqdXN0VHlwZSB7CisgICAgTGVuZ3RoQWRqdXN0VW5rbm93biwKKyAgICBMZW5ndGhBZGp1
c3RTcGFjaW5nLAorICAgIExlbmd0aEFkanVzdFNwYWNpbmdBbmRHbHlwaHMKK307CisKK3RlbXBs
YXRlPD4KK3N0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxMZW5ndGhBZGp1c3RUeXBlPiB7CisgICAg
c3RhdGljIExlbmd0aEFkanVzdFR5cGUgaGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJuIExlbmd0
aEFkanVzdFNwYWNpbmdBbmRHbHlwaHM7IH0KKworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmco
TGVuZ3RoQWRqdXN0VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7Cisg
ICAgICAgIGNhc2UgTGVuZ3RoQWRqdXN0VW5rbm93bjoKKyAgICAgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOworICAgICAgICBjYXNlIExlbmd0aEFkanVzdFNwYWNpbmc6CisgICAgICAgICAg
ICByZXR1cm4gInNwYWNpbmciOworICAgICAgICBjYXNlIExlbmd0aEFkanVzdFNwYWNpbmdBbmRH
bHlwaHM6CisgICAgICAgICAgICByZXR1cm4gInNwYWNpbmdBbmRHbHlwaHMiOworICAgICAgICB9
CisKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOworICAgIH0KKworICAgIHN0YXRpYyBMZW5ndGhBZGp1c3RUeXBlIGZyb21TdHJpbmco
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICh2YWx1ZSA9PSAic3BhY2lu
Z0FuZEdseXBocyIpCisgICAgICAgICAgICByZXR1cm4gTGVuZ3RoQWRqdXN0U3BhY2luZ0FuZEds
eXBoczsKKyAgICAgICAgaWYgKHZhbHVlID09ICJzcGFjaW5nIikKKyAgICAgICAgICAgIHJldHVy
biBMZW5ndGhBZGp1c3RTcGFjaW5nOworICAgICAgICByZXR1cm4gTGVuZ3RoQWRqdXN0VW5rbm93
bjsKKyAgICB9Cit9OworCiBjbGFzcyBTVkdUZXh0Q29udGVudEVsZW1lbnQgOiBwdWJsaWMgU1ZH
U3R5bGVkRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdU
ZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdMYW5nU3BhY2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCB7CiBwdWJsaWM6Ci0gICAgZW51bSBTVkdMZW5ndGhBZGp1c3RUeXBlIHsKLSAg
ICAgICAgTEVOR1RIQURKVVNUX1VOS05PV04gICAgICAgICAgICA9IDAsCi0gICAgICAgIExFTkdU
SEFESlVTVF9TUEFDSU5HICAgICAgICAgICAgPSAxLAotICAgICAgICBMRU5HVEhBREpVU1RfU1BB
Q0lOR0FOREdMWVBIUyAgID0gMgorICAgIC8vIEZvcndhcmQgZGVjbGFyZSB0aGVzZSBlbnVtcyBp
biB0aGUgdzNjIG5hbWluZyBzY2hlbWUsIGZvciBJREwgZ2VuZXJhdGlvbgorICAgIGVudW0gewor
ICAgICAgICBMRU5HVEhBREpVU1RfVU5LTk9XTiA9IExlbmd0aEFkanVzdFVua25vd24sCisgICAg
ICAgIExFTkdUSEFESlVTVF9TUEFDSU5HID0gTGVuZ3RoQWRqdXN0U3BhY2luZywKKyAgICAgICAg
TEVOR1RIQURKVVNUX1NQQUNJTkdBTkRHTFlQSFMgPSBMZW5ndGhBZGp1c3RTcGFjaW5nQW5kR2x5
cGhzCiAgICAgfTsKIAogICAgIHVuc2lnbmVkIGdldE51bWJlck9mQ2hhcnMoKSBjb25zdDsKQEAg
LTU5LDYgKzk1LDcgQEAgcHVibGljOgogICAgIC8vIGFzIGl0cyBnZXR0ZXIgbmVlZHMgc3BlY2lh
bCBoYW5kbGluZyAocmV0dXJuIGdldENvbXB1dGVkVGV4dExlbmd0aCgpLCBpbnN0ZWFkIG9mIG1f
dGV4dExlbmd0aCkuCiAgICAgU1ZHTGVuZ3RoJiBzcGVjaWZpZWRUZXh0TGVuZ3RoKCkgeyByZXR1
cm4gbV9zcGVjaWZpZWRUZXh0TGVuZ3RoOyB9CiAgICAgUGFzc1JlZlB0cjxTVkdBbmltYXRlZExl
bmd0aD4gdGV4dExlbmd0aEFuaW1hdGVkKCk7CisgICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5
SW5mbyogdGV4dExlbmd0aFByb3BlcnR5SW5mbygpOwogCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHVGV4
dENvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwpAQCAtNjgs
OCArMTA1LDYgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZvaWQgZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJik7CiAKICAgICB2aXJ0dWFs
IGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBj
aGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3Jl
Q2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0g
MCk7CkBAIC03Nyw0MyArMTEyLDIxIEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdmlydHVh
bCBib29sIGlzVGV4dENvbnRlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAvLyBB
bmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICB2b2lkIHN5bmNocm9uaXplVGV4dExl
bmd0aCgpOwotICAgIFNWR0xlbmd0aCBtX3NwZWNpZmllZFRleHRMZW5ndGg7CisgICAgLy8gQ3Vz
dG9tICd0ZXh0TGVuZ3RoJyBwcm9wZXJ0eQorICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXplVGV4
dExlbmd0aCh2b2lkKiBjb250ZXh0RWxlbWVudCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZH
QW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVUZXh0TGVuZ3RoV3JhcHBlcih2b2lkKiBj
b250ZXh0RWxlbWVudCk7CiAgICAgbXV0YWJsZSBTVkdTeW5jaHJvbml6YWJsZUFuaW1hdGVkUHJv
cGVydHk8U1ZHTGVuZ3RoPiBtX3RleHRMZW5ndGg7Ci0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVN
RVJBVElPTihMZW5ndGhBZGp1c3QsIGxlbmd0aEFkanVzdCwgU1ZHTGVuZ3RoQWRqdXN0VHlwZSkK
LQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1B
VEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCkgCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZH
VGV4dENvbnRlbnRFbGVtZW50OjpTVkdMZW5ndGhBZGp1c3RUeXBlPiB7Ci0gICAgc3RhdGljIFNW
R1RleHRDb250ZW50RWxlbWVudDo6U1ZHTGVuZ3RoQWRqdXN0VHlwZSBoaWdoZXN0RW51bVZhbHVl
KCkgeyByZXR1cm4gU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpMRU5HVEhBREpVU1RfU1BBQ0lOR0FO
REdMWVBIUzsgfQotCi0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6OlNWR0xlbmd0aEFkanVzdFR5cGUgdHlwZSkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAo
dHlwZSkgewotICAgICAgICBjYXNlIFNWR1RleHRDb250ZW50RWxlbWVudDo6TEVOR1RIQURKVVNU
X1VOS05PV046Ci0gICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICAgICAgY2Fz
ZSBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OkxFTkdUSEFESlVTVF9TUEFDSU5HOgotICAgICAgICAg
ICAgcmV0dXJuICJzcGFjaW5nIjsKLSAgICAgICAgY2FzZSBTVkdUZXh0Q29udGVudEVsZW1lbnQ6
OkxFTkdUSEFESlVTVF9TUEFDSU5HQU5ER0xZUEhTOgotICAgICAgICAgICAgcmV0dXJuICJzcGFj
aW5nQW5kR2x5cGhzIjsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICB9CisgICAgU1ZHTGVuZ3RoIG1f
c3BlY2lmaWVkVGV4dExlbmd0aDsKIAotICAgIHN0YXRpYyBTVkdUZXh0Q29udGVudEVsZW1lbnQ6
OlNWR0xlbmd0aEFkanVzdFR5cGUgZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQotICAg
IHsKLSAgICAgICAgaWYgKHZhbHVlID09ICJzcGFjaW5nQW5kR2x5cGhzIikKLSAgICAgICAgICAg
IHJldHVybiBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OkxFTkdUSEFESlVTVF9TUEFDSU5HQU5ER0xZ
UEhTOwotICAgICAgICBpZiAodmFsdWUgPT0gInNwYWNpbmciKQotICAgICAgICAgICAgcmV0dXJu
IFNWR1RleHRDb250ZW50RWxlbWVudDo6TEVOR1RIQURKVVNUX1NQQUNJTkc7Ci0gICAgICAgIHJl
dHVybiBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OkxFTkdUSEFESlVTVF9VTktOT1dOOwotICAgIH0K
KyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGV4dENvbnRlbnRFbGVt
ZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKExlbmd0aEFkanVzdCwg
bGVuZ3RoQWRqdXN0LCBMZW5ndGhBZGp1c3RUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkgCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8gU1ZH
VGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBT
VkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hy
b25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVTeXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3Vh
Z2UodGhpcyk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMyArMzUs
MjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZp
bml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFNWR1RleHRFbGVtZW50LCBT
VkdOYW1lczo6dHJhbnNmb3JtQXR0ciwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCitCRUdJTl9ERUZJ
TkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9UUkFOU0ZPUk1fTElT
VChTVkdUZXh0RWxlbWVudCwgU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIsIFRyYW5zZm9ybSwgdHJh
bnNmb3JtKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNU
RVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0RWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NB
TF9BTklNQVRFRF9QUk9QRVJUWSh0cmFuc2Zvcm0pCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCkKK0VORF9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdUZXh0RWxlbWVudDo6U1ZHVGV4dEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQodGFnTmFtZSwgZG9jKQogewogICAgIEFTU0VSVChoYXNU
YWdOYW1lKFNWR05hbWVzOjp0ZXh0VGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRp
ZXNGb3JTVkdUZXh0RWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR1RleHRFbGVtZW50PiBT
VkdUZXh0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKQEAgLTE2MCw0MSArMTY3LDYgQEAgdm9pZCBTVkdUZXh0RWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lk
IFNWR1RleHRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplVHJhbnNmb3JtKCk7Ci0gICAgICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAg
U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnRyYW5zZm9ybUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVUcmFuc2Zvcm0oKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHVGV4dEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJu
IHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHVGV4dEVsZW1lbnQ6
OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmZp
bGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp0cmFu
c2Zvcm1BdHRyLCBBbmltYXRlZFRyYW5zZm9ybUxpc3QpOwotfQotCiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmgJKHJldmlzaW9u
IDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU2LDEyICs1NiwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBjaGls
ZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKICAgICAgICAgICAgIAogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAg
IHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFRyYW5zZm9ybSwgdHJhbnNmb3JtKQorICAg
IEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0RWxlbWVudCkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChUcmFuc2Zvcm0sIHRyYW5zZm9ybSkK
KyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICAvLyBVc2VkIGJ5IDxh
bmltYXRlTW90aW9uPgogICAgIE93blB0cjxBZmZpbmVUcmFuc2Zvcm0+IG1fc3VwcGxlbWVudGFs
VHJhbnNmb3JtOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5j
cHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE5ICszMSwyOSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR1RleHRQYXRoRWxlbWVudCwgU1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0
ciwgU3RhcnRPZmZzZXQsIHN0YXJ0T2Zmc2V0KQotREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9O
KFNWR1RleHRQYXRoRWxlbWVudCwgU1ZHTmFtZXM6Om1ldGhvZEF0dHIsIE1ldGhvZCwgbWV0aG9k
LCBTVkdUZXh0UGF0aE1ldGhvZFR5cGUpCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZH
VGV4dFBhdGhFbGVtZW50LCBTVkdOYW1lczo6c3BhY2luZ0F0dHIsIFNwYWNpbmcsIHNwYWNpbmcs
IFNWR1RleHRQYXRoU3BhY2luZ1R5cGUpCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR1RleHRQ
YXRoRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCitCRUdJTl9ERUZJ
TkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHVGV4
dFBhdGhFbGVtZW50LCBTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyLCBTdGFydE9mZnNldCwgc3Rh
cnRPZmZzZXQpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR1RleHRQYXRoRWxl
bWVudCwgU1ZHTmFtZXM6Om1ldGhvZEF0dHIsIE1ldGhvZCwgbWV0aG9kLCBTVkdUZXh0UGF0aE1l
dGhvZFR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR1RleHRQYXRoRWxl
bWVudCwgU1ZHTmFtZXM6OnNwYWNpbmdBdHRyLCBTcGFjaW5nLCBzcGFjaW5nLCBTVkdUZXh0UGF0
aFNwYWNpbmdUeXBlKQorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHVGV4dFBhdGhFbGVt
ZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKK0VORF9ERUZJTkVfQU5JTUFU
RURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rl
eHRQYXRoRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShzdGFy
dE9mZnNldCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShtZXRob2QpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc3BhY2luZykKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShocmVmKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklN
QVRFRF9QUk9QRVJUSUVTKFNWR1RleHRDb250ZW50RWxlbWVudCkKK0VORF9SRUdJU1RFUl9BTklN
QVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdUZXh0UGF0aEVsZW1lbnQ6OlNWR1RleHRQYXRo
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CiAgICAgOiBTVkdUZXh0Q29udGVudEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBt
X3N0YXJ0T2Zmc2V0KExlbmd0aE1vZGVPdGhlcikKLSAgICAsIG1fbWV0aG9kKFNWR19URVhUUEFU
SF9NRVRIT0RUWVBFX0FMSUdOKQotICAgICwgbV9zcGFjaW5nKFNWR19URVhUUEFUSF9TUEFDSU5H
VFlQRV9FWEFDVCkKKyAgICAsIG1fbWV0aG9kKFRleHRQYXRoTWV0aG9kQWxpZ24pCisgICAgLCBt
X3NwYWNpbmcoVGV4dFBhdGhTcGFjaW5nRXhhY3QpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
U1ZHTmFtZXM6OnRleHRQYXRoVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNG
b3JTVkdUZXh0UGF0aEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdUZXh0UGF0aEVsZW1l
bnQ+IFNWR1RleHRQYXRoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTExMiw2MiArMTIyLDYgQEAgdm9pZCBTVkdUZXh0
UGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYQogICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6
bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKG9iamVjdCk7CiB9CiAK
LXZvaWQgU1ZHVGV4dFBhdGhFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplU3RhcnRPZmZzZXQoKTsKLSAgICAgICAgc3luY2hyb25pemVN
ZXRob2QoKTsKLSAgICAgICAgc3luY2hyb25pemVTcGFjaW5nKCk7Ci0gICAgICAgIHN5bmNocm9u
aXplSHJlZigpOwotICAgICAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1
cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGV4dENvbnRlbnRFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplU3RhcnRPZmZzZXQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICAKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1ldGhvZEF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVNZXRob2QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwYWNpbmdBdHRyKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplU3BhY2luZygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGlmIChT
VkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplSHJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdUZXh0UGF0
aEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7
Ci19Ci0KLXZvaWQgU1ZHVGV4dFBhdGhFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAg
ICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpzdGFydE9mZnNldEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om1ldGhvZEF0dHIs
IEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6c3BhY2luZ0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRT
dHJpbmcpOwotfQotCiBSZW5kZXJPYmplY3QqIFNWR1RleHRQYXRoRWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5l
dyAoYXJlbmEpIFJlbmRlclNWR1RleHRQYXRoKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcxICsyOCwy
OSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIFNWR1RleHRQYXRoTWV0aG9kVHlwZSB7
Ci0gICAgU1ZHX1RFWFRQQVRIX01FVEhPRFRZUEVfVU5LTk9XTiA9IDAsCi0gICAgU1ZHX1RFWFRQ
QVRIX01FVEhPRFRZUEVfQUxJR04gPSAxLAotICAgIFNWR19URVhUUEFUSF9NRVRIT0RUWVBFX1NU
UkVUQ0ggPSAyCisgICAgVGV4dFBhdGhNZXRob2RVbmtub3duID0gMCwKKyAgICBUZXh0UGF0aE1l
dGhvZEFsaWduID0gMSwKKyAgICBUZXh0UGF0aE1ldGhvZFN0cmV0Y2ggPSAyCiB9OwogCiBlbnVt
IFNWR1RleHRQYXRoU3BhY2luZ1R5cGUgewotICAgIFNWR19URVhUUEFUSF9TUEFDSU5HVFlQRV9V
TktOT1dOID0gMCwKLSAgICBTVkdfVEVYVFBBVEhfU1BBQ0lOR1RZUEVfQVVUTyA9IDEsCi0gICAg
U1ZHX1RFWFRQQVRIX1NQQUNJTkdUWVBFX0VYQUNUID0gMgotfTsKLQotY2xhc3MgU1ZHVGV4dFBh
dGhFbGVtZW50IDogcHVibGljIFNWR1RleHRDb250ZW50RWxlbWVudCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2UgewotcHVibGljOgotICAgIC8vIEZv
cndhcmQgZGVjbGFyZSB0aGVzZSBlbnVtcyBpbiB0aGUgdzNjIG5hbWluZyBzY2hlbWUsIGZvciBJ
REwgZ2VuZXJhdGlvbgotICAgIGVudW0gewotICAgICAgICBURVhUUEFUSF9NRVRIT0RUWVBFX1VO
S05PV04gPSBTVkdfVEVYVFBBVEhfTUVUSE9EVFlQRV9VTktOT1dOLAotICAgICAgICBURVhUUEFU
SF9NRVRIT0RUWVBFX0FMSUdOID0gU1ZHX1RFWFRQQVRIX01FVEhPRFRZUEVfQUxJR04sCi0gICAg
ICAgIFRFWFRQQVRIX01FVEhPRFRZUEVfU1RSRVRDSCA9IFNWR19URVhUUEFUSF9NRVRIT0RUWVBF
X1NUUkVUQ0gsCi0gICAgICAgIFRFWFRQQVRIX1NQQUNJTkdUWVBFX1VOS05PV04gPSBTVkdfVEVY
VFBBVEhfU1BBQ0lOR1RZUEVfVU5LTk9XTiwKLSAgICAgICAgVEVYVFBBVEhfU1BBQ0lOR1RZUEVf
QVVUTyA9IFNWR19URVhUUEFUSF9TUEFDSU5HVFlQRV9BVVRPLAotICAgICAgICBURVhUUEFUSF9T
UEFDSU5HVFlQRV9FWEFDVCA9IFNWR19URVhUUEFUSF9TUEFDSU5HVFlQRV9FWEFDVAotICAgIH07
Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdUZXh0UGF0aEVsZW1lbnQ+IGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAKLXByaXZhdGU6Ci0gICAgU1ZHVGV4dFBh
dGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotCi0gICAgdmlydHVh
bCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7Ci0KLSAgICBib29sIGlzU3VwcG9ydGVkQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7Ci0gICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7
Ci0gICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0
OwotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdD
b250ZXh0Jik7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNv
bnN0OwotCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoU3RhcnRPZmZzZXQsIHN0YXJ0T2Zmc2V0KQotICAgIERFQ0xBUkVf
QU5JTUFURURfRU5VTUVSQVRJT04oTWV0aG9kLCBtZXRob2QsIFNWR1RleHRQYXRoTWV0aG9kVHlw
ZSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNwYWNpbmcsIHNwYWNpbmcsIFNW
R1RleHRQYXRoU3BhY2luZ1R5cGUpCi0KLSAgICAvLyBTVkdVUklSZWZlcmVuY2UKLSAgICBERUNM
QVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgIFRleHRQYXRoU3BhY2luZ1Vua25v
d24gPSAwLAorICAgIFRleHRQYXRoU3BhY2luZ0F1dG8gPSAxLAorICAgIFRleHRQYXRoU3BhY2lu
Z0V4YWN0ID0gMgogfTsKIAogdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNW
R1RleHRQYXRoTWV0aG9kVHlwZT4gewotICAgIHN0YXRpYyBTVkdUZXh0UGF0aE1ldGhvZFR5cGUg
aGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJuIFNWR19URVhUUEFUSF9NRVRIT0RUWVBFX1NUUkVU
Q0g7IH0KKyAgICBzdGF0aWMgU1ZHVGV4dFBhdGhNZXRob2RUeXBlIGhpZ2hlc3RFbnVtVmFsdWUo
KSB7IHJldHVybiBUZXh0UGF0aE1ldGhvZFN0cmV0Y2g7IH0KIAogICAgIHN0YXRpYyBTdHJpbmcg
dG9TdHJpbmcoU1ZHVGV4dFBhdGhNZXRob2RUeXBlIHR5cGUpCiAgICAgewogICAgICAgICBzd2l0
Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBTVkdfVEVYVFBBVEhfTUVUSE9EVFlQRV9VTktOT1dO
OgorICAgICAgICBjYXNlIFRleHRQYXRoTWV0aG9kVW5rbm93bjoKICAgICAgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwotICAgICAgICBjYXNlIFNWR19URVhUUEFUSF9NRVRIT0RUWVBFX0FM
SUdOOgorICAgICAgICBjYXNlIFRleHRQYXRoTWV0aG9kQWxpZ246CiAgICAgICAgICAgICByZXR1
cm4gImFsaWduIjsKLSAgICAgICAgY2FzZSBTVkdfVEVYVFBBVEhfTUVUSE9EVFlQRV9TVFJFVENI
OgorICAgICAgICBjYXNlIFRleHRQYXRoTWV0aG9kU3RyZXRjaDoKICAgICAgICAgICAgIHJldHVy
biAic3RyZXRjaCI7CiAgICAgICAgIH0KICAgICAKQEAgLTEwMywyNSArNjEsMjUgQEAgc3RydWN0
IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1RleHRQYXRoTWV0aAogICAgIHN0YXRpYyBTVkdUZXh0UGF0
aE1ldGhvZFR5cGUgZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHsKICAgICAg
ICAgaWYgKHZhbHVlID09ICJhbGlnbiIpCi0gICAgICAgICAgICByZXR1cm4gU1ZHX1RFWFRQQVRI
X01FVEhPRFRZUEVfQUxJR047CisgICAgICAgICAgICByZXR1cm4gVGV4dFBhdGhNZXRob2RBbGln
bjsKICAgICAgICAgaWYgKHZhbHVlID09ICJzdHJldGNoIikKLSAgICAgICAgICAgIHJldHVybiBT
VkdfVEVYVFBBVEhfTUVUSE9EVFlQRV9TVFJFVENIOwotICAgICAgICByZXR1cm4gU1ZHX1RFWFRQ
QVRIX01FVEhPRFRZUEVfVU5LTk9XTjsKKyAgICAgICAgICAgIHJldHVybiBUZXh0UGF0aE1ldGhv
ZFN0cmV0Y2g7CisgICAgICAgIHJldHVybiBUZXh0UGF0aE1ldGhvZFVua25vd247CiAgICAgfQog
fTsKIAogdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1RleHRQYXRoU3Bh
Y2luZ1R5cGU+IHsKLSAgICBzdGF0aWMgU1ZHVGV4dFBhdGhTcGFjaW5nVHlwZSBoaWdoZXN0RW51
bVZhbHVlKCkgeyByZXR1cm4gU1ZHX1RFWFRQQVRIX1NQQUNJTkdUWVBFX0VYQUNUOyB9CisgICAg
c3RhdGljIFNWR1RleHRQYXRoU3BhY2luZ1R5cGUgaGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJu
IFRleHRQYXRoU3BhY2luZ0V4YWN0OyB9CiAKICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFNW
R1RleHRQYXRoU3BhY2luZ1R5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAodHlwZSkg
ewotICAgICAgICBjYXNlIFNWR19URVhUUEFUSF9TUEFDSU5HVFlQRV9VTktOT1dOOgorICAgICAg
ICBjYXNlIFRleHRQYXRoU3BhY2luZ1Vua25vd246CiAgICAgICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKLSAgICAgICAgY2FzZSBTVkdfVEVYVFBBVEhfU1BBQ0lOR1RZUEVfQVVUTzoKKyAg
ICAgICAgY2FzZSBUZXh0UGF0aFNwYWNpbmdBdXRvOgogICAgICAgICAgICAgcmV0dXJuICJhdXRv
IjsKLSAgICAgICAgY2FzZSBTVkdfVEVYVFBBVEhfU1BBQ0lOR1RZUEVfRVhBQ1Q6CisgICAgICAg
IGNhc2UgVGV4dFBhdGhTcGFjaW5nRXhhY3Q6CiAgICAgICAgICAgICByZXR1cm4gImV4YWN0IjsK
ICAgICAgICAgfQogCkBAIC0xMzIsMTMgKzkwLDUxIEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0
czxTVkdUZXh0UGF0aFNwYWMKICAgICBzdGF0aWMgU1ZHVGV4dFBhdGhTcGFjaW5nVHlwZSBmcm9t
U3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgewogICAgICAgICBpZiAodmFsdWUgPT0g
ImF1dG8iKQotICAgICAgICAgICAgcmV0dXJuIFNWR19URVhUUEFUSF9TUEFDSU5HVFlQRV9BVVRP
OworICAgICAgICAgICAgcmV0dXJuIFRleHRQYXRoU3BhY2luZ0F1dG87CiAgICAgICAgIGlmICh2
YWx1ZSA9PSAiZXhhY3QiKQotICAgICAgICAgICAgcmV0dXJuIFNWR19URVhUUEFUSF9TUEFDSU5H
VFlQRV9FWEFDVDsKLSAgICAgICAgcmV0dXJuIFNWR19URVhUUEFUSF9TUEFDSU5HVFlQRV9VTktO
T1dOOworICAgICAgICAgICAgcmV0dXJuIFRleHRQYXRoU3BhY2luZ0V4YWN0OworICAgICAgICBy
ZXR1cm4gVGV4dFBhdGhTcGFjaW5nVW5rbm93bjsKICAgICB9CiB9OwogCitjbGFzcyBTVkdUZXh0
UGF0aEVsZW1lbnQgOiBwdWJsaWMgU1ZHVGV4dENvbnRlbnRFbGVtZW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVibGljIFNWR1VSSVJlZmVyZW5jZSB7CitwdWJsaWM6CisgICAgLy8g
Rm9yd2FyZCBkZWNsYXJlIHRoZXNlIGVudW1zIGluIHRoZSB3M2MgbmFtaW5nIHNjaGVtZSwgZm9y
IElETCBnZW5lcmF0aW9uCisgICAgZW51bSB7CisgICAgICAgIFRFWFRQQVRIX01FVEhPRFRZUEVf
VU5LTk9XTiA9IFRleHRQYXRoTWV0aG9kVW5rbm93biwKKyAgICAgICAgVEVYVFBBVEhfTUVUSE9E
VFlQRV9BTElHTiA9IFRleHRQYXRoTWV0aG9kQWxpZ24sCisgICAgICAgIFRFWFRQQVRIX01FVEhP
RFRZUEVfU1RSRVRDSCA9IFRleHRQYXRoTWV0aG9kU3RyZXRjaCwKKyAgICAgICAgVEVYVFBBVEhf
U1BBQ0lOR1RZUEVfVU5LTk9XTiA9IFRleHRQYXRoU3BhY2luZ1Vua25vd24sCisgICAgICAgIFRF
WFRQQVRIX1NQQUNJTkdUWVBFX0FVVE8gPSBUZXh0UGF0aFNwYWNpbmdBdXRvLAorICAgICAgICBU
RVhUUEFUSF9TUEFDSU5HVFlQRV9FWEFDVCA9IFRleHRQYXRoU3BhY2luZ0V4YWN0CisgICAgfTsK
KworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1RleHRQYXRoRWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworIAorcHJpdmF0ZToKKyAgICBTVkdUZXh0UGF0
aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisKKyAgICB2aXJ0dWFs
IHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKKworICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CisKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwg
Ym9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOworCisg
ICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKKworICAgIEJF
R0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0UGF0aEVsZW1lbnQpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihNZXRob2QsIG1ldGhvZCwgU1ZHVGV4
dFBhdGhNZXRob2RUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNw
YWNpbmcsIHNwYWNpbmcsIFNWR1RleHRQYXRoU3BhY2luZ1R5cGUpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVElFUworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNiArMzMsMjcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0
aW9ucwotREVGSU5FX0FOSU1BVEVEX0xFTkdUSF9MSVNUKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKLURFRklORV9BTklNQVRFRF9MRU5HVEhfTElTVChT
VkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCi1ERUZJTkVf
QU5JTUFURURfTEVOR1RIX0xJU1QoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTmFtZXM6
OmR4QXR0ciwgRHgsIGR4KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSF9MSVNUKFNWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQsIFNWR05hbWVzOjpkeUF0dHIsIER5LCBkeSkKLURFRklORV9BTklNQVRF
RF9OVU1CRVJfTElTVChTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdOYW1lczo6cm90YXRl
QXR0ciwgUm90YXRlLCByb3RhdGUpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUwor
ICAgIERFRklORV9BTklNQVRFRF9MRU5HVEhfTElTVChTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSF9MSVNU
KFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKKyAgICBE
RUZJTkVfQU5JTUFURURfTEVOR1RIX0xJU1QoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZH
TmFtZXM6OmR4QXR0ciwgRHgsIGR4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEhfTElTVChT
VkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdOYW1lczo6ZHlBdHRyLCBEeSwgZHkpCisgICAg
REVGSU5FX0FOSU1BVEVEX05VTUJFUl9MSVNUKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNW
R05hbWVzOjpyb3RhdGVBdHRyLCBSb3RhdGUsIHJvdGF0ZSkKK0VORF9ERUZJTkVfQU5JTUFURURf
UFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
eCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5KQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGR4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVE
X1BST1BFUlRZKGR5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHJvdGF0
ZSkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0Q29udGVu
dEVsZW1lbnQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBTVkdUZXh0UG9z
aXRpb25pbmdFbGVtZW50OjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1RleHRDb250ZW50
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVy
dGllc0ZvclNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQoKTsKIH0KIAogYm9vbCBTVkdUZXh0UG9z
aXRpb25pbmdFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKQEAgLTEzOSw2MiArMTUwLDYgQEAgdm9pZCBTVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50OjpzdmdBdHRyaQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsK
LSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAg
ICBzeW5jaHJvbml6ZUR4KCk7Ci0gICAgICAgIHN5bmNocm9uaXplRHkoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVSb3RhdGUoKTsKLSAgICAgICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
ICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1RleHRDb250
ZW50RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZHhB
dHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRHgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZHlBdHRyKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplRHkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6cm90YXRlQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVJvdGF0ZSgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0K
LXZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCkKLXsKLSAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0KLSAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRl
ZExlbmd0aExpc3QpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoTGlzdCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjpkeEF0dHIsIEFuaW1hdGVkTGVuZ3RoTGlzdCk7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpkeUF0dHIsIEFuaW1hdGVkTGVu
Z3RoTGlzdCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpy
b3RhdGVBdHRyLCBBbmltYXRlZE51bWJlckxpc3QpOwotfQotCiBTVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50KiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjplbGVtZW50RnJvbVJlbmRlcmVyKFJl
bmRlck9iamVjdCogcmVuZGVyZXIpCiB7CiAgICAgaWYgKCFyZW5kZXJlcikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaAkocmV2aXNpb24g
OTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNSArMzgsMTQgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wg
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZvaWQg
ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX0xFTkdUSF9MSVNUKFgsIHgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEhfTElTVChZLCB5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIX0xJU1QoRHgsIGR4
KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIX0xJU1QoRHksIGR5KQotICAgIERFQ0xBUkVf
QU5JTUFURURfTlVNQkVSX0xJU1QoUm90YXRlLCByb3RhdGUpCisgICAgQkVHSU5fREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfTEVOR1RIX0xJU1QoWCwgeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9MRU5HVEhfTElTVChZLCB5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSF9MSVNU
KER4LCBkeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEhfTElTVChEeSwgZHkpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSX0xJU1QoUm90YXRlLCByb3RhdGUpCisgICAg
RU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHAJKHJldmlzaW9u
IDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYwLDE4ICs2MCw2IEBAIHZvaWQgU1ZHVGl0bGVFbGVtZW50OjpjaGlsZHJl
bkNoYW5nZWQoYm8KICAgICAgICAgZG9jdW1lbnQoKS0+c2V0VGl0bGVFbGVtZW50KFN0cmluZ1dp
dGhEaXJlY3Rpb24odGV4dENvbnRlbnQoKSwgTFRSKSwgdGhpcyk7CiB9CiAKLUF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBTVkdUaXRsZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7CiB9CiAKLXZvaWQgU1ZHVGl0bGVFbGVtZW50OjpmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoteyAgICAgICAgCi0gICAgU1ZHU3R5bGVkRWxl
bWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCkpOwotfQotCi19Ci0KLS8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBF
TkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuaAkocmV2aXNp
b24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQwLDkgKzQwLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY2hp
bGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNo
YW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDAp
OwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmlu
Z0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTUsMTMgKzU1LDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Ly8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9MRU5HVEgo
U1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQotREVGSU5FX0FOSU1BVEVEX0xF
TkdUSChTVkdVc2VFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCi1ERUZJTkVfQU5JTUFU
RURfTEVOR1RIKFNWR1VzZUVsZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0
aCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdo
dEF0dHIsIEhlaWdodCwgaGVpZ2h0KQotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdVc2VFbGVt
ZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKLURFRklORV9BTklNQVRFRF9C
T09MRUFOKFNWR1VzZUVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
QXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVE
X0xFTkdUSChTVkdVc2VFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCisgICAgREVGSU5F
X0FOSU1BVEVEX0xFTkdUSChTVkdVc2VFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCisg
ICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdVc2VFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhB
dHRyLCBXaWR0aCwgd2lkdGgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdVc2VFbGVt
ZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQpCisgICAgREVGSU5FX0FO
SU1BVEVEX1NUUklORyhTVkdVc2VFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwg
aHJlZikKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdVc2VFbGVtZW50LCBTVkdOYW1l
czo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdVc2VFbGVtZW50
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWSh3aWR0aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShoZWln
aHQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQor
ICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1Vz
ZUVsZW1lbnQ6OlNWR1VzZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCkBAIC03Myw2ICs4NSw3IEBAIGlubGluZSBTVkdVc2VFbGVtZW50OjpT
VkdVc2VFbGVtZW50KGNvbnMKICAgICAsIG1fbmVlZHNTaGFkb3dUcmVlUmVjcmVhdGlvbihmYWxz
ZSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6dXNlVGFnKSk7CisgICAgcmVn
aXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdVc2VFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQ
dHI8U1ZHVXNlRWxlbWVudD4gU1ZHVXNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTI0Myw4MSArMjU2LDYgQEAgdm9p
ZCBTVkdVc2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKAogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogfQogCi12b2lkIFNWR1VzZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFO
YW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWSgp
OwotICAgICAgICBzeW5jaHJvbml6ZVdpZHRoKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0
KCk7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAg
ICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJv
cGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAg
ICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6eEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVXaWR0
aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjpoZWlnaHRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
U1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBz
eW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdU
ZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGVzdHM6OnN5
bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIFNWR1VzZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHVXNlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOwotCi0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRM
ZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwot
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwg
QW5pbWF0ZWRTdHJpbmcpOwotfQotCiBzdGF0aWMgdm9pZCB1cGRhdGVDb250YWluZXJTaXplKFNW
R0VsZW1lbnRJbnN0YW5jZSogdGFyZ2V0SW5zdGFuY2UpCiB7CiAgICAgLy8gRGVwdGgtZmlyc3Qg
dXNlZCB0byB3cml0ZSB0aGUgbWV0aG9kIGluIGVhcmx5IGV4aXQgc3R5bGUsIG5vIHBhcnRpY3Vs
YXIgb3RoZXIgcmVhc29uLgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCShyZXZp
c2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTYzLDkgKzYzLDYgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVk
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VN
YXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1
YWwgdm9pZCByZWNhbGNTdHlsZShTdHlsZUNoYW5nZSA9IE5vQ2hhbmdlKTsKICAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSop
OwpAQCAtMTA2LDE3ICsxMDMsMTkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUNvbnRhaW5l
ck9mZnNldHMoKTsKICAgICB2b2lkIHVwZGF0ZUNvbnRhaW5lclNpemVzKCk7CiAKLSAgICAvLyBB
bmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdU
SChYLCB4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCi0gICAgREVDTEFSRV9B
TklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RI
KEhlaWdodCwgaGVpZ2h0KQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9B
TklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMoU1ZHVXNlRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9MRU5HVEgoWCwgeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFO
KEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisg
ICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8gU1ZHVGVzdHMKKyAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6
c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5
bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1
aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0
ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7
IH0KIAogICAgIGJvb2wgbV91cGRhdGVzQmxvY2tlZDsKICAgICBib29sIG1fbmVlZHNTaGFkb3dU
cmVlUmVjcmVhdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAko
cmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNiArMzEsMjUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0JP
T0xFQU4oU1ZHVmlld0VsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
QXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCkKLURFRklORV9BTklNQVRFRF9SRUNUKFNWR1ZpZXdFbGVtZW50LCBTVkdOYW1lczo6dmlld0Jv
eEF0dHIsIFZpZXdCb3gsIHZpZXdCb3gpCi1ERUZJTkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RS
QVRJTyhTVkdWaWV3RWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBQ
cmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorQkVHSU5fREVGSU5FX0FO
SU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdWaWV3RWxl
bWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIERFRklORV9B
TklNQVRFRF9SRUNUKFNWR1ZpZXdFbGVtZW50LCBTVkdOYW1lczo6dmlld0JveEF0dHIsIFZpZXdC
b3gsIHZpZXdCb3gpCisgICAgREVGSU5FX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oU1ZH
Vmlld0VsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgUHJlc2VydmVB
c3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKK0VORF9ERUZJTkVfQU5JTUFURURfUFJP
UEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1ZpZXdFbGVt
ZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkodmlld0Jv
eCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShwcmVzZXJ2ZUFzcGVjdFJh
dGlvKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVs
ZW1lbnQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHVmll
d0VsZW1lbnQ6OlNWR1ZpZXdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiAgICAgLCBtX3ZpZXdUYXJnZXQoU1ZHTmFtZXM6OnZpZXdUYXJnZXRBdHRyKQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjp2aWV3VGFnKSk7CisgICAgcmVnaXN0ZXJBbmlt
YXRlZFByb3BlcnRpZXNGb3JTVkdWaWV3RWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR1Zp
ZXdFbGVtZW50PiBTVkdWaWV3RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTgyLDUxICs5MSw2IEBAIHZvaWQgU1ZHVmll
d0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXQKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAotdm9pZCBTVkdWaWV3RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkg
ewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAg
ICAgU1ZHRml0VG9WaWV3Qm94OjpzeW5jaHJvbml6ZVByb3BlcnRpZXMoYXR0ck5hbWUpOwotICAg
ICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHko
YXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjp2aWV3VGFyZ2V0QXR0cikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRml0VG9WaWV3Qm94OjpzeW5jaHJvbml6ZVBy
b3BlcnRpZXMoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdWaWV3
RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsK
LX0KLQotdm9pZCBTVkdWaWV3RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZH
U3R5bGVkRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBBbmltYXRlZFJlY3QpOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIEFu
aW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShT
VkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDgsMjAgKzQ4LDE0IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IHN2Z0F0dHJpYnV0ZUNo
YW5nZWQgbWlzc2luZy4KICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQo
Y29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgLy8g
QW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi0gCi0gICAgLy8gU1ZHRml0
VG9WaWV3Qm94Ci0gICAgREVDTEFSRV9BTklNQVRFRF9SRUNUKFZpZXdCb3gsIHZpZXdCb3gpCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0UmF0
aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR1ZpZXdFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4o
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9SRUNUKFZpZXdCb3gsIHZpZXdCb3gpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBw
cmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMK
IAogICAgIFNWR1N0cmluZ0xpc3QgbV92aWV3VGFyZ2V0OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1ZpZXdTcGVjLmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVmlld1NwZWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMyArMzAsMjEgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVG
SU5FX0FOSU1BVEVEX1JFQ1QoU1ZHVmlld1NwZWMsIFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgVmll
d0JveCwgdmlld0JveCkKLURFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR1Zp
ZXdTcGVjLCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFByZXNlcnZlQXNwZWN0
UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVS
VElFUworICAgIERFRklORV9BTklNQVRFRF9SRUNUKFNWR1ZpZXdTcGVjLCBTVkdOYW1lczo6dmll
d0JveEF0dHIsIFZpZXdCb3gsIHZpZXdCb3gpCisgICAgREVGSU5FX0FOSU1BVEVEX1BSRVNFUlZF
QVNQRUNUUkFUSU8oU1ZHVmlld1NwZWMsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0
ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKK0VORF9ERUZJTkVf
QU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR1ZpZXdTcGVjKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHZpZXdC
b3gpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocHJlc2VydmVBc3BlY3RS
YXRpbykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIFNWR1ZpZXdTcGVjOjpT
VkdWaWV3U3BlYyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKICAgICA6IG1fY29udGV4dEVs
ZW1lbnQoY29udGV4dEVsZW1lbnQpCiB7CisgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwor
ICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVmlld1NwZWMoKTsKIH0KIAogdm9p
ZCBTVkdWaWV3U3BlYzo6c2V0VHJhbnNmb3JtKGNvbnN0IFN0cmluZyYgdHJhbnNmb3JtKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDExICs1NSwxMCBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0VsZW1lbnQqIG1fY29udGV4dEVsZW1lbnQ7CiAK
LSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLQotICAgIC8vIFNWR0ZpdFRv
Vmlld0JveAotICAgIERFQ0xBUkVfQU5JTUFURURfUkVDVChWaWV3Qm94LCB2aWV3Qm94KQotICAg
IERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlv
LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdWaWV3U3BlYykKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9SRUNUKFZpZXdCb3gs
IHZpZXdCb3gpCisgICAgCURFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVz
ZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgIEVORF9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMKIAogICAgIFNWR1RyYW5zZm9ybUxpc3QgbV90cmFuc2Zvcm07CiAg
ICAgU3RyaW5nIG1fdmlld1RhcmdldFN0cmluZzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZEVudW1lcmF0
aW9uUHJvcGVydHlUZWFyT2ZmLmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZi5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw4IEBAIHB1YmxpYzoKICAgICAgICAgU1ZHQW5pbWF0
ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmY8aW50Pjo6c2V0QmFzZVZhbChwcm9wZXJ0eSwgZWMpOwog
ICAgIH0KIAorICAgIEVudW1UeXBlJiByYXdBbmltYXRlZFZhbHVlKCkgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxFbnVtVHlwZSY+KFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmPGlu
dD46OnJhd0FuaW1hdGVkVmFsdWUoKSk7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgJ
KHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDEw
IEBAIHB1YmxpYzoKICAgICBQcm9wZXJ0eVR5cGUmIHZhbHVlcygpIHsgcmV0dXJuIG1fdmFsdWVz
OyB9CiAgICAgTGlzdFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMoKSB7IHJldHVybiBtX3dyYXBwZXJz
OyB9CiAKKyAgICAvLyBGSVhNRTogYW5pbVZhbCBzdXBwb3J0LgorICAgIGJvb2wgaXNBbmltYXRp
bmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIFByb3BlcnR5VHlwZSYgcmF3QW5pbWF0
ZWRWYWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWVzOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIFNWR0FuaW1hdGVkUHJvcGVydHk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmgJKHJldmlzaW9uIDkwNDU0KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMSwxNSArMjEsMTQgQEAKICNkZWZpbmUgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eV9oCiAKICNpZiBFTkFCTEUoU1ZHKQotI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNp
bmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJTVkdF
bGVtZW50LmgiCisjaW5jbHVkZSAiU1ZHUHJvcGVydHlJbmZvLmgiCiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdFbGVtZW50Owot
Y2xhc3MgU1ZHUHJvcGVydHk7CiAKIGNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHkgOiBwdWJsaWMg
UmVmQ291bnRlZDxTVkdBbmltYXRlZFByb3BlcnR5PiB7CiBwdWJsaWM6CkBAIC00NCw2ICs0Myw3
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNBbmltYXRlZExpc3RUZWFy
T2ZmKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5p
bVZhbCh2b2lkKikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgLy8gQ2FjaGluZyBm
YWNpbGl0aWVzLgogICAgIHR5cGVkZWYgSGFzaE1hcDxTVkdBbmltYXRlZFByb3BlcnR5RGVzY3Jp
cHRpb24sIFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiwgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURl
c2NyaXB0aW9uSGFzaCwgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uSGFzaFRyYWl0cz4g
Q2FjaGU7CkBAIC02MSwyMyArNjEsNDQgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVGVhck9mZlR5cGUsIHR5cGVuYW1lIFByb3BlcnR5VHlwZSwg
Ym9vbCBpc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudD4KKyAgICBzdHJ1Y3QgSGVscGVyOworCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVGVhck9mZlR5cGUsIHR5cGVuYW1lIFByb3BlcnR5VHlwZT4KLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxUZWFyT2ZmVHlwZT4gbG9va3VwT3JDcmVhdGVXcmFwcGVyKFNW
R0VsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlSWRlbnRpZmllciwgUHJvcGVydHlUeXBlJiBwcm9w
ZXJ0eSkKLSAgICB7Ci0gICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbiBrZXko
ZWxlbWVudCwgYXR0cmlidXRlSWRlbnRpZmllcik7Ci0gICAgICAgIFJlZlB0cjxTVkdBbmltYXRl
ZFByb3BlcnR5PiB3cmFwcGVyID0gYW5pbWF0ZWRQcm9wZXJ0eUNhY2hlKCktPmdldChrZXkpOwot
ICAgICAgICBpZiAoIXdyYXBwZXIpIHsKLSAgICAgICAgICAgIHdyYXBwZXIgPSBUZWFyT2ZmVHlw
ZTo6Y3JlYXRlKGVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIHByb3BlcnR5KTsKLSAgICAgICAgICAg
IGFuaW1hdGVkUHJvcGVydHlDYWNoZSgpLT5zZXQoa2V5LCB3cmFwcGVyKTsKKyAgICBzdHJ1Y3Qg
SGVscGVyPFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIGZhbHNlPiB7CisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFRlYXJPZmZUeXBlPiBsb29rdXBPckNyZWF0ZVdyYXBwZXIodm9pZCosIGNv
bnN0IFNWR1Byb3BlcnR5SW5mbyosIFByb3BlcnR5VHlwZSYpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8
VGVhck9mZlR5cGU+KCk7CiAgICAgICAgIH0KKyAgICB9OwogCi0gICAgICAgIHJldHVybiBzdGF0
aWNfcG9pbnRlcl9jYXN0PFRlYXJPZmZUeXBlPih3cmFwcGVyKS5yZWxlYXNlKCk7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVGVhck9mZlR5cGUsIHR5cGVuYW1lIFByb3BlcnR5VHlwZT4KKyAgICBz
dHJ1Y3QgSGVscGVyPFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIHRydWU+IHsKKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8VGVhck9mZlR5cGU+IGxvb2t1cE9yQ3JlYXRlV3JhcHBlcihTVkdF
bGVtZW50KiBlbGVtZW50LCBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIGluZm8sIFByb3BlcnR5VHlw
ZSYgcHJvcGVydHkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpbmZvKTsKKyAgICAg
ICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbiBrZXkoZWxlbWVudCwgaW5mby0+
cHJvcGVydHlJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIFJlZlB0cjxTVkdBbmltYXRlZFByb3Bl
cnR5PiB3cmFwcGVyID0gYW5pbWF0ZWRQcm9wZXJ0eUNhY2hlKCktPmdldChrZXkpOworICAgICAg
ICAgICAgaWYgKCF3cmFwcGVyKSB7CisgICAgICAgICAgICAgICAgd3JhcHBlciA9IFRlYXJPZmZU
eXBlOjpjcmVhdGUoZWxlbWVudCwgaW5mby0+YXR0cmlidXRlTmFtZSwgcHJvcGVydHkpOworICAg
ICAgICAgICAgICAgIGFuaW1hdGVkUHJvcGVydHlDYWNoZSgpLT5zZXQoa2V5LCB3cmFwcGVyKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PFRl
YXJPZmZUeXBlPih3cmFwcGVyKS5yZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlLCB0eXBlbmFtZSBUZWFyT2ZmVHlwZSwgdHlwZW5h
bWUgUHJvcGVydHlUeXBlLCBib29sIGlzRGVyaXZlZEZyb21TVkdFbGVtZW50PgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFRlYXJPZmZUeXBlPiBsb29rdXBPckNyZWF0ZVdyYXBwZXIoT3duZXJUeXBl
KiBlbGVtZW50LCBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIGluZm8sIFByb3BlcnR5VHlwZSYgcHJv
cGVydHkpCisgICAgeworICAgICAgICByZXR1cm4gSGVscGVyPFRlYXJPZmZUeXBlLCBQcm9wZXJ0
eVR5cGUsIGlzRGVyaXZlZEZyb21TVkdFbGVtZW50Pjo6bG9va3VwT3JDcmVhdGVXcmFwcGVyKGVs
ZW1lbnQsIGluZm8sIHByb3BlcnR5KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
ZWFyT2ZmVHlwZT4KLSAgICBzdGF0aWMgVGVhck9mZlR5cGUqIGxvb2t1cFdyYXBwZXIoU1ZHRWxl
bWVudCogZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVJZGVudGlmaWVyKQor
ICAgIHN0YXRpYyBUZWFyT2ZmVHlwZSogbG9va3VwV3JhcHBlcihTVkdFbGVtZW50KiBlbGVtZW50
LCBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIGluZm8pCiAgICAgewotICAgICAgICBTVkdBbmltYXRl
ZFByb3BlcnR5RGVzY3JpcHRpb24ga2V5KGVsZW1lbnQsIGF0dHJpYnV0ZUlkZW50aWZpZXIpOwor
ICAgICAgICBBU1NFUlQoaW5mbyk7CisgICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlw
dGlvbiBrZXkoZWxlbWVudCwgaW5mby0+cHJvcGVydHlJZGVudGlmaWVyKTsKICAgICAgICAgcmV0
dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8VGVhck9mZlR5cGU+KGFuaW1hdGVkUHJvcGVydHlDYWNo
ZSgpLT5nZXQoa2V5KSkuZ2V0KCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oCShy
ZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJvcGVydHlNYWNyb3MuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1t
ZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUg
Um9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
UmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC0yMDExLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMyw3ICsyMyw3IEBACiAjZGVmaW5lIFNWR0FuaW1h
dGVkUHJvcGVydHlNYWNyb3NfaAogCiAjaWYgRU5BQkxFKFNWRykKLSNpbmNsdWRlICJTVkdBbmlt
YXRlZFByb3BlcnR5U3luY2hyb25pemVyLmgiCisjaW5jbHVkZSAiU1ZHQXR0cmlidXRlVG9Qcm9w
ZXJ0eU1hcC5oIgogI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTU0LDE0ICs1NCwyNCBAQCBzdHJ1Y3QgR2V0T3duZXJFbGVtZW50Rm9yVHlw
ZTxPd25lclR5cGUsCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+CiBzdHJ1Y3QgSXNEZXJp
dmVkRnJvbVNWR0VsZW1lbnQgewogICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsK
KyAgICB0eXBlZGVmIE93bmVyVHlwZSBGb3J3YXJkZWRPd25lclR5cGU7CiB9OwogCiBjbGFzcyBT
VkdWaWV3U3BlYzsKIHRlbXBsYXRlPD4KIHN0cnVjdCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxT
VkdWaWV3U3BlYz4gewogICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7CisgICAg
dHlwZWRlZiBTVkdFbGVtZW50IEZvcndhcmRlZE93bmVyVHlwZTsKIH07CiAKK2NsYXNzIFNWR1Rl
c3RzOwordGVtcGxhdGU8Pgorc3RydWN0IElzRGVyaXZlZEZyb21TVkdFbGVtZW50PFNWR1Rlc3Rz
PiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsKKyAgICB0eXBlZGVmIFNW
R0VsZW1lbnQgRm9yd2FyZGVkT3duZXJUeXBlOworfTsKKworCiAvLyBTVkdTeW5jaHJvbml6YWJs
ZUFuaW1hdGVkUHJvcGVydHkgaW1wbGVtZW50YXRpb24KIHRlbXBsYXRlPHR5cGVuYW1lIFByb3Bl
cnR5VHlwZT4KIHN0cnVjdCBTVkdTeW5jaHJvbml6YWJsZUFuaW1hdGVkUHJvcGVydHkgewpAQCAt
ODksNjAgKzk5LDEyMSBAQCBzdHJ1Y3QgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5
CiAgICAgYm9vbCBzaG91bGRTeW5jaHJvbml6ZSA6IDE7CiB9OwogCi0jZGVmaW5lIERFRklORV9B
TklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRl
SWRlbnRpZmllciwgVGVhck9mZlR5cGUsIFByb3BlcnR5VHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93
ZXJQcm9wZXJ0eSkgXAotdm9pZCBPd25lclR5cGU6OnN5bmNocm9uaXplIyNVcHBlclByb3BlcnR5
KCkgXAorLy8gUHJvcGVydHkgcmVnaXN0cmF0aW9uIGhlbHBlcnMKKyNkZWZpbmUgQkVHSU5fUkVH
SVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhPd25lclR5cGUpIFwKK1NWR0F0dHJpYnV0ZVRvUHJv
cGVydHlNYXAmIE93bmVyVHlwZTo6YXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpIFwKIHsgXAotICAg
IGlmICghbV8jI0xvd2VyUHJvcGVydHkuc2hvdWxkU3luY2hyb25pemUpIFwKLSAgICAgICAgIHJl
dHVybjsgXAotICAgIEF0b21pY1N0cmluZyB2YWx1ZShTVkdQcm9wZXJ0eVRyYWl0czxQcm9wZXJ0
eVR5cGU+Ojp0b1N0cmluZyhMb3dlclByb3BlcnR5IyNCYXNlVmFsdWUoKSkpOyBcCi0gICAgU1ZH
RWxlbWVudCogY29udGV4dEVsZW1lbnQgPSBHZXRPd25lckVsZW1lbnRGb3JUeXBlPE93bmVyVHlw
ZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8T3duZXJUeXBlPjo6dmFsdWU+Ojpvd25lckVsZW1l
bnQodGhpcyk7IFwKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPElzRGVyaXZl
ZEZyb21TVkdFbGVtZW50PE93bmVyVHlwZT46OnZhbHVlPjo6c3luY2hyb25pemUoY29udGV4dEVs
ZW1lbnQsIERPTUF0dHJpYnV0ZSwgdmFsdWUpOyBcCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
VkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlNYXAsICgpKTsg
XAorICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlNYXA7IFwKIH0gXAogXAotUGFzc1Jl
ZlB0cjxUZWFyT2ZmVHlwZT4gT3duZXJUeXBlOjpMb3dlclByb3BlcnR5IyNBbmltYXRlZCgpIFwK
K3N0YXRpYyB2b2lkIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yIyNPd25lclR5cGUoKSBc
CiB7IFwKLSAgICBtXyMjTG93ZXJQcm9wZXJ0eS5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7IFwK
LSAgICBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCA9IEdldE93bmVyRWxlbWVudEZvclR5cGU8
T3duZXJUeXBlLCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5cGU+Ojp2YWx1ZT46Om93
bmVyRWxlbWVudCh0aGlzKTsgXAotICAgIHJldHVybiBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29r
dXBPckNyZWF0ZVdyYXBwZXI8VGVhck9mZlR5cGUsIFByb3BlcnR5VHlwZT4oY29udGV4dEVsZW1l
bnQsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgbV8jI0xvd2VyUHJv
cGVydHkudmFsdWUpOyBcCi19CisgICAgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgbWFwID0g
T3duZXJUeXBlOjphdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCk7IFwKKyAgICBpZiAoIW1hcC5pc0Vt
cHR5KCkpIFwKKyAgICAgICAgcmV0dXJuOyBcCisgICAgdHlwZWRlZiBPd25lclR5cGUgVXNlT3du
ZXJUeXBlOworCisjZGVmaW5lIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKExvd2Vy
UHJvcGVydHkpIFwKKyAgICAgbWFwLmFkZFByb3BlcnR5KFVzZU93bmVyVHlwZTo6TG93ZXJQcm9w
ZXJ0eSMjUHJvcGVydHlJbmZvKCkpOworCisjZGVmaW5lIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRF
RF9QUk9QRVJUSUVTKENsYXNzTmFtZSkgXAorICAgICBtYXAuYWRkUHJvcGVydGllcyhDbGFzc05h
bWU6OmF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKSk7IFwKKworI2RlZmluZSBFTkRfUkVHSVNURVJf
QU5JTUFURURfUFJPUEVSVElFUyB9CisKKy8vIFByb3BlcnR5IGRlZmluaXRpb24gaGVscGVycyAo
dXNlZCBpbiBTVkcqLmNwcCBmaWxlcykKKyNkZWZpbmUgQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BS
T1BFUlRJRVMKKworI2RlZmluZSBERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWRQcm9w
ZXJ0eVR5cGVFbnVtLCBPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRl
bnRpZmllciwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAorY29uc3QgU1ZHUHJvcGVy
dHlJbmZvKiBPd25lclR5cGU6Okxvd2VyUHJvcGVydHkjI1Byb3BlcnR5SW5mbygpIHsgXAorICAg
IHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIHNfcHJvcGVydHlJbmZvID0gMDsgXAorICAg
IGlmICghc19wcm9wZXJ0eUluZm8pIFwKKyAgICAgICAgc19wcm9wZXJ0eUluZm8gPSBuZXcgU1ZH
UHJvcGVydHlJbmZvKEFuaW1hdGVkUHJvcGVydHlUeXBlRW51bSwgXAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE9NQXR0cmlidXRlLCBcCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdET01BdHRyaWJ1dGVJZGVudGlm
aWVyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmT3du
ZXJUeXBlOjpzeW5jaHJvbml6ZSMjVXBwZXJQcm9wZXJ0eSwgXAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJk93bmVyVHlwZTo6bG9va3VwT3JDcmVhdGUjI1Vw
cGVyUHJvcGVydHkjI1dyYXBwZXIpOyBcCisgICAgXAorICAgIHJldHVybiBzX3Byb3BlcnR5SW5m
bzsgXAorfSAKKworI2RlZmluZSBFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworLy8g
UHJvcGVydHkgZGVjbGFyYXRpb24gaGVscGVycyAodXNlZCBpbiBTVkcqLmggZmlsZXMpCisjZGVm
aW5lIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhPd25lclR5cGUpIFwKK3B1Ymxp
YzogXAorICAgIHN0YXRpYyBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBhdHRyaWJ1dGVUb1By
b3BlcnR5TWFwKCk7IFwKKyAgICB2aXJ0dWFsIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAmIGxv
Y2FsQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpIFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIGF0
dHJpYnV0ZVRvUHJvcGVydHlNYXAoKTsgXAorICAgIH1cCisgICAgdHlwZWRlZiBPd25lclR5cGUg
VXNlT3duZXJUeXBlOwogCiAjZGVmaW5lIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoVGVhck9m
ZlR5cGUsIFByb3BlcnR5VHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAogcHVi
bGljOiBcCi1Qcm9wZXJ0eVR5cGUmIExvd2VyUHJvcGVydHkoKSBjb25zdCBcCi17IFwKLSAgICBy
ZXR1cm4gbV8jI0xvd2VyUHJvcGVydHkudmFsdWU7IFwKLX0gXAotXAotUHJvcGVydHlUeXBlJiBM
b3dlclByb3BlcnR5IyNCYXNlVmFsdWUoKSBjb25zdCBcCi17IFwKLSAgICByZXR1cm4gbV8jI0xv
d2VyUHJvcGVydHkudmFsdWU7IFwKLX0gXAotXAotdm9pZCBzZXQjI1VwcGVyUHJvcGVydHkjI0Jh
c2VWYWx1ZShjb25zdCBQcm9wZXJ0eVR5cGUmIHR5cGUpIFwKLXsgXAotICAgIG1fIyNMb3dlclBy
b3BlcnR5LnZhbHVlID0gdHlwZTsgXAotfSBcCi1cCi1QYXNzUmVmUHRyPFRlYXJPZmZUeXBlPiBM
b3dlclByb3BlcnR5IyNBbmltYXRlZCgpOyBcCi1cCisgICAgc3RhdGljIGNvbnN0IFNWR1Byb3Bl
cnR5SW5mbyogTG93ZXJQcm9wZXJ0eSMjUHJvcGVydHlJbmZvKCk7IFwKKyAgICBQcm9wZXJ0eVR5
cGUmIExvd2VyUHJvcGVydHkoKSBjb25zdCBcCisgICAgeyBcCisgICAgICAgIFNWR0VsZW1lbnQq
IGNvbnRleHRFbGVtZW50ID0gR2V0T3duZXJFbGVtZW50Rm9yVHlwZTxVc2VPd25lclR5cGUsIElz
RGVyaXZlZEZyb21TVkdFbGVtZW50PFVzZU93bmVyVHlwZT46OnZhbHVlPjo6b3duZXJFbGVtZW50
KGNvbnN0X2Nhc3Q8VXNlT3duZXJUeXBlKj4odGhpcykpOyBcCisgICAgICAgIGlmIChUZWFyT2Zm
VHlwZSogd3JhcHBlciA9IFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cFdyYXBwZXI8VGVhck9m
ZlR5cGU+KGNvbnRleHRFbGVtZW50LCBMb3dlclByb3BlcnR5IyNQcm9wZXJ0eUluZm8oKSkpIHsg
XAorICAgICAgICAgICAgaWYgKHdyYXBwZXItPmlzQW5pbWF0aW5nKCkpIFwKKyAgICAgICAgICAg
ICAgICByZXR1cm4gd3JhcHBlci0+cmF3QW5pbWF0ZWRWYWx1ZSgpOyBcCisgICAgICAgIH0gXAor
ICAgICAgICByZXR1cm4gbV8jI0xvd2VyUHJvcGVydHkudmFsdWU7IFwKKyAgICB9IFwKKyAgICBc
CisgICAgUHJvcGVydHlUeXBlJiBMb3dlclByb3BlcnR5IyNCYXNlVmFsdWUoKSBjb25zdCBcCisg
ICAgeyBcCisgICAgICAgIHJldHVybiBtXyMjTG93ZXJQcm9wZXJ0eS52YWx1ZTsgXAorICAgIH0g
XAorICAgIFwKKyAgICB2b2lkIHNldCMjVXBwZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKGNvbnN0IFBy
b3BlcnR5VHlwZSYgdHlwZSkgXAorICAgIHsgXAorICAgICAgICBtXyMjTG93ZXJQcm9wZXJ0eS52
YWx1ZSA9IHR5cGU7IFwKKyAgICB9IFwKKyAgICBcCisgICAgUGFzc1JlZlB0cjxUZWFyT2ZmVHlw
ZT4gTG93ZXJQcm9wZXJ0eSMjQW5pbWF0ZWQoKSBcCisgICAgeyBcCisgICAgICAgIG1fIyNMb3dl
clByb3BlcnR5LnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsgXAorICAgICAgICByZXR1cm4gc3Rh
dGljX3BvaW50ZXJfY2FzdDxUZWFyT2ZmVHlwZT4obG9va3VwT3JDcmVhdGUjI1VwcGVyUHJvcGVy
dHkjI1dyYXBwZXIodGhpcykpOyBcCisgICAgfSBcCisgICAgXAogcHJpdmF0ZTogXAotICAgIHZv
aWQgc3luY2hyb25pemUjI1VwcGVyUHJvcGVydHkoKTsgXAotXAorICAgIHZvaWQgc3luY2hyb25p
emUjI1VwcGVyUHJvcGVydHkoKSBcCisgICAgeyBcCisgICAgICAgIGlmICghbV8jI0xvd2VyUHJv
cGVydHkuc2hvdWxkU3luY2hyb25pemUpIFwKKyAgICAgICAgICAgIHJldHVybjsgXAorICAgICAg
ICBBdG9taWNTdHJpbmcgdmFsdWUoU1ZHUHJvcGVydHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6dG9T
dHJpbmcobV8jI0xvd2VyUHJvcGVydHkudmFsdWUpKTsgXAorICAgICAgICBTVkdFbGVtZW50KiBj
b250ZXh0RWxlbWVudCA9IEdldE93bmVyRWxlbWVudEZvclR5cGU8VXNlT3duZXJUeXBlLCBJc0Rl
cml2ZWRGcm9tU1ZHRWxlbWVudDxVc2VPd25lclR5cGU+Ojp2YWx1ZT46Om93bmVyRWxlbWVudCh0
aGlzKTsgXAorICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPElzRGVyaXZl
ZEZyb21TVkdFbGVtZW50PFVzZU93bmVyVHlwZT46OnZhbHVlPjo6c3luY2hyb25pemUoY29udGV4
dEVsZW1lbnQsIExvd2VyUHJvcGVydHkjI1Byb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lLCB2
YWx1ZSk7IFwKKyAgICB9IFwKKyAgICBcCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQW5pbWF0
ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGUjI1VwcGVyUHJvcGVydHkjI1dyYXBwZXIodm9pZCog
bWFza2VkT3duZXJUeXBlKSBcCisgICAgeyBcCisgICAgICAgIEFTU0VSVChtYXNrZWRPd25lclR5
cGUpOyBcCisgICAgICAgIFVzZU93bmVyVHlwZSogb3duZXJUeXBlID0gc3RhdGljX2Nhc3Q8VXNl
T3duZXJUeXBlKj4obWFza2VkT3duZXJUeXBlKTsgXAorICAgICAgICByZXR1cm4gU1ZHQW5pbWF0
ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFVzZU93bmVyVHlwZSwgVGVhck9mZlR5
cGUsIFByb3BlcnR5VHlwZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8VXNlT3duZXJUeXBlPjo6
dmFsdWU+KG93bmVyVHlwZSwgTG93ZXJQcm9wZXJ0eSMjUHJvcGVydHlJbmZvKCksIG93bmVyVHlw
ZS0+bV8jI0xvd2VyUHJvcGVydHkudmFsdWUpOyBcCisgICAgfSBcCisgICAgXAorICAgIHN0YXRp
YyB2b2lkIHN5bmNocm9uaXplIyNVcHBlclByb3BlcnR5KHZvaWQqIG1hc2tlZE93bmVyVHlwZSkg
XAorICAgIHsgXAorICAgICAgICBBU1NFUlQobWFza2VkT3duZXJUeXBlKTsgXAorICAgICAgICBV
c2VPd25lclR5cGUqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFVzZU93bmVyVHlwZSo+KG1hc2tl
ZE93bmVyVHlwZSk7IFwKKyAgICAgICAgb3duZXJUeXBlLT5zeW5jaHJvbml6ZSMjVXBwZXJQcm9w
ZXJ0eSgpOyBcCisgICAgfSBcCisgICAgXAogICAgIG11dGFibGUgU1ZHU3luY2hyb25pemFibGVB
bmltYXRlZFByb3BlcnR5PFByb3BlcnR5VHlwZT4gbV8jI0xvd2VyUHJvcGVydHk7CiAKKyNkZWZp
bmUgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyAKKworLy8gTGlzdCBzcGVjaWZpYyBk
ZWZpbml0aW9uL2RlY2xhcmF0aW9uIGhlbHBlcnMKICNkZWZpbmUgREVDTEFSRV9BTklNQVRFRF9M
SVNUX1BST1BFUlRZKFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJvcGVydHksIExv
d2VyUHJvcGVydHkpIFwKIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoVGVhck9mZlR5cGUsIFBy
b3BlcnR5VHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotdm9pZCBkZXRhY2hB
bmltYXRlZCMjVXBwZXJQcm9wZXJ0eSMjTGlzdFdyYXBwZXJzKHVuc2lnbmVkIG5ld0xpc3RTaXpl
KTsKLQotI2RlZmluZSBERUZJTkVfQU5JTUFURURfTElTVF9QUk9QRVJUWShPd25lclR5cGUsIERP
TUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgVGVhck9mZlR5cGUsIFByb3Bl
cnR5VHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVE
X1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlm
aWVyLCBUZWFyT2ZmVHlwZSwgUHJvcGVydHlUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3Bl
cnR5KSBcCi12b2lkIE93bmVyVHlwZTo6ZGV0YWNoQW5pbWF0ZWQjI1VwcGVyUHJvcGVydHkjI0xp
c3RXcmFwcGVycyh1bnNpZ25lZCBuZXdMaXN0U2l6ZSkgXAordm9pZCBkZXRhY2hBbmltYXRlZCMj
VXBwZXJQcm9wZXJ0eSMjTGlzdFdyYXBwZXJzKHVuc2lnbmVkIG5ld0xpc3RTaXplKSBcCiB7IFwK
LSAgICBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCA9IEdldE93bmVyRWxlbWVudEZvclR5cGU8
T3duZXJUeXBlLCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5cGU+Ojp2YWx1ZT46Om93
bmVyRWxlbWVudCh0aGlzKTsgXAotICAgIFNWR0FuaW1hdGVkUHJvcGVydHkqIHdyYXBwZXIgPSBT
VkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBXcmFwcGVyPFRlYXJPZmZUeXBlPihjb250ZXh0RWxl
bWVudCwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpKTsgXAotICAgIGlmICghd3JhcHBlcikgXAot
ICAgICAgICByZXR1cm47IFwKLSAgICBzdGF0aWNfY2FzdDxUZWFyT2ZmVHlwZSo+KHdyYXBwZXIp
LT5kZXRhY2hMaXN0V3JhcHBlcnMobmV3TGlzdFNpemUpOyBcCisgICAgaWYgKFNWR0FuaW1hdGVk
UHJvcGVydHkqIHdyYXBwZXIgPSBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBXcmFwcGVyPFRl
YXJPZmZUeXBlPih0aGlzLCBMb3dlclByb3BlcnR5IyNQcm9wZXJ0eUluZm8oKSkpIFwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8VGVhck9mZlR5cGUqPih3cmFwcGVyKS0+ZGV0YWNoTGlzdFdyYXBwZXJz
KG5ld0xpc3RTaXplKTsgXAogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmLmgJKHJldmlz
aW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVRlYXJPZmYuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsMjcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbV9hbmltVmFsLmdldCgpOwogICAgIH0KIAorICAgIGJvb2wgaXNB
bmltYXRpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzQW5pbWF0aW5nOyB9CisKKyAgICBQcm9wZXJ0
eVR5cGUmIHJhd0FuaW1hdGVkVmFsdWUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYW5pbVZh
bCk7CisgICAgICAgIEFTU0VSVChtX2lzQW5pbWF0aW5nKTsKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFNWR1Byb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVR5cGU+Kj4obV9hbmltVmFsLmdldCgp
KS0+cHJvcGVydHlSZWZlcmVuY2UoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
QW5pbVZhbCh2b2lkKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8U1ZHUHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT4qPihhbmlt
VmFsKCkpLT51cGRhdGVBbmltVmFsKHJlaW50ZXJwcmV0X2Nhc3Q8UHJvcGVydHlUeXBlKj4odmFs
dWUpKTsKKyAgICAgICAgICAgIG1faXNBbmltYXRpbmcgPSB0cnVlOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHUHJvcGVydHlUZWFyT2Zm
PFByb3BlcnR5VHlwZT4qPihhbmltVmFsKCkpLT51cGRhdGVBbmltVmFsKCZtX3Byb3BlcnR5KTsK
KyAgICAgICAgbV9pc0FuaW1hdGluZyA9IGZhbHNlOworICAgIH0KKwogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTsKIApAQCAtNTUsMTEgKzc2LDEzIEBAIHBy
aXZhdGU6CiAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYoU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFByb3BlcnR5VHlw
ZSYgcHJvcGVydHkpCiAgICAgICAgIDogU1ZHQW5pbWF0ZWRQcm9wZXJ0eShjb250ZXh0RWxlbWVu
dCwgYXR0cmlidXRlTmFtZSkKICAgICAgICAgLCBtX3Byb3BlcnR5KHByb3BlcnR5KQorICAgICAg
ICAsIG1faXNBbmltYXRpbmcoZmFsc2UpCiAgICAgewogICAgIH0KIAogcHJpdmF0ZToKICAgICBQ
cm9wZXJ0eVR5cGUmIG1fcHJvcGVydHk7CisgICAgYm9vbCBtX2lzQW5pbWF0aW5nIDogMTsKIAog
ICAgIFJlZlB0cjxTVkdQcm9wZXJ0eT4gbV9iYXNlVmFsOwogICAgIFJlZlB0cjxTVkdQcm9wZXJ0
eT4gbV9hbmltVmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oCShyZXZp
c2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
U3RhdGljUHJvcGVydHlUZWFyT2ZmLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAK
IAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIgorI2lu
Y2x1ZGUgIlNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC00NSw4ICs0Niw5IEBAIHB1YmxpYzoKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7CiAg
ICAgfQogCi0gICAgLy8gRklYTUU6IE5vIGFuaW1WYWwgc3VwcG9ydC4KLSAgICB2b2lkIHNldEFu
aW1WYWwoY29uc3QgUHJvcGVydHlUeXBlJikgeyB9CisgICAgLy8gRklYTUU6IGFuaW1WYWwgc3Vw
cG9ydC4KKyAgICBib29sIGlzQW5pbWF0aW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBQcm9wZXJ0eVR5cGUmIHJhd0FuaW1hdGVkVmFsdWUoKSB7IHJldHVybiBtX3Byb3BlcnR5OyB9
CiAKIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlN
YXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0
dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlv
biBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5o
IgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit2b2lkIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA6OmFuaW1hdGVkUHJvcGVydGllc0Zv
ckF0dHJpYnV0ZShTVkdFbGVtZW50KiBvd25lclR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUsIFZlY3RvcjxSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gPiYgcHJvcGVy
dGllcykKK3sKKyAgICBBU1NFUlQob3duZXJUeXBlKTsKKyAgICBQcm9wZXJ0aWVzVmVjdG9yKiB2
ZWN0b3IgPSBtX21hcC5nZXQoYXR0cmlidXRlTmFtZSk7CisgICAgaWYgKCF2ZWN0b3IpCisgICAg
ICAgIHJldHVybjsKKworICAgIFByb3BlcnRpZXNWZWN0b3I6Oml0ZXJhdG9yIHZlY3RvckVuZCA9
IHZlY3Rvci0+ZW5kKCk7CisgICAgZm9yIChQcm9wZXJ0aWVzVmVjdG9yOjppdGVyYXRvciB2ZWN0
b3JJdCA9IHZlY3Rvci0+YmVnaW4oKTsgdmVjdG9ySXQgIT0gdmVjdG9yRW5kOyArK3ZlY3Rvckl0
KQorICAgICAgICBwcm9wZXJ0aWVzLmFwcGVuZChhbmltYXRlZFByb3BlcnR5KG93bmVyVHlwZSwg
YXR0cmlidXRlTmFtZSwgKnZlY3Rvckl0KSk7Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Q
cm9wZXJ0eU1hcC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEz
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAx
MS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFw
X2gKKyNkZWZpbmUgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcF9oCisKKyNpZiBFTkFCTEUoU1ZH
KQorI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZFByb3Bl
cnR5U3luY2hyb25pemVyLmgiCisjaW5jbHVkZSAiU1ZHUHJvcGVydHlJbmZvLmgiCisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTVkdBbmlt
YXRlZFByb3BlcnR5OworY2xhc3MgU1ZHRWxlbWVudDsKKworY2xhc3MgU1ZHQXR0cmlidXRlVG9Q
cm9wZXJ0eU1hcCB7CitwdWJsaWM6CisgICAgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpIHsg
fQorICAgIH5TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCkgeyBkZWxldGVBbGxWYWx1ZXMobV9t
YXApOyB9CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX21hcC5pc0VtcHR5
KCk7IH0KKworICAgIHZvaWQgYWRkUHJvcGVydGllcyhTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFw
JiBtYXApCisgICAgeworICAgICAgICBBdHRyaWJ1dGVUb1Byb3BlcnRpZXNNYXA6Oml0ZXJhdG9y
IGVuZCA9IG1hcC5tX21hcC5lbmQoKTsKKyAgICAgICAgZm9yIChBdHRyaWJ1dGVUb1Byb3BlcnRp
ZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLm1fbWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
eworICAgICAgICAgICAgUHJvcGVydGllc1ZlY3RvciogdmVjdG9yID0gaXQtPnNlY29uZDsKKyAg
ICAgICAgICAgIEFTU0VSVCh2ZWN0b3IpOworCisgICAgICAgICAgICBQcm9wZXJ0aWVzVmVjdG9y
OjppdGVyYXRvciB2ZWN0b3JFbmQgPSB2ZWN0b3ItPmVuZCgpOworICAgICAgICAgICAgZm9yIChQ
cm9wZXJ0aWVzVmVjdG9yOjppdGVyYXRvciB2ZWN0b3JJdCA9IHZlY3Rvci0+YmVnaW4oKTsgdmVj
dG9ySXQgIT0gdmVjdG9yRW5kOyArK3ZlY3Rvckl0KQorICAgICAgICAgICAgICAgIGFkZFByb3Bl
cnR5KCp2ZWN0b3JJdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGFkZFByb3BlcnR5
KGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogaW5mbykKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmZv
KTsKKyAgICAgICAgQVNTRVJUKGluZm8tPmF0dHJpYnV0ZU5hbWUgIT0gYW55UU5hbWUoKSk7Cisg
ICAgICAgIGlmIChQcm9wZXJ0aWVzVmVjdG9yKiB2ZWN0b3IgPSBtX21hcC5nZXQoaW5mby0+YXR0
cmlidXRlTmFtZSkpIHsKKyAgICAgICAgICAgIHZlY3Rvci0+YXBwZW5kKGluZm8pOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFByb3BlcnRpZXNWZWN0b3IqIHZlY3Rv
ciA9IG5ldyBQcm9wZXJ0aWVzVmVjdG9yOworICAgICAgICB2ZWN0b3ItPmFwcGVuZChpbmZvKTsK
KyAgICAgICAgbV9tYXAuc2V0KGluZm8tPmF0dHJpYnV0ZU5hbWUsIHZlY3Rvcik7CisgICAgfQor
CisgICAgdm9pZCBhbmltYXRlZFByb3BlcnRpZXNGb3JBdHRyaWJ1dGUoU1ZHRWxlbWVudCogY29u
dGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFZlY3RvcjxS
ZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gPiYgcHJvcGVydGllcyk7CisKKyAgICB2b2lkIGFu
aW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsIFZlY3RvcjxBbmltYXRlZFByb3BlcnR5VHlwZT4mIHByb3BlcnR5VHlwZXMpCisg
ICAgeworICAgICAgICBQcm9wZXJ0aWVzVmVjdG9yKiB2ZWN0b3IgPSBtX21hcC5nZXQoYXR0cmli
dXRlTmFtZSk7CisgICAgICAgIGlmICghdmVjdG9yKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIFByb3BlcnRpZXNWZWN0b3I6Oml0ZXJhdG9yIHZlY3RvckVuZCA9IHZlY3Rvci0+ZW5k
KCk7CisgICAgICAgIGZvciAoUHJvcGVydGllc1ZlY3Rvcjo6aXRlcmF0b3IgdmVjdG9ySXQgPSB2
ZWN0b3ItPmJlZ2luKCk7IHZlY3Rvckl0ICE9IHZlY3RvckVuZDsgKyt2ZWN0b3JJdCkKKyAgICAg
ICAgICAgIHByb3BlcnR5VHlwZXMuYXBwZW5kKCgqdmVjdG9ySXQpLT5hbmltYXRlZFByb3BlcnR5
VHlwZSk7CisgICAgfQorCisgICAgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnRpZXMoU1ZHRWxlbWVu
dCogY29udGV4dEVsZW1lbnQpCisgICAgeworICAgICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQp
OworICAgICAgICBBdHRyaWJ1dGVUb1Byb3BlcnRpZXNNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fbWFw
LmVuZCgpOworICAgICAgICBmb3IgKEF0dHJpYnV0ZVRvUHJvcGVydGllc01hcDo6aXRlcmF0b3Ig
aXQgPSBtX21hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIFByb3Bl
cnRpZXNWZWN0b3IqIHZlY3RvciA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBBU1NFUlQodmVj
dG9yKTsKKworICAgICAgICAgICAgUHJvcGVydGllc1ZlY3Rvcjo6aXRlcmF0b3IgdmVjdG9yRW5k
ID0gdmVjdG9yLT5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoUHJvcGVydGllc1ZlY3Rvcjo6aXRl
cmF0b3IgdmVjdG9ySXQgPSB2ZWN0b3ItPmJlZ2luKCk7IHZlY3Rvckl0ICE9IHZlY3RvckVuZDsg
Kyt2ZWN0b3JJdCkKKyAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnRleHRF
bGVtZW50LCBpdC0+Zmlyc3QsICp2ZWN0b3JJdCk7CisgICAgICAgIH0gCisgICAgfQorCisgICAg
Ym9vbCBzeW5jaHJvbml6ZVByb3BlcnR5KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNv
bnRleHRFbGVtZW50KTsKKyAgICAgICAgUHJvcGVydGllc1ZlY3RvciogdmVjdG9yID0gbV9tYXAu
Z2V0KGF0dHJpYnV0ZU5hbWUpOworICAgICAgICBpZiAoIXZlY3RvcikKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBQcm9wZXJ0aWVzVmVjdG9yOjppdGVyYXRvciB2ZWN0b3JF
bmQgPSB2ZWN0b3ItPmVuZCgpOworICAgICAgICBmb3IgKFByb3BlcnRpZXNWZWN0b3I6Oml0ZXJh
dG9yIHZlY3Rvckl0ID0gdmVjdG9yLT5iZWdpbigpOyB2ZWN0b3JJdCAhPSB2ZWN0b3JFbmQ7ICsr
dmVjdG9ySXQpCisgICAgICAgICAgICBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnRleHRFbGVtZW50
LCBhdHRyaWJ1dGVOYW1lLCAqdmVjdG9ySXQpOworCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoU1ZHRWxlbWVudCog
Y29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0
IFNWR1Byb3BlcnR5SW5mbyogaW5mbykKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmZvKTsKKyAg
ICAgICAgQVNTRVJUKGF0dHJpYnV0ZU5hbWUgPT0gaW5mby0+YXR0cmlidXRlTmFtZSk7CisgICAg
ICAgIEFTU0VSVChpbmZvLT5zeW5jaHJvbml6ZVByb3BlcnR5KTsKKyAgICAgICAgKCppbmZvLT5z
eW5jaHJvbml6ZVByb3BlcnR5KShjb250ZXh0RWxlbWVudCk7CisgICAgfQorCisgICAgUGFzc1Jl
ZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBhbmltYXRlZFByb3BlcnR5KFNWR0VsZW1lbnQqIGNv
bnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBT
VkdQcm9wZXJ0eUluZm8qIGluZm8pCisgICAgeworICAgICAgICBBU1NFUlQoaW5mbyk7CisgICAg
ICAgIEFTU0VSVChhdHRyaWJ1dGVOYW1lID09IGluZm8tPmF0dHJpYnV0ZU5hbWUpOworICAgICAg
ICBBU1NFUlQoaW5mby0+bG9va3VwT3JDcmVhdGVXcmFwcGVyRm9yQW5pbWF0ZWRQcm9wZXJ0eSk7
CisgICAgICAgIHJldHVybiAoKmluZm8tPmxvb2t1cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVk
UHJvcGVydHkpKGNvbnRleHRFbGVtZW50KTsKKyAgICB9CisKKyAgICB0eXBlZGVmIFZlY3Rvcjxj
b25zdCBTVkdQcm9wZXJ0eUluZm8qPiBQcm9wZXJ0aWVzVmVjdG9yOworICAgIHR5cGVkZWYgSGFz
aE1hcDxRdWFsaWZpZWROYW1lLCBQcm9wZXJ0aWVzVmVjdG9yKj4gQXR0cmlidXRlVG9Qcm9wZXJ0
aWVzTWFwOworICAgIEF0dHJpYnV0ZVRvUHJvcGVydGllc01hcCBtX21hcDsKK307CisKK30KKwor
I2VuZGlmCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1By
b3BlcnR5SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR1Byb3BlcnR5SW5mby5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgU1ZHUHJvcGVydHlJbmZvX2gKKyNkZWZpbmUgU1ZH
UHJvcGVydHlJbmZvX2gKKworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiUXVhbGlmaWVkTmFt
ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTsKKworZW51bSBBbmltYXRlZFByb3BlcnR5VHlw
ZSB7CisgICAgQW5pbWF0ZWRBbmdsZSwKKyAgICBBbmltYXRlZEJvb2xlYW4sCisgICAgQW5pbWF0
ZWRDb2xvciwKKyAgICBBbmltYXRlZEVudW1lcmF0aW9uLAorICAgIEFuaW1hdGVkSW50ZWdlciwK
KyAgICBBbmltYXRlZExlbmd0aCwKKyAgICBBbmltYXRlZExlbmd0aExpc3QsCisgICAgQW5pbWF0
ZWROdW1iZXIsCisgICAgQW5pbWF0ZWROdW1iZXJMaXN0LAorICAgIEFuaW1hdGVkTnVtYmVyT3B0
aW9uYWxOdW1iZXIsCisgICAgQW5pbWF0ZWRQYXRoLAorICAgIEFuaW1hdGVkUG9pbnRzLAorICAg
IEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbywKKyAgICBBbmltYXRlZFJlY3QsCisgICAgQW5p
bWF0ZWRTdHJpbmcsCisgICAgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LAorICAgIEFuaW1hdGVkVW5r
bm93bgorfTsKKworc3RydWN0IFNWR1Byb3BlcnR5SW5mbyB7CisgICAgdHlwZWRlZiB2b2lkICgq
U3luY2hyb25pemVQcm9wZXJ0eSkodm9pZCopOworICAgIHR5cGVkZWYgUGFzc1JlZlB0cjxTVkdB
bmltYXRlZFByb3BlcnR5PiAoKkxvb2t1cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVy
dHkpKHZvaWQqKTsKKworICAgIFNWR1Byb3BlcnR5SW5mbyhBbmltYXRlZFByb3BlcnR5VHlwZSBu
ZXdUeXBlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuZXdBdHRyaWJ1dGVOYW1lLAorICAgICAgICAg
ICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1Byb3BlcnR5SWRlbnRpZmllciwgU3lu
Y2hyb25pemVQcm9wZXJ0eSBuZXdTeW5jaHJvbml6ZVByb3BlcnR5LAorICAgICAgICAgICAgICAg
ICAgICBMb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JBbmltYXRlZFByb3BlcnR5IG5ld0xvb2t1cE9y
Q3JlYXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVydHkpCisgICAgICAgIDogYW5pbWF0ZWRQcm9w
ZXJ0eVR5cGUobmV3VHlwZSkKKyAgICAgICAgLCBhdHRyaWJ1dGVOYW1lKG5ld0F0dHJpYnV0ZU5h
bWUpCisgICAgICAgICwgcHJvcGVydHlJZGVudGlmaWVyKG5ld1Byb3BlcnR5SWRlbnRpZmllcikK
KyAgICAgICAgLCBzeW5jaHJvbml6ZVByb3BlcnR5KG5ld1N5bmNocm9uaXplUHJvcGVydHkpCisg
ICAgICAgICwgbG9va3VwT3JDcmVhdGVXcmFwcGVyRm9yQW5pbWF0ZWRQcm9wZXJ0eShuZXdMb29r
dXBPckNyZWF0ZVdyYXBwZXJGb3JBbmltYXRlZFByb3BlcnR5KQorICAgIHsKKyAgICB9CisKKyAg
ICBBbmltYXRlZFByb3BlcnR5VHlwZSBhbmltYXRlZFByb3BlcnR5VHlwZTsKKyAgICBjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcHJv
cGVydHlJZGVudGlmaWVyOworICAgIFN5bmNocm9uaXplUHJvcGVydHkgc3luY2hyb25pemVQcm9w
ZXJ0eTsKKyAgICBMb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JBbmltYXRlZFByb3BlcnR5IGxvb2t1
cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVydHk7Cit9OworCit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoU1ZHKQorI2VuZGlmIC8vIFNWR1Byb3BlcnR5SW5mb19oCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRlYXJPZmYuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRlYXJPZmYuaAkocmV2
aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0
eVRlYXJPZmYuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsMTMgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9sZTsg
fQogCisgICAgdm9pZCB1cGRhdGVBbmltVmFsKFByb3BlcnR5VHlwZSogdmFsdWUpCisgICAgewor
ICAgICAgICBBU1NFUlQoIW1fdmFsdWVJc0NvcHkpOworICAgICAgICBBU1NFUlQobV9yb2xlID09
IEFuaW1WYWxSb2xlKTsKKyAgICAgICAgbV92YWx1ZSA9IHZhbHVlOworICAgIH0KKwogcHJvdGVj
dGVkOgogICAgIFNWR1Byb3BlcnR5VGVhck9mZihTVkdBbmltYXRlZFByb3BlcnR5KiBhbmltYXRl
ZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgUHJvcGVydHlUeXBlJiB2YWx1ZSkKICAg
ICAgICAgOiBtX2FuaW1hdGVkUHJvcGVydHkoYW5pbWF0ZWRQcm9wZXJ0eSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99835</attachid>
            <date>2011-07-06 08:30:06 -0700</date>
            <delta_ts>2011-07-07 08:33:55 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>AnimValPrep-v3.diff</filename>
            <type>text/plain</type>
            <size>489873</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwNDU3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTY2IEBACisyMDExLTA3LTA2ICBOaWtvbGFz
IFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIEFkZCBhIHBvc3Np
YmlsaXR5IHRvIHJldHJpZXZlIHRoZSBhc3NvY2lhdGVkIFNWR0FuaW1hdGVkUHJvcGVydHkgb2Jq
ZWN0IGZvciBhIGNlcnRhaW4gWE1MIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM3OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbiBvcmRlciB0byBwcmVwYXJlIGFuaW1WYWwgc3VwcG9y
dCB3ZSBuZWVkIGEgd2F5IHRvIG1hcCBhIGdpdmVuIFNWRyBET00gYXR0cmlidXRlIHRvIGEgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eS4KKyAgICAgICAgZWcuIFNWR05hbWVzOjp4QXR0ciAtPiBTVkdSZWN0
RWxlbWVudDo6eEFuaW1hdGVkKCksIGV0Yy4gVGhpcyB3aWxsIGJlIG5lZWRlZCB0byB1cGRhdGUg
dGhlIGFuaW1WYWwgb2YgdGhlCisgICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHksIGlmIGFuIGFu
aW1hdGlvbiBpcyBydW5uaW5nLiBJdCB3b3VsZCByZXF1aXJlZCBhZGRpbmcgYSBuZXcgbWV0aG9k
IHRvIGFsbCBTVkcqIGNsYXNzZXMKKyAgICAgICAgdGhhdCBkZWZpbmUgYW5pbWF0ZWQgcHJvcGVy
dGllcy4gVW5mb3J0dW5hdGVseSB3ZSBhbHJlYWR5IGhhdmUgbG90cyBvZiByZXBlYXRlZCBjb2Rl
IGluIG1ldGhvZHMgbGlrZQorICAgICAgICBzeW5jaHJvbml6ZVByb3BlcnR5IC8gZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLiBMb29rIGF0IFNWR1JlY3RFbGVtZW50IGZvciBleGFtcGxl
OgorCisgICAgICAgIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChh
dHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7CisgICAgICAgICAgICAgICAgc3luY2hyb25pemVYKCk7
CisgICAgICAgICAgICAgICAgc3luY2hyb25pemVZKCk7CisgICAgICAgICAgICAgICAgIC4uLgor
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
eEF0dHIpIHsKKyAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZVgoKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6eUF0dHIpIHsKKyAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZVkoKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAuLi4KKyAgICAg
ICAgfQorCisgICAgICAgIG9yCisKKyAgICAgICAgdm9pZCBTVkdSZWN0RWxlbWVudDo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKKyAgICAgICAgeworICAgICAgICAgICAgQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAgICAgCisgICAgICAgICAgICBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKKyAgICAgICAgICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
KyAgICAgICAgICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICAgICAgICAgIC4uLgorICAgICAgICB9CisKKyAgICAg
ICAgVGhlc2UgbG9va3VwcyBhcmUgYWxsIHBlcmZvcm1lZCBkeW5hbWljYWxseS4gRWFjaCBzeW5j
aHJvbml6ZVByb3BlcnR5KCkgY2FsbCBkb2VzIGEgbG90IG9mIGNvbXBhcmlzaW9ucy4KKyAgICAg
ICAgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkgaXNuJ3QgdGhhdCBiYWQgYXMgdGhl
IHJlc3VsdCBpcyBjYWNoZWQgaW4gYSBzdGF0aWMgSGFzaE1hcCBwZXItU1ZHUmVjdEVsZW1lbnQu
CisgICAgICAgIFRoZXJlJ3Mgbm8gcmVhc29uIHRvIGRvIHRoZXNlIHRoaW5ncyBkeW5hbWljYWxs
eSEKKworICAgICAgICBJbnNwaXJlZCBieSBKU0MsIEknbSBhZGRpbmcgYSAic3RhdGljIGNvbnN0
IFNWR1Byb3BlcnR5SW5mbyBzX2Zvb1Byb3BlcnR5SW5mbyIgb2JqZWN0IGZvciBlYWNoIGFuaW1h
dGVkIFNWRyBwcm9wZXJ0eS4KKyAgICAgICAgRm9yIGV4YW1wbGUsIGZvciBTVkdSZWN0RWxlbWVu
dHMgU1ZHQW5pbWF0ZWRMZW5ndGggeCBwcm9wZXJ0eSB3ZSdyZSBzdG9yaW5nOgorICAgICAgICAt
ICJBbmltYXRlZFByb3BlcnR5VHlwZSB0eXBlIiAoQW5pbWF0ZWRMZW5ndGgpCisgICAgICAgIC0g
ImNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUiIChTVkdOYW1lczo6eEF0dHIpCisg
ICAgICAgIC0gImNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlJZGVudGlmaWVyIiAoU1ZHTmFt
ZXM6OnhBdHRyLmxvY2FsTmFtZSgpIC0tIG9ubHkgZGlmZmVyZW50IGlmIE4td3JhcHBlcnMgbWFw
IHRvIGEgc2luZ2xlIFhNTCBET00gYXR0cmlidXRlLCBlZy4gb3JpZW50QXR0cikKKyAgICAgICAg
LSAiU3luY2hyb25pemVQcm9wZXJ0eSBzeW5jaHJvbml6ZVByb3BlcnR5IiAoY2FsbGJhY2sgdG8g
U1ZHUmVjdEVsZW1lbnQ6OnN5bmNocm9uaXplWCkKKyAgICAgICAgLSAiTG9va3VwT3JDcmVhdGVX
cmFwcGVyRm9yQW5pbWF0ZWRQcm9wZXJ0eSBsb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JBbmltYXRl
ZFByb3BlcnR5IiAoY2FsbGJhY2sgdG8gU1ZHUmVjdEVsZW1lbnQ6OnhBbmltYXRlZCkKKworICAg
ICAgICBVc2luZyB0aGVzZSBpbmZvcm1hdGlvbiwgd2UgY2FuIHJlcGxhY2UgYWxsIHRoZSB2YXJp
b3VzIHN5bmNocm9uaXplUHJvcGVydHkvZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAgaW1wbGVt
ZW50YXRpb25zLCB3aXRoIGEgc2luZ2xlIG9uZSBpbiBTVkdFbGVtZW50LgorICAgICAgICBBbGwg
dGhlc2UgYXJlIGF1dG8tZ2VuZXJhdGVkLCB1c2luZyB0aGUgc3RhbmRhcmQgbWFjcm9zIHVzZWQg
dG8gZGVmaW5lL2RlY2xhcmUgU1ZHIGFuaW1hdGVkIHByb3BlcnRpZXMuIFRoaXMgcmVxdWlyZWQg
c2V2ZXJhbCBjaGFuZ2VzIHRvIHRoZSBtYWNyb3MuCisgICAgICAgIEhlcmUncyBhIHN1bW1hcnk6
CisgICAgCisgICAgICAgICMxKSBJbiBhbGwgaGVhZGVycywgd3JhcCBERUNMQVJFX0FOSU1BVEVE
XyogY2FsbHMsIGluIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhDbGFzc05hbWUp
IC8gRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyBibG9ja3MuCisgICAgICAgIAorICAg
ICAgICAgICAgU2FtcGxlIGNoYW5nZSBmb3IgU1ZHUmVjdEVsZW1lbnQ6CisgICAgICAgICAgICAt
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCisgICAgICAgICAgICAtICAgIERFQ0xB
UkVfQU5JTUFURURfTEVOR1RIKFksIHkpCisgICAgICAgICAgICAtICAgIC4uLgorCisgICAgICAg
ICAgICArICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdSZWN0RWxlbWVu
dCkKKyAgICAgICAgICAgICsgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCisg
ICAgICAgICAgICArICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQorICAgICAg
ICAgICAgKyAgICAgICAgIC4uLgorICAgICAgICAgICAgKyAgICBFTkRfREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUSUVTCisKKyAgICAgICAgIzIpIEluIGFsbCBjcHAgZmlsZXMsIHdyYXAgREVGSU5F
X0FOSU1BVEVEXyogY2FsbHMsIGluIEJFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTIC8g
RU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTIGJsb2Nrcy4KKyAgICAKKyAgICAgICAgICAg
IFNhbXBsZSBjaGFuZ2UgZm9yIFNWR1JlY3RFbGVtZW50OgorICAgICAgICAgICAgLURFRklORV9B
TklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKKyAg
ICAgICAgICAgIC1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1l
czo6eUF0dHIsIFksIHkpCisgICAgICAgICAgICAtLi4uCisKKyAgICAgICAgICAgICtCRUdJTl9E
RUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgICAgICAgICAgKyAgICBERUZJTkVfQU5JTUFU
RURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCisgICAgICAg
ICAgICArICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVz
Ojp5QXR0ciwgWSwgeSkKKyAgICAgICAgICAgICsgICAgLi4uCisgICAgICAgICAgICArRU5EX0RF
RklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAgICAgCisgICAgICAgICAgICBUaGlzIG5v
dyBnZW5lcmF0ZXMgdGhlICJzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvIiBvYmplY3RzIGZv
ciBlYWNoIGFuaW1hdGVkIFNWRyBwcm9wZXJ0eS4KKworICAgICAgICAjMykgSW4gYWxsIGNwcCBm
aWxlcywgYWRkIGEgbmV3IHNlY3Rpb24gd3JhcHBlZCBpbiBCRUdJTl9SRUdJU1RFUl9BTklNQVRF
RF9QUk9QRVJUSUVTKENsYXNzTmFtZSAvIEVORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVT
IGJsb2NrczoKKyAgICAgICAgCisgICAgICAgICAgICBTYW1wbGUgY2hhbmdlIGZvciBTVkdSZWN0
RWxlbWVudDoKKyAgICAgICAgICAgICtCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR1JlY3RFbGVtZW50KQorICAgICAgICAgICAgKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWSh4KQorICAgICAgICAgICAgKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWSh5KQorICAgICAgICAgICAgKyAgICAuLi4KKyAgICAgICAgICAgICsgICAgUkVHSVNU
RVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQpCisgICAgICAgICAgICArICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR1Rlc3RzKQorICAgICAgICAgICAgK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVT
CisKKyAgICAgICAgICAgIFRoaXMgaXMgdGhlIG1haW4gcGllY2Ugb2YgdGhlIGxvZ2ljIHRoYXQg
cmVwbGFjZXMgdGhlIG1hbnVhbCBzeW5jaHJvbml6ZVByb3BlcnR5L2ZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5TWFwIGltcGxlbWVudGF0aW9uLiBJdCBleHBhbnMgdG8gZm9sbG93aW5nOgorCisgICAg
ICAgICAgICBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBTVkdSZWN0RWxlbWVudDo6YXR0cmli
dXRlVG9Qcm9wZXJ0eU1hcCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLCBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlNYXAsICgpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdSZWN0RWxlbWVudCgpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgbWFwID0gU1ZH
UmVjdEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIW1hcC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICBtYXAuYWRkUHJvcGVydHkoU1ZHUmVjdEVsZW1lbnQ6OnhQcm9wZXJ0eUluZm8oKSk7
CisgICAgICAgICAgICAgICAgbWFwLmFkZFByb3BlcnR5KFNWR1JlY3RFbGVtZW50Ojp5UHJvcGVy
dHlJbmZvKCkpOworICAgICAgICAgICAgICAgIG1hcC5hZGRQcm9wZXJ0eShTVkdSZWN0RWxlbWVu
dDo6d2lkdGhQcm9wZXJ0eUluZm8oKSk7CisgICAgICAgICAgICAgICAgbWFwLmFkZFByb3BlcnR5
KFNWR1JlY3RFbGVtZW50OjpoZWlnaHRQcm9wZXJ0eUluZm8oKSk7CisgICAgICAgICAgICAgICAg
bWFwLmFkZFByb3BlcnR5KFNWR1JlY3RFbGVtZW50OjpyeFByb3BlcnR5SW5mbygpKTsKKyAgICAg
ICAgICAgICAgICBtYXAuYWRkUHJvcGVydHkoU1ZHUmVjdEVsZW1lbnQ6OnJ5UHJvcGVydHlJbmZv
KCkpOworICAgICAgICAgICAgICAgIG1hcC5hZGRQcm9wZXJ0eShTVkdSZWN0RWxlbWVudDo6ZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFByb3BlcnR5SW5mbygpKTsKKyAgICAgICAgICAgICAgICBt
YXAuYWRkUHJvcGVydGllcyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6YXR0cmlidXRl
VG9Qcm9wZXJ0eU1hcCgpKTsKKyAgICAgICAgICAgICAgICBtYXAuYWRkUHJvcGVydGllcyhTVkdU
ZXN0czo6YXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgQSBzaW5nbGUtaW5zdGFuY2Ugb2YgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCBpcyBj
cmVhdGVkIGZvciBlYWNoIFNWRypFbGVtZW50LiBUaGUgY29uc3RydWN0b3Igb2YgU1ZHUmVjdEVs
ZW1lbnQgaXMgc3VwcG9zZWQgdG8gY2FsbAorICAgICAgICAgICAgcmVnaXN0ZXJBbmltYXRlZFBy
b3BlcnRpZXNGb3JTVkdSZWN0RWxlbWVudCgpLCB3aGljaCBjb2xsZWN0cyBhbGwgcHJvcGVydGll
cyBvZiBTVkdSZWN0RWxlbWVudCBhbmQgYWxsIGl0cyBwYXJlbnQgY2xhc3NlcyBhbmQgc3RvcmVz
IHRoZW0KKyAgICAgICAgICAgIGluIGEgVmVjdG9yPGNvbnN0IFNWR1Byb3BlcnR5SW5mbyo+LiBU
aGlzIFZlY3RvciBpcyBzdG9yZWQgaW4gYSBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIFZlY3Rvcjxj
b25zdCBTVkdQcm9wZXJ0eUluZm8qPiA+IHdoZXJlIHRoZSBrZXkKKyAgICAgICAgICAgIGlzIHRo
ZSBhdHRyaWJ1dGUgbmFtZSAoZWcuIFNWR05hbWVzOjp4QXR0ciAtPiBTVkdSZWN0RWxlbWVudDo6
eFByb3BlcnR5SW5mbykuIFRoaXMgaXMgb25seSBkb25lIF9vbmNlXyBwZXIgU1ZHUmVjdEVsZW1l
bnQuCisKKyAgICAgICAgICAgIFNWR0VsZW1lbnQgY29udGFpbnMgYSAidmlydHVhbCBTVkdBdHRy
aWJ1dGVUb1Byb3BlcnR5TWFwJiBsb2NhbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKSIgbWV0aG9k
LCBhbmQgU1ZHUmVjdEVsZW1lbnQgb3ZlcnJpZGVzIGl0CisgICAgICAgICAgICBhbmQgcmV0dXJu
cyBTVkdSZWN0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpICh3aGljaCBpcyBzdGF0
aWMhKSAtLSB0aGlzIGlzIGhpZGRlbiBhZ2FpbiBpbiB0aGUgbWFjcm9zLCBubyBuZWVkIHRvIHdy
aXRlIGFueSBjb2RlLgorCisgICAgICAgICAgICBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwIHBy
b3ZpZGVzIGZvbGxvd2luZyBBUEk6CisgICAgICAgICAgICAtIGJvb2wgc3luY2hyb25pemVQcm9w
ZXJ0eShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSkKKyAgICAgICAgICAgIC0gdm9pZCBzeW5jaHJvbml6ZVByb3BlcnRpZXMoU1ZH
RWxlbWVudCogY29udGV4dEVsZW1lbnQpCisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBB
IGdlbmVyaWMgd2F5IHRvIHN5bmNocm9uaXplIGEgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSB3aXRoIGl0
cyBYTUwgRE9NIGF0dHJpYnV0ZS4gQW55IFNWRyBET00gY2hhbmdlIHRvIGVnLiA8cmVjdHM+IHgg
cHJvcGVydHkgd2lsbCBub3cgdHJpZ2dlcgorICAgICAgICAgICAgICAgIGNvbnRleHRFbGVtZW50
LT5sb2NhbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKS5zeW5jaHJvbml6ZVByb3BlcnR5KHRoaXMs
IFNWR05hbWVzOjp4QXR0cikKKyAgICAgICAgICAgICAgICBUaGUgU1ZHQXR0cmlidXRlVG9Qcm9w
ZXJ0eU1hcCB3aWxsIGFzayBpdHMgSGFzaE1hcCBmb3IgdGhlIFZlY3RvciBjb250YWluaW5nIHRo
ZSBwcm9wZXJ0aWVzIGZvciBTVkdOYW1lczo6eEF0dHIgKGluIHRoYXQgY2FzZSwganVzdCBvbmUg
eEFuaW1hdGVkKCkpLgorCisgICAgICAgICAgICAtIHZvaWQgYW5pbWF0ZWRQcm9wZXJ0eVR5cGVG
b3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgVmVjdG9yPEFu
aW1hdGVkUHJvcGVydHlUeXBlPiYgcHJvcGVydHlUeXBlcykKKworICAgICAgICAgICAgICAgIFRo
aXMgbWV0aG9kIHJlcGxhY2VzIHRoZSBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCBpbXBsZW1l
bnRhdGlvbnMgZXZlcnl3aGVyZS4KKyAgICAgICAgCisgICAgICAgICAgICAtIHZvaWQgYW5pbWF0
ZWRQcm9wZXJ0aWVzRm9yQXR0cmlidXRlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBWZWN0b3I8UmVmUHRyPFNWR0FuaW1hdGVk
UHJvcGVydHk+ID4mIHByb3BlcnRpZXMpOworCisgICAgICAgICAgICAgICAgVGhpcyBtZXRob2Qg
aXMgbm90IHVzZWQgeWV0LCBidXQgYWxsb3dzIHVzIHRvIGNvbGxlY3QgYWxsIFNWR0FuaW1hdGVk
UHJvcGVyaWVzIGZvciBhIFF1YWxpZmllZE5hbWUgLS0gdGhlIGluaXRpYWwgZ29hbCBmb3IgdGhp
cyBwYXRjaC4KKworICAgICAgICAjNCkgSW4gYWxsIGNwcCBmaWxlcywgYWRkIGEgY2FsbCB0byAi
cmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JDbGFzc05hbWUoKSIgaW4gdGhlIGNvbnN0cnVj
dG9yLiBGb3JnZXR0aW5nIHRoaXMgd2lsbCByZXN1bHQgaW4gYSBjb21waWxlIGVycm9yLgorCisg
ICAgICAgIERvZXNuJ3QgYWZmZWN0IGFueSB0ZXN0cywgb25seSBnaXZlcyBwZXJmb3JtYW5jZSBi
ZW5lZml0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgc3ZnL3Byb3BlcnRpZXMv
KFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuKnxTVkdQcm9wZXJ0eUluZm8uaCkgdG8gYnVpbGQu
CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogRGl0dG8uCisgICAgICAgICogV2ViQ29y
ZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnBybzogRGl0dG8uCisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VNYXJrZXI6OmFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jl
c291cmNlTWFya2VyOjptYXJrZXJUcmFuc2Zvcm1hdGlvbik6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VNYXJrZXI6Om1hcmtlclVuaXRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1RleHRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHRQ
YXRoOjpSZW5kZXJTVkdUZXh0UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0
UGF0aDo6ZXhhY3RBbGlnbm1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dFBh
dGg6OnN0cmV0Y2hNZXRob2QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJl
ZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdl
YkNvcmU6OndyaXRlQ29tbW9uR3JhZGllbnRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1NWR1RleHRDaHVua0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4
dENodW5rQnVpbGRlcjo6YWRkVGV4dENodW5rKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NW
R1RleHRMYXlvdXRFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dExheW91dEVu
Z2luZTo6cGFyZW50RGVmaW5lc1RleHRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4
dExheW91dEVuZ2luZTo6YmVnaW5UZXh0UGF0aExheW91dCk6CisgICAgICAgICogc3ZnL0dyYWRp
ZW50QXR0cmlidXRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRBdHRyaWJ1dGVzOjpH
cmFkaWVudEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRBdHRyaWJ1dGVz
OjpzcHJlYWRNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRBdHRyaWJ1dGVzOjpz
ZXRTcHJlYWRNZXRob2QpOgorICAgICAgICAqIHN2Zy9TVkdBRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBRWxlbWVudDo6U1ZHQUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdB
RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1lbnQ6OnN5bmNocm9uaXplUmVx
dWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBRWxlbWVudDo6c3luY2hyb25p
emVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1lbnQ6OnN5
bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdBbHRHbHlwaEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQWx0R2x5cGhFbGVtZW50OjpTVkdBbHRHbHlw
aEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZUVsZW1lbnQ6OlNWR0FuaW1hdGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGVFbGVtZW50OjpoYXNWYWxpZEF0dHJpYnV0ZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZUVsZW1lbnQ6OmRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpkZXRlcm1pbmVQcm9wZXJ0eVZhbHVl
VHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZy
b21BbmRUb1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2Fs
Y3VsYXRlRnJvbUFuZEJ5VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVt
ZW50OjpyZXNldFRvQmFzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVt
ZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
RWxlbWVudDo6Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZUVsZW1lbnQ6OmVuc3VyZUFuaW1hdG9yKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6Omhhc1ZhbGlkQXR0cmli
dXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6
ZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmFwcGx5UmVzdWx0
c1RvVGFyZ2V0KToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRBbmdsZS5oOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlZEJvb2xlYW4uaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oOgor
ICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEludGVnZXIuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5p
bWF0ZWRMZW5ndGguaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVkTnVtYmVyTGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0
UmF0aW8uaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRSZWN0Lmg6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVkU3RyaW5nLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpTVkdBbmltYXRlZFR5cGUpOgorICAgICAgICAqIHN2Zy9T
VkdBbmltYXRlZFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6dHlw
ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZFR5cGVBbmltYXRvcjo6U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3Ip
OgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OlNWR0FuaW1hdGlvbkVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6Y3VycmVudFZhbHVlc0ZvclZhbHVlc0FuaW1h
dGlvbik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVp
cmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50Ojpz
eW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0b3JGYWN0
b3J5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZSk6Cisg
ICAgICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Q2lyY2xlRWxlbWVudDo6U1ZHQ2lyY2xlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0NpcmNs
ZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NpcmNsZUVsZW1lbnQ6OnN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50
OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdD
aXJjbGVFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcv
U1ZHQ2xpcFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxl
bWVudDo6U1ZHQ2xpcFBhdGhFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXpl
UmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6
OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Ns
aXBQYXRoRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3Zn
L1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpTVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQ3Vyc29yRWxlbWVudDo6U1ZHQ3Vyc29yRWxlbWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0N1
cnNvckVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdDdXJzb3JFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1
YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHRGVmc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRGVmc0VsZW1lbnQ6OlNWR0RlZnNFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRGVm
c0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RlZnNFbGVtZW50OjpzeW5jaHJvbml6
ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRGVmc0VsZW1lbnQ6OnN5
bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RlZnNF
bGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjphbmltYXRlZFByb3BlcnR5
VHlwZUZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojp1cGRhdGVB
bmltYXRlZFNWR0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpsb2Nh
bEF0dHJpYnV0ZVRvUHJvcGVydHlNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6
c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1l
bnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdF
bGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRG
ZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVp
cmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpzeW5jaHJvbml6
ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OlNWR0VsbGlwc2VFbGVtZW50KToK
KyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsbGlwc2VFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3Rl
bUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OlNWR0ZFQmxlbmRFbGVtZW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQ6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6
OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6U1ZHRkVD
b21wb3NpdGVFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpTVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpTVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpTVkdGRURyb3BTaGFkb3dFbGVtZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdG
RUZsb29kRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZFRmxvb2RFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCk6
CisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxl
bWVudDo6U1ZHRkVJbWFnZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6U1ZHRkVMaWdodEVsZW1lbnQpOgorICAgICAgICAqIHN2
Zy9TVkdGRUxpZ2h0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlRWxlbWVudC5j
cHA6CisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1lcmdlTm9k
ZUVsZW1lbnQ6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFTWVy
Z2VOb2RlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OlNWR0ZFTW9ycGhv
bG9neUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRU9mZnNldEVsZW1lbnQ6OlNWR0ZFT2Zmc2V0RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NW
R0ZFT2Zmc2V0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQ6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRVNw
ZWN1bGFyTGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxlbWVudDo6U1ZHRkVUaWxlRWxlbWVu
dCk6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RkVUdXJidWxlbmNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50OjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVU
dXJidWxlbmNlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6OlNWR0ZpbHRlckVsZW1lbnQpOgor
ICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcyk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcy5oOgorICAgICAgICAqIHN2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwOgorICAgICAg
ICAqIHN2Zy9TVkdGaXRUb1ZpZXdCb3guaDoKKyAgICAgICAgKiBzdmcvU1ZHRm9udEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEVsZW1lbnQ6OlNWR0ZvbnRFbGVtZW50KToK
KyAgICAgICAgKiBzdmcvU1ZHRm9udEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zv
bnRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBzdmcvU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQ6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50
OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxh
bmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHR0VsZW1lbnQ6OlNWR0dFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHR0VsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVh
dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWly
ZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dFbGVtZW50OjpzeW5jaHJvbml6
ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHR2x5cGhFbGVtZW50LmNwcDoKKyAg
ICAgICAgKiBzdmcvU1ZHR2x5cGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR0dy
YWRpZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6bmVlZHNQZW5kaW5nUmVzb3Vy
Y2VIYW5kbGluZyk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OlNWR0ltYWdlRWxlbWVudCk6CisgICAgICAgICog
c3ZnL1NWR0ltYWdlRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50
OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZUVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAg
ICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lRWxl
bWVudDo6U1ZHTGluZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZUVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0
dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6c3luY2hyb25pemVSZXF1
aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZUVsZW1lbnQ6OnN5bmNo
cm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTVBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR01QYXRoRWxlbWVudDo6U1ZHTVBhdGhFbGVtZW50KToKKyAgICAgICAgKiBz
dmcvU1ZHTVBhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6b3JpZW50VHlwZVByb3BlcnR5
SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OnNldE9yaWVudFRv
QXV0byk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnRUb0Fu
Z2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OnN5bmNocm9uaXplT3Jp
ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50Ojpsb29rdXBPckNy
ZWF0ZU9yaWVudFR5cGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1l
bnQ6Om9yaWVudFR5cGVBbmltYXRlZCk6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6Om9yaWVudFR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6b3JpZW50VHlwZUJhc2VWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnRUeXBlQmFzZVZhbHVl
KToKKyAgICAgICAgKiBzdmcvU1ZHTWFza0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTWFza0VsZW1lbnQ6OlNWR01hc2tFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHTWFza0Vs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50OjpzeW5jaHJvbml6ZVJl
cXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6OnN5bmNo
cm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVt
ZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHTWlzc2lu
Z0dseXBoRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUGF0aEVsZW1lbnQ6OmRQcm9wZXJ0eUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aEVsZW1lbnQ6OlNWR1BhdGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVt
ZW50Ojpsb29rdXBPckNyZWF0ZURXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhF
bGVtZW50OjpzeW5jaHJvbml6ZUQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6
OnBhdGhTZWdMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjphbmltYXRl
ZFBhdGhTZWdMaXN0KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpwYXRoQnl0ZVN0cmVhbSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXRoRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1M
YW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdXaXRoQ29udGV4dC5oOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ1dpdGhDb250ZXh0OjphbmltYXRlZFByb3BlcnR5KToKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0dGVybkVsZW1lbnQ6OlNWR1BhdHRlcm5FbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0
dGVybkVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpzeW5j
aHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVs
ZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdHRlcm5FbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAg
KiBzdmcvU1ZHUG9seUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1l
bnQ6OnBvaW50c1Byb3BlcnR5SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVu
dDo6U1ZHUG9seUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50Ojpz
eW5jaHJvbml6ZVBvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6bG9v
a3VwT3JDcmVhdGVQb2ludHNXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVt
ZW50Ojpwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OmFuaW1hdGVk
UG9pbnRzKToKKyAgICAgICAgKiBzdmcvU1ZHUG9seUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxh
bmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6U1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jl
Y3RFbGVtZW50OjpTVkdSZWN0RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJl
ZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50OjpzeW5jaHJvbml6
ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6
c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6U1ZHU1ZHRWxlbWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0Vs
ZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAg
ICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3Jp
cHRFbGVtZW50OjpTVkdTY3JpcHRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdTdG9wRWxlbWVudDo6U1ZHU3RvcEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdT
dG9wRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6OlNWR1N0eWxlZEVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3NzUHJvcGVydHlUb1R5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
U3R5bGVkRWxlbWVudDo6YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUpOgorICAgICAg
ICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50OjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCk6CisgICAgICAgICog
c3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N3
aXRjaEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3dpdGNoRWxlbWVudDo6U1ZH
U3dpdGNoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1N3aXRjaEVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJl
cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTd2l0Y2hFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVp
cmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTd2l0Y2hFbGVtZW50OjpzeW5j
aHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHU3ltYm9sRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTeW1ib2xFbGVtZW50OjpTVkdTeW1ib2xFbGVtZW50
KToKKyAgICAgICAgKiBzdmcvU1ZHU3ltYm9sRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdU
UmVmRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6U1ZHVFJl
ZkVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdUUmVmRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdUU3BhbkVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdUU3BhbkVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHVGVzdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6
OnJlcXVpcmVkRmVhdHVyZXNQcm9wZXJ0eUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVz
dHM6OnJlcXVpcmVkRXh0ZW5zaW9uc1Byb3BlcnR5SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdUZXN0czo6c3lzdGVtTGFuZ3VhZ2VQcm9wZXJ0eUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVGVzdHM6OmF0dHJpYnV0ZVRvUHJvcGVydHlNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9T
VkdUZXN0cy5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50Ojp0ZXh0TGVuZ3RoUHJvcGVydHlJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHVGV4dENv
bnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6
c3luY2hyb25pemVUZXh0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50
RWxlbWVudDo6bG9va3VwT3JDcmVhdGVUZXh0TGVuZ3RoV3JhcHBlcik6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnRleHRMZW5ndGhBbmltYXRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToK
KyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWly
ZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6
c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR1RleHRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRFbGVtZW50OjpTVkdUZXh0RWxlbWVudCk6
CisgICAgICAgICogc3ZnL1NWR1RleHRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RleHRQ
YXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UGF0aEVsZW1lbnQ6OlNW
R1RleHRQYXRoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR1RpdGxlRWxlbWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGl0bGVFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVk
KToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdVc2VFbGVtZW50OjpTVkdVc2VFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJl
ZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnN5bmNocm9uaXpl
UmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnN5
bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3RWxlbWVudDo6U1ZHVmlld0VsZW1lbnQpOgor
ICAgICAgICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdWaWV3U3Bl
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6U1ZHVmlld1NwZWMpOgorICAg
ICAgICAqIHN2Zy9TVkdWaWV3U3BlYy5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY6OnJhd0FuaW1hdGVkVmFsdWUpOgor
ICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmOjppc0Fu
aW1hdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJP
ZmY6OnJhd0FuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJvcGVydHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHk6OnVw
ZGF0ZUFuaW1WYWwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9v
a3VwT3JDcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVy
dHk6Omxvb2t1cFdyYXBwZXIpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
UHJvcGVydHlNYWNyb3MuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBy
b3BlcnR5VGVhck9mZi5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRl
YXJPZmY6OmlzQW5pbWF0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVy
dHlUZWFyT2ZmOjpyYXdBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGVkUHJvcGVydHlUZWFyT2ZmOjp1cGRhdGVBbmltVmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmOjpTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZik6Cisg
ICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmOjpp
c0FuaW1hdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5
VGVhck9mZjo6cmF3QW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZH
QXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YW5pbWF0ZWRQcm9wZXJ0aWVzRm9yQXR0cmlidXRlKToK
KyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6U1ZHQXR0
cmlidXRlVG9Qcm9wZXJ0eU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBdHRyaWJ1dGVUb1By
b3BlcnR5TWFwOjp+U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwOjppc0VtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA6OmFkZFByb3BlcnRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YWRkUHJvcGVydHkpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YW5pbWF0ZWRQcm9wZXJ0eVR5cGVG
b3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1h
cDo6c3luY2hyb25pemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJpYnV0
ZVRvUHJvcGVydHlNYXA6OnN5bmNocm9uaXplUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YW5pbWF0ZWRQcm9wZXJ0eSk6CisgICAgICAgICog
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUHJvcGVydHlJbmZvOjpTVkdQcm9wZXJ0eUluZm8pOgorICAgICAgICAqIHN2Zy9wcm9w
ZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVy
dHlUZWFyT2ZmOjp1cGRhdGVBbmltVmFsKToKKwogMjAxMS0wNy0wNiAgQW5kcmFzIEJlY3NpICA8
YWJlY3NpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4ICJ3YXJuaW5nOiBhIGA7JyBtaWdodCBi
ZSBuZWVkZWQgYXQgdGhlIGVuZCBvZiBhY3Rpb24gY29kZSIKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xODA2LDYgKzE4MDYsNyBAQCBJRiAoRU5BQkxFX1NWRykKICAgICAg
ICAgc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKICAgICAgICAgc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcAogICAgICAgICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXJCdWlsZGVyLmNwcAorICAgICAgICBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVU
b1Byb3BlcnR5TWFwLmNwcAogICAgICAgICBzdmcvcHJvcGVydGllcy9TVkdQYXRoU2VnTGlzdFBy
b3BlcnR5VGVhck9mZi5jcHAKICAgICApCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zMzkzLDYgKzMzOTMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3N2Zy9QYXR0ZXJuQXR0cmlidXRlcy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcCBcCisJU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmggXAog
CVNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVh
ck9mZi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBhdGhT
ZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmggXApAQCAtMzQwOCw2ICszNDEwLDcgQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQYXRoU2VnTGlz
dFByb3BlcnR5VGVhck9mZi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR1Byb3BlcnR5LmggXAorCVNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R1Byb3BlcnR5SW5mby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9w
ZXJ0eVRlYXJPZmYuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVy
dHlUcmFpdHMuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHU3RhdGljTGlz
dFByb3BlcnR5VGVhck9mZi5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDkwNDU0
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xMDc3
LDYgKzEwNzcsNyBAQAogICAgICAgICAgICAgJ3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgnLAogICAg
ICAgICAgICAgJ3N2Zy9hbmltYXRpb24vU01JTFRpbWUuaCcsCiAgICAgICAgICAgICAnc3ZnL2Fu
aW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oJywKKyAgICAgICAgICAgICdzdmcvcHJvcGVydGllcy9T
VkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmgnLAogICAgICAgICAgICAgJ3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCcsCiAgICAgICAgICAgICAn
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgnLAogICAgICAg
ICAgICAgJ3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuaCcsCkBAIC0xMDkwLDYg
KzEwOTEsNyBAQAogICAgICAgICAgICAgJ3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRl
YXJPZmYuaCcsCiAgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHUGF0aFNlZ0xpc3RQcm9w
ZXJ0eVRlYXJPZmYuaCcsCiAgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHku
aCcsCisgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmgnLAogICAg
ICAgICAgICAgJ3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5oJywKICAgICAgICAg
ICAgICdzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oJywKICAgICAgICAgICAgICdz
dmcvcHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmgnLApAQCAtNjAwMCw2
ICs2MDAyLDcgQEAKICAgICAgICAgICAgICdzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIu
aCcsCiAgICAgICAgICAgICAnc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5j
cHAnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIu
aCcsCisgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1h
cC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUGF0aFNlZ0xp
c3RQcm9wZXJ0eVRlYXJPZmYuaCcsCiAgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHUGF0
aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwJywKICAgICAgICAgICAgICd3ZWJhdWRpby9BdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDkw
NDU0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTIy
OTgsNiArMjI5OCw3IEBAIEhFQURFUlMgKz0gXAogICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZpbHRlckJ1aWxkZXIuaCBcCiAgICAgc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgg
XAogICAgIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIFwKKyAgICBzdmcvcHJvcGVydGllcy9TVkdB
dHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmggXAogICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
RW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCBcCiAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmggXAogICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCBcCkBAIC0yMzEyLDYgKzIzMTMsNyBAQCBI
RUFERVJTICs9IFwKICAgICBzdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgg
XAogICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmggXAog
ICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmggXAorICAgIHN2Zy9wcm9wZXJ0aWVzL1NW
R1Byb3BlcnR5SW5mby5oIFwKICAgICBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRlYXJPZmYu
aCBcCiAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaCBcCiAgICAgc3ZnL3By
b3BlcnRpZXMvU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oIFwKQEAgLTMyNjEsNiArMzI2
Myw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9MSkgewogICAgICAgICBzdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwIFwKICAgICAgICAgc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAgXAogICAgICAgICBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwIFwKKyAgICAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5j
cHAgXAogICAgICAgICBzdmcvcHJvcGVydGllcy9TVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9m
Zi5jcHAKIAogICAgIGxpbnV4LWcrKyo6Q09ORklHKGRlYnVnLCBkZWJ1Z3xyZWxlYXNlKTppc0Vx
dWFsKFFUX0FSQ0gsaTM4NikgewpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTY2NDczLDYgKzY2
NDczLDE0IEBACiAJCQkJTmFtZT0icHJvcGVydGllcyIKIAkJCQk+CiAJCQkJPEZpbGUKKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxzdmdccHJvcGVydGllc1xTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFw
LmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHN2Z1xwcm9wZXJ0aWVzXFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCIKKwkJCQkJPgor
CQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xwcm9wZXJ0
aWVzXFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCIKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KQEAgLTY2NTMzLDYgKzY2NTQxLDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJ
CQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdccHJvcGVydGllc1xTVkdQcm9wZXJ0
eUluZm8uaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHN2Z1xwcm9wZXJ0aWVzXFNWR1Byb3BlcnR5VGVhck9mZi5oIgogCQkJCQk+CiAJCQkJ
PC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDcg
QEAKIAkJMDgxNjY4REExMjU2MDNENTAwNkYyNURFIC8qIFNWR1RleHRMYXlvdXRFbmdpbmUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MTY2OEQ4MTI1
NjAzRDUwMDZGMjVERSAvKiBTVkdUZXh0TGF5b3V0RW5naW5lLmggKi87IH07CiAJCTA4MUFBOERB
MTExMTIzN0UwMDJBQjA2RSAvKiBTVkdFbGVtZW50UmFyZURhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MUFBOEQ5MTExMTIzN0UwMDJBQjA2RSAv
KiBTVkdFbGVtZW50UmFyZURhdGEuaCAqLzsgfTsKIAkJMDgxQ0RGQkYxMjZFQ0ZFODAwRDIxNUNB
IC8qIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MUNERkJFMTI2RUNGRTgwMEQyMTVDQSAvKiBT
VkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDgxREQ0OUMxM0JBMUE2MDAwREM3NjI3IC8qIFNW
R1Byb3BlcnR5SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDgxREQ0OUIxM0JBMUE2MDAwREM3NjI3IC8qIFNWR1Byb3BlcnR5SW5mby5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4MUVCRjNBMEZE
MzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MUVCRjM4MEZEMzRGNDEwMERBNzU1OSAvKiBT
VkdGaWx0ZXJCdWlsZGVyLmNwcCAqLzsgfTsKIAkJMDgxRUJGM0IwRkQzNEY0MTAwREE3NTU5IC8q
IFNWR0ZpbHRlckJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4MUVCRjM5MEZEMzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmgg
Ki87IH07CiAJCTA4MjNEMTU5MTI3QUQ2QUMwMDBFQkM5NSAvKiBTVkdBbmltYXRlZEludGVnZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MjNEMTU4
MTI3QUQ2QUMwMDBFQkM5NSAvKiBTVkdBbmltYXRlZEludGVnZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTY4LDYgKzE2OSw4IEBACiAJCTA4
RjBCRkM2MTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0TWV0cmljcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMEJGQzExMjU1QzUzQzAwMDc1MTg1
IC8qIFNWR1RleHRNZXRyaWNzLmggKi87IH07CiAJCTA4RjJGMDA5MTIxM0U2MTcwMERDRUM0OCAv
KiBSZW5kZXJJbWFnZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA4RjJGMDA3MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJl
c291cmNlLmNwcCAqLzsgfTsKIAkJMDhGMkYwMEExMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlcklt
YWdlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4RjJGMDA4MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDhGQjE3QzEx
M0JDN0U5MTAwMDQwMDg2IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGQjE3QzAxM0JDN0U5MTAw
MDQwMDg2IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwICovOyB9OworCQkwOEZCM0Y4
NDEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGQjNGODMxM0JDNzU0QzAw
OTlGQzE4IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwOEZFMEJDNTEyN0UyQUMxMDAwQzRGQjUg
LyogU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEZFMEJDNDEyN0UyQUMxMDAwQzRGQjUgLyogU1ZH
QW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhGRjEwMjAxMjk1MEY1QTAwRjAwMjc2IC8qIFNWR1Bh
dGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4RkYxMDFGMTI5NTBGNTkwMEYwMDI3NiAvKiBTVkdQYXRoU2Vn
TGlzdFByb3BlcnR5VGVhck9mZi5jcHAgKi87IH07CiAJCTBBNDg0NDk5MENBNDRDQjIwMEI3QkQ0
OCAvKiBTb2Z0TGlua2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEE0ODQ0OTgwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRMaW5raW5nLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY0NTEsNiArNjQ1
NCw3IEBACiAJCTA4MTY2OEQ4MTI1NjAzRDUwMDZGMjVERSAvKiBTVkdUZXh0TGF5b3V0RW5naW5l
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RleHRMYXlvdXRFbmdpbmUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgxQUE4RDkxMTExMjM3RTAwMkFCMDZF
IC8qIFNWR0VsZW1lbnRSYXJlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdFbGVtZW50UmFyZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgx
Q0RGQkUxMjZFQ0ZFODAwRDIxNUNBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5
bmNocm9uaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwODFERDQ5QjEzQkEx
QTYwMDBEQzc2MjcgLyogU1ZHUHJvcGVydHlJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNWR1Byb3BlcnR5SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwODFFQkYzODBGRDM0RjQxMDBEQTc1NTkgLyogU1ZHRmlsdGVyQnVpbGRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdGaWx0ZXJCdWlsZGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgxRUJGMzkwRkQzNEY0MTAwREE3NTU5IC8qIFNW
R0ZpbHRlckJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHRmls
dGVyQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODIzRDE1ODEyN0FE
NkFDMDAwRUJDOTUgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkSW50ZWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNjU0NSw2ICs2NTQ5LDggQEAKIAkJMDhGMEJGQzExMjU1QzUzQzAwMDc1MTg1IC8q
IFNWR1RleHRNZXRyaWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Rl
eHRNZXRyaWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RjJGMDA3MTIxM0U2
MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckltYWdlUmVzb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwOEYyRjAwODEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VS
ZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJJbWFnZVJl
c291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4RkIxN0MwMTNCQzdFOTEw
MDA0MDA4NiAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEZCM0Y4MzEzQkM3NTRDMDA5OUZDMTggLyogU1ZH
QXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA4RkUwQkM0MTI3RTJBQzEwMDBDNEZCNSAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0
UmF0aW8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRQcmVz
ZXJ2ZUFzcGVjdFJhdGlvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RkYxMDFG
MTI5NTBGNTkwMEYwMDI3NiAvKiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQYXRoU2VnTGlzdFByb3BlcnR5
VGVhck9mZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBBNDg0NDk4MENBNDRD
QjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI3NDQs
MTEgKzEyNzUwLDE0IEBACiAJCQkJMDg4QTBERkYxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1h
dGVkUHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkJMDg1MjVFNjIxMjc4QzAwMTAwQTg0Nzc4IC8q
IFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkJMDg1QTE1OTIxMjg5
QThERDAwMjcxMEUzIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5o
ICovLAorCQkJCTA4RkIxN0MwMTNCQzdFOTEwMDA0MDA4NiAvKiBTVkdBdHRyaWJ1dGVUb1Byb3Bl
cnR5TWFwLmNwcCAqLywKKwkJCQkwOEZCM0Y4MzEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmli
dXRlVG9Qcm9wZXJ0eU1hcC5oICovLAogCQkJCTA4MTA3NjQzMTI4Mjg1NTYwMDdDNjNCQSAvKiBT
VkdMaXN0UHJvcGVydHkuaCAqLywKIAkJCQkwODhBMEUwMDEyNkVGMURCMDA5NzhGN0EgLyogU1ZH
TGlzdFByb3BlcnR5VGVhck9mZi5oICovLAogCQkJCTA4RkYxMDFGMTI5NTBGNTkwMEYwMDI3NiAv
KiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAgKi8sCiAJCQkJMDg0QTA4MjgxMjhE
Nzg2NzAwMkRCMUYxIC8qIFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkJ
MDg4QTBFMDExMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5LmggKi8sCisJCQkJMDgxREQ0
OUIxM0JBMUE2MDAwREM3NjI3IC8qIFNWR1Byb3BlcnR5SW5mby5oICovLAogCQkJCTA4OEEwRTAy
MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJCQkwODhBMEUw
MzEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUcmFpdHMuaCAqLywKIAkJCQkwODgwRjcw
RDEyODJCNDZEMDA5NDg1MDUgLyogU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oICovLApA
QCAtMjMwODgsNiArMjMwOTcsOCBAQAogCQkJCTA4NjM5NTE2MTNCNUZFNTcwMEJCMzQ0RCAvKiBT
VkdBbmltYXRlZFBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCTQzMUEyRjlDMTNCNkYyQjAwMDc3
OTFFNCAvKiBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNUFCQjc4NzEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNV
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwODFERDQ5QzEzQkExQTYwMDBEQzc2MjcgLyogU1ZHUHJv
cGVydHlJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQkwOEZCM0Y4NDEzQkM3NTRDMDA5OUZDMTgg
LyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTg1NCw2
ICsyNTg2NSw3IEBACiAJCQkJNDMxQTJGRDcxM0I3NzA3QTAwNzc5MUU0IC8qIFNWR0FuaW1hdGVk
TGVuZ3RoTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzFBMzAyMTEzQjg5RENDMDA3Nzkx
RTQgLyogU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQzMUEzMDg4MTNCOEY5NzgwMDc3OTFFNCAvKiBTVkdBbmltYXRlZEJvb2xlYW4uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMDhGQjE3QzExM0JDN0U5MTAwMDQwMDg2IC8qIFNWR0F0dHJpYnV0
ZVRvUHJvcGVydHlNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDNGNkZEOTYxM0JDRDBCMTAw
MjI0MDUyIC8qIFNWR0FuaW1hdGVkSW50ZWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzgs
MTUgKzI3OCwxNSBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFkZFN0b3BzCiAg
ICAgICAgIGdyYWRpZW50RGF0YS0+Z3JhZGllbnQtPmFkZENvbG9yU3RvcCgqaXQpOwogfQogCi1H
cmFkaWVudFNwcmVhZE1ldGhvZCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjpwbGF0Zm9ybVNw
cmVhZE1ldGhvZEZyb21TVkdUeXBlKFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHU3ByZWFkTWV0aG9k
VHlwZSBtZXRob2QpIGNvbnN0CitHcmFkaWVudFNwcmVhZE1ldGhvZCBSZW5kZXJTVkdSZXNvdXJj
ZUdyYWRpZW50OjpwbGF0Zm9ybVNwcmVhZE1ldGhvZEZyb21TVkdUeXBlKFNWR1NwcmVhZE1ldGhv
ZFR5cGUgbWV0aG9kKSBjb25zdAogewogICAgIHN3aXRjaCAobWV0aG9kKSB7Ci0gICAgY2FzZSBT
VkdHcmFkaWVudEVsZW1lbnQ6OlNWR19TUFJFQURNRVRIT0RfVU5LTk9XTjoKLSAgICBjYXNlIFNW
R0dyYWRpZW50RWxlbWVudDo6U1ZHX1NQUkVBRE1FVEhPRF9QQUQ6CisgICAgY2FzZSBTVkdTcHJl
YWRNZXRob2RVbmtub3duOgorICAgIGNhc2UgU1ZHU3ByZWFkTWV0aG9kUGFkOgogICAgICAgICBy
ZXR1cm4gU3ByZWFkTWV0aG9kUGFkOwotICAgIGNhc2UgU1ZHR3JhZGllbnRFbGVtZW50OjpTVkdf
U1BSRUFETUVUSE9EX1JFRkxFQ1Q6CisgICAgY2FzZSBTVkdTcHJlYWRNZXRob2RSZWZsZWN0Ogog
ICAgICAgICByZXR1cm4gU3ByZWFkTWV0aG9kUmVmbGVjdDsKLSAgICBjYXNlIFNWR0dyYWRpZW50
RWxlbWVudDo6U1ZHX1NQUkVBRE1FVEhPRF9SRVBFQVQ6CisgICAgY2FzZSBTVkdTcHJlYWRNZXRo
b2RSZXBlYXQ6CiAgICAgICAgIHJldHVybiBTcHJlYWRNZXRob2RSZXBlYXQ7CiAgICAgfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlR3JhZGllbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNjEsNyArNjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIGNvbGxlY3RHcmFk
aWVudEF0dHJpYnV0ZXMoU1ZHR3JhZGllbnRFbGVtZW50KikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBidWlsZEdyYWRpZW50KEdyYWRpZW50RGF0YSosIFNWR0dyYWRpZW50RWxlbWVudCopIGNvbnN0
ID0gMDsKIAotICAgIEdyYWRpZW50U3ByZWFkTWV0aG9kIHBsYXRmb3JtU3ByZWFkTWV0aG9kRnJv
bVNWR1R5cGUoU1ZHR3JhZGllbnRFbGVtZW50OjpTVkdTcHJlYWRNZXRob2RUeXBlKSBjb25zdDsK
KyAgICBHcmFkaWVudFNwcmVhZE1ldGhvZCBwbGF0Zm9ybVNwcmVhZE1ldGhvZEZyb21TVkdUeXBl
KFNWR1NwcmVhZE1ldGhvZFR5cGUpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91
bGRDb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzIDogMTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCShy
ZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VNYXJrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDcgQEAgZmxv
YXQgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OmFuZ2xlKCkgYwogICAgIEFTU0VSVChtYXJrZXIp
OwogCiAgICAgZmxvYXQgYW5nbGUgPSAtMTsKLSAgICBpZiAobWFya2VyLT5vcmllbnRUeXBlKCkg
PT0gU1ZHTWFya2VyRWxlbWVudDo6U1ZHX01BUktFUl9PUklFTlRfQU5HTEUpCisgICAgaWYgKG1h
cmtlci0+b3JpZW50VHlwZSgpID09IE1hcmtlck9yaWVudEFuZ2xlKQogICAgICAgICBhbmdsZSA9
IG1hcmtlci0+b3JpZW50QW5nbGUoKS52YWx1ZSgpOwogCiAgICAgcmV0dXJuIGFuZ2xlOwpAQCAt
MTE4LDcgKzExOCw3IEBAIEFmZmluZVRyYW5zZm9ybSBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcjoK
ICAgICBBU1NFUlQobWFya2VyKTsKIAogICAgIGZsb2F0IG1hcmtlckFuZ2xlID0gYW5nbGUoKTsK
LSAgICBib29sIHVzZVN0cm9rZVdpZHRoID0gKG1hcmtlci0+bWFya2VyVW5pdHMoKSA9PSBTVkdN
YXJrZXJFbGVtZW50OjpTVkdfTUFSS0VSVU5JVFNfU1RST0tFV0lEVEgpOworICAgIGJvb2wgdXNl
U3Ryb2tlV2lkdGggPSBtYXJrZXItPm1hcmtlclVuaXRzKCkgPT0gTWFya2VyVW5pdHNTdHJva2VX
aWR0aDsKIAogICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CiAgICAgdHJhbnNmb3JtLnRy
YW5zbGF0ZShvcmlnaW4ueCgpLCBvcmlnaW4ueSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmgJKHJldmlz
aW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hcmtlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAog
ICAgIEZsb2F0UG9pbnQgcmVmZXJlbmNlUG9pbnQoKSBjb25zdDsKICAgICBmbG9hdCBhbmdsZSgp
IGNvbnN0OwotICAgIFNWR01hcmtlckVsZW1lbnQ6OlNWR01hcmtlclVuaXRzVHlwZSBtYXJrZXJV
bml0cygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNWR01hcmtlckVsZW1lbnQqPihub2Rl
KCkpLT5tYXJrZXJVbml0cygpOyB9CisgICAgU1ZHTWFya2VyVW5pdHNUeXBlIG1hcmtlclVuaXRz
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHTWFya2VyRWxlbWVudCo+KG5vZGUoKSkt
Pm1hcmtlclVuaXRzKCk7IH0KIAogICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJl
c291cmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHNfcmVzb3VyY2VUeXBlOyB9CiAgICAgc3RhdGlj
IFJlbmRlclNWR1Jlc291cmNlVHlwZSBzX3Jlc291cmNlVHlwZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguY3BwCShyZXZpc2lv
biA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBh
dGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogUmVuZGVyU1ZHVGV4dFBhdGg6OlJlbmRlclNWR1RleHRQYXRoKE5vZGUqIG4pCiAgICAg
OiBSZW5kZXJTVkdJbmxpbmUobikKLSAgICAsIG1fc3RhcnRPZmZzZXQoMC4wZikKKyAgICAsIG1f
c3RhcnRPZmZzZXQoMCkKICAgICAsIG1fZXhhY3RBbGlnbm1lbnQodHJ1ZSkKICAgICAsIG1fc3Ry
ZXRjaE1ldGhvZChmYWxzZSkKIHsKQEAgLTY5LDEyICs2OSwxMiBAQCBmbG9hdCBSZW5kZXJTVkdU
ZXh0UGF0aDo6c3RhcnRPZmZzZXQoKSBjCiAKIGJvb2wgUmVuZGVyU1ZHVGV4dFBhdGg6OmV4YWN0
QWxpZ25tZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHVGV4dFBhdGhF
bGVtZW50Kj4obm9kZSgpKS0+c3BhY2luZygpID09IFNWR19URVhUUEFUSF9TUEFDSU5HVFlQRV9F
WEFDVDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHVGV4dFBhdGhFbGVtZW50Kj4obm9kZSgp
KS0+c3BhY2luZygpID09IFRleHRQYXRoU3BhY2luZ0V4YWN0OwogfQogCiBib29sIFJlbmRlclNW
R1RleHRQYXRoOjpzdHJldGNoTWV0aG9kKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8U1ZHVGV4dFBhdGhFbGVtZW50Kj4obm9kZSgpKS0+bWV0aG9kKCkgPT0gU1ZHX1RFWFRQQVRI
X01FVEhPRFRZUEVfU1RSRVRDSDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHVGV4dFBhdGhF
bGVtZW50Kj4obm9kZSgpKS0+bWV0aG9kKCkgPT0gVGV4dFBhdGhNZXRob2RTdHJldGNoOwogfQog
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1Rl
eHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyVHJlZUFzVGV4dC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTky
LDkgKzE5Miw5IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0KICAg
ICByZXR1cm4gdHM7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJVbml0c1R5cGUmIG1hcmtl
clVuaXQpCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgU1ZHTWFya2VyVW5pdHNUeXBlJiBtYXJrZXJVbml0KQogewotICAgIHRzIDw8IFNWR1Byb3Bl
cnR5VHJhaXRzPFNWR01hcmtlckVsZW1lbnQ6OlNWR01hcmtlclVuaXRzVHlwZT46OnRvU3RyaW5n
KG1hcmtlclVuaXQpOworICAgIHRzIDw8IFNWR1Byb3BlcnR5VHJhaXRzPFNWR01hcmtlclVuaXRz
VHlwZT46OnRvU3RyaW5nKG1hcmtlclVuaXQpOwogICAgIHJldHVybiB0czsKIH0KIApAQCAtMjUx
LDkgKzI1MSw5IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0KICAg
ICByZXR1cm4gdHM7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR1NwcmVhZE1ldGhvZFR5cGUmIHR5
cGUpCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
U1ZHU3ByZWFkTWV0aG9kVHlwZSYgdHlwZSkKIHsKLSAgICB0cyA8PCBTVkdQcm9wZXJ0eVRyYWl0
czxTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR1NwcmVhZE1ldGhvZFR5cGU+Ojp0b1N0cmluZyh0eXBl
KS51cHBlcigpOworICAgIHRzIDw8IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1NwcmVhZE1ldGhvZFR5
cGU+Ojp0b1N0cmluZyh0eXBlKS51cHBlcigpOwogICAgIHJldHVybiB0czsKIH0KIApAQCAtNTAw
LDExICs1MDAsMTEgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgYm91bmRpbmdCb3hNb2RlU3RyaQog
ICAgIHJldHVybiBib3VuZGluZ0JveE1vZGUgPyAib2JqZWN0Qm91bmRpbmdCb3giIDogInVzZXJT
cGFjZU9uVXNlIjsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHdyaXRlQ29tbW9uR3JhZGllbnRQ
cm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR1NwcmVhZE1l
dGhvZFR5cGUgc3ByZWFkTWV0aG9kLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGdyYWRpZW50VHJh
bnNmb3JtLCBib29sIGJvdW5kaW5nQm94TW9kZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCB3cml0ZUNv
bW1vbkdyYWRpZW50UHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgU1ZHU3ByZWFkTWV0aG9kVHlw
ZSBzcHJlYWRNZXRob2QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZ3JhZGllbnRUcmFuc2Zvcm0s
IGJvb2wgYm91bmRpbmdCb3hNb2RlKQogewogICAgIHdyaXRlTmFtZVZhbHVlUGFpcih0cywgImdy
YWRpZW50VW5pdHMiLCBib3VuZGluZ0JveE1vZGVTdHJpbmcoYm91bmRpbmdCb3hNb2RlKSk7CiAK
LSAgICBpZiAoc3ByZWFkTWV0aG9kICE9IFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHX1NQUkVBRE1F
VEhPRF9QQUQpCisgICAgaWYgKHNwcmVhZE1ldGhvZCAhPSBTVkdTcHJlYWRNZXRob2RQYWQpCiAg
ICAgICAgIHRzIDw8ICIgW3NwcmVhZE1ldGhvZD0iIDw8IHNwcmVhZE1ldGhvZCA8PCAiXSI7CiAK
ICAgICBpZiAoIWdyYWRpZW50VHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dENodW5rQnVpbGRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0Q2h1bmtCdWlsZGVyLmNwcAko
cmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRD
aHVua0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsMTIgKzEzMCwxMiBAQCB2b2lk
IFNWR1RleHRDaHVua0J1aWxkZXI6OmFkZFRleHRDaHVuayhWCiAgICAgICAgIGRlc2lyZWRUZXh0
TGVuZ3RoID0gdGV4dENvbnRlbnRFbGVtZW50LT5zcGVjaWZpZWRUZXh0TGVuZ3RoKCkudmFsdWUo
dGV4dENvbnRlbnRFbGVtZW50KTsKIAogICAgICAgICBzd2l0Y2ggKHRleHRDb250ZW50RWxlbWVu
dC0+bGVuZ3RoQWRqdXN0KCkpIHsKLSAgICAgICAgY2FzZSBTVkdUZXh0Q29udGVudEVsZW1lbnQ6
OkxFTkdUSEFESlVTVF9VTktOT1dOOgorICAgICAgICBjYXNlIExlbmd0aEFkanVzdFVua25vd246
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdUZXh0Q29udGVudEVsZW1lbnQ6
OkxFTkdUSEFESlVTVF9TUEFDSU5HOgorICAgICAgICBjYXNlIExlbmd0aEFkanVzdFNwYWNpbmc6
CiAgICAgICAgICAgICBjaHVua1N0eWxlIHw9IFNWR1RleHRDaHVuazo6TGVuZ3RoQWRqdXN0U3Bh
Y2luZzsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR1RleHRDb250ZW50RWxl
bWVudDo6TEVOR1RIQURKVVNUX1NQQUNJTkdBTkRHTFlQSFM6CisgICAgICAgIGNhc2UgTGVuZ3Ro
QWRqdXN0U3BhY2luZ0FuZEdseXBoczoKICAgICAgICAgICAgIGNodW5rU3R5bGUgfD0gU1ZHVGV4
dENodW5rOjpMZW5ndGhBZGp1c3RTcGFjaW5nQW5kR2x5cGhzOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRM
YXlvdXRFbmdpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dExheW91dEVuZ2luZS5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTU0LDEwICsxNTQsOCBAQCBib29sIFNWR1RleHRMYXlvdXRFbmdpbmU6OnBhcmVudERl
ZmluZXNUCiB7CiAgICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50UGFyZW50ID0gcGFyZW50OwogICAg
IHdoaWxlIChjdXJyZW50UGFyZW50KSB7Ci0gICAgICAgIFNWR1RleHRDb250ZW50RWxlbWVudCog
dGV4dENvbnRlbnRFbGVtZW50ID0gU1ZHVGV4dENvbnRlbnRFbGVtZW50OjplbGVtZW50RnJvbVJl
bmRlcmVyKGN1cnJlbnRQYXJlbnQpOwotICAgICAgICBpZiAodGV4dENvbnRlbnRFbGVtZW50KSB7
Ci0gICAgICAgICAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OlNWR0xlbmd0aEFkanVzdFR5cGUg
bGVuZ3RoQWRqdXN0ID0gdGV4dENvbnRlbnRFbGVtZW50LT5sZW5ndGhBZGp1c3QoKTsKLSAgICAg
ICAgICAgIGlmIChsZW5ndGhBZGp1c3QgPT0gU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpMRU5HVEhB
REpVU1RfU1BBQ0lORyAmJiB0ZXh0Q29udGVudEVsZW1lbnQtPnNwZWNpZmllZFRleHRMZW5ndGgo
KS52YWx1ZSh0ZXh0Q29udGVudEVsZW1lbnQpID4gMCkKKyAgICAgICAgaWYgKFNWR1RleHRDb250
ZW50RWxlbWVudCogdGV4dENvbnRlbnRFbGVtZW50ID0gU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojpl
bGVtZW50RnJvbVJlbmRlcmVyKGN1cnJlbnRQYXJlbnQpKSB7CisgICAgICAgICAgICBpZiAodGV4
dENvbnRlbnRFbGVtZW50LT5sZW5ndGhBZGp1c3QoKSA9PSBMZW5ndGhBZGp1c3RTcGFjaW5nICYm
IHRleHRDb250ZW50RWxlbWVudC0+c3BlY2lmaWVkVGV4dExlbmd0aCgpLnZhbHVlKHRleHRDb250
ZW50RWxlbWVudCkgPiAwKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAKQEAgLTIwOCw3ICsyMDYsNyBAQCB2b2lkIFNWR1RleHRMYXlvdXRFbmdpbmU6OmJlZ2luVGV4
dFBhdGhMCiAgICAgbV90ZXh0UGF0aEN1cnJlbnRPZmZzZXQgPSBtX3RleHRQYXRoU3RhcnRPZmZz
ZXQ7CiAKICAgICAvLyBFdmVudHVhbGx5IGhhbmRsZSB0ZXh0TGVuZ3RoIGFkanVzdG1lbnRzLgot
ICAgIFNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHTGVuZ3RoQWRqdXN0VHlwZSBsZW5ndGhBZGp1
c3QgPSBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OkxFTkdUSEFESlVTVF9VTktOT1dOOworICAgIExl
bmd0aEFkanVzdFR5cGUgbGVuZ3RoQWRqdXN0ID0gTGVuZ3RoQWRqdXN0VW5rbm93bjsKICAgICBm
bG9hdCBkZXNpcmVkVGV4dExlbmd0aCA9IDA7CiAKICAgICBpZiAoU1ZHVGV4dENvbnRlbnRFbGVt
ZW50KiB0ZXh0Q29udGVudEVsZW1lbnQgPSBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmVsZW1lbnRG
cm9tUmVuZGVyZXIodGV4dFBhdGgpKSB7CkBAIC0yMTksNyArMjE3LDcgQEAgdm9pZCBTVkdUZXh0
TGF5b3V0RW5naW5lOjpiZWdpblRleHRQYXRoTAogICAgIGlmICghZGVzaXJlZFRleHRMZW5ndGgp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChsZW5ndGhBZGp1c3QgPT0gU1ZHVGV4dENvbnRl
bnRFbGVtZW50OjpMRU5HVEhBREpVU1RfU1BBQ0lORykKKyAgICBpZiAobGVuZ3RoQWRqdXN0ID09
IExlbmd0aEFkanVzdFNwYWNpbmcpCiAgICAgICAgIG1fdGV4dFBhdGhTcGFjaW5nID0gKGRlc2ly
ZWRUZXh0TGVuZ3RoIC0gdG90YWxMZW5ndGgpIC8gdG90YWxDaGFyYWN0ZXJzOwogICAgIGVsc2UK
ICAgICAgICAgbV90ZXh0UGF0aFNjYWxpbmcgPSBkZXNpcmVkVGV4dExlbmd0aCAvIHRvdGFsTGVu
Z3RoOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL0dyYWRpZW50QXR0cmlidXRlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9HcmFkaWVudEF0dHJpYnV0ZXMuaAkocmV2aXNp
b24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvR3JhZGllbnRBdHRyaWJ1dGVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1
Y3QgR3JhZGllbnRBdHRyaWJ1dGVzIHsKICAgICBHcmFkaWVudEF0dHJpYnV0ZXMoKQotICAgICAg
ICA6IG1fc3ByZWFkTWV0aG9kKFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHX1NQUkVBRE1FVEhPRF9Q
QUQpCisgICAgICAgIDogbV9zcHJlYWRNZXRob2QoU1ZHU3ByZWFkTWV0aG9kUGFkKQogICAgICAg
ICAsIG1fYm91bmRpbmdCb3hNb2RlKHRydWUpCiAgICAgICAgICwgbV9zcHJlYWRNZXRob2RTZXQo
ZmFsc2UpCiAgICAgICAgICwgbV9ib3VuZGluZ0JveE1vZGVTZXQoZmFsc2UpCkBAIC0zNywxMiAr
MzcsMTIgQEAgc3RydWN0IEdyYWRpZW50QXR0cmlidXRlcyB7CiAgICAgewogICAgIH0KIAotICAg
IFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHU3ByZWFkTWV0aG9kVHlwZSBzcHJlYWRNZXRob2QoKSBj
b25zdCB7IHJldHVybiBtX3NwcmVhZE1ldGhvZDsgfQorICAgIFNWR1NwcmVhZE1ldGhvZFR5cGUg
c3ByZWFkTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9zcHJlYWRNZXRob2Q7IH0KICAgICBib29s
IGJvdW5kaW5nQm94TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRpbmdCb3hNb2RlOyB9CiAg
ICAgQWZmaW5lVHJhbnNmb3JtIGdyYWRpZW50VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9n
cmFkaWVudFRyYW5zZm9ybTsgfQogICAgIGNvbnN0IFZlY3RvcjxHcmFkaWVudDo6Q29sb3JTdG9w
PiYgc3RvcHMoKSBjb25zdCB7IHJldHVybiBtX3N0b3BzOyB9CiAKLSAgICB2b2lkIHNldFNwcmVh
ZE1ldGhvZChTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR1NwcmVhZE1ldGhvZFR5cGUgdmFsdWUpCisg
ICAgdm9pZCBzZXRTcHJlYWRNZXRob2QoU1ZHU3ByZWFkTWV0aG9kVHlwZSB2YWx1ZSkKICAgICB7
CiAgICAgICAgIG1fc3ByZWFkTWV0aG9kID0gdmFsdWU7CiAgICAgICAgIG1fc3ByZWFkTWV0aG9k
U2V0ID0gdHJ1ZTsKQEAgLTczLDcgKzczLDcgQEAgc3RydWN0IEdyYWRpZW50QXR0cmlidXRlcyB7
CiAKIHByaXZhdGU6CiAgICAgLy8gUHJvcGVydGllcwotICAgIFNWR0dyYWRpZW50RWxlbWVudDo6
U1ZHU3ByZWFkTWV0aG9kVHlwZSBtX3NwcmVhZE1ldGhvZDsKKyAgICBTVkdTcHJlYWRNZXRob2RU
eXBlIG1fc3ByZWFkTWV0aG9kOwogICAgIGJvb2wgbV9ib3VuZGluZ0JveE1vZGU7CiAgICAgQWZm
aW5lVHJhbnNmb3JtIG1fZ3JhZGllbnRUcmFuc2Zvcm07CiAgICAgVmVjdG9yPEdyYWRpZW50OjpD
b2xvclN0b3A+IG1fc3RvcHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDgsMTUgKzQ4LDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Ly8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9TVFJJTkco
U1ZHQUVsZW1lbnQsIFNWR05hbWVzOjp0YXJnZXRBdHRyLCBTVkdUYXJnZXQsIHN2Z1RhcmdldCkK
LURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHQUVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRy
LCBIcmVmLCBocmVmKQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHQUVsZW1lbnQsIFNWR05h
bWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9Q
Uk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdBRWxlbWVudCwgU1ZHTmFt
ZXM6OnRhcmdldEF0dHIsIFNWR1RhcmdldCwgc3ZnVGFyZ2V0KQorICAgIERFRklORV9BTklNQVRF
RF9TVFJJTkcoU1ZHQUVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQor
ICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0FFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKwor
QkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdBRWxlbWVudCkKKyAgICAgUkVH
SVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc3ZnVGFyZ2V0KQorICAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShocmVmKQorICAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgICBSRUdJU1RFUl9QQVJF
TlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAg
ICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVH
SVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHQUVsZW1lbnQ6OlNWR0FFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjphVGFnKSk7CisgICAgcmVnaXN0ZXJBbmlt
YXRlZFByb3BlcnRpZXNGb3JTVkdBRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0FFbGVt
ZW50PiBTVkdBRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKQEAgLTEzMiw2MCArMTQyLDYgQEAgdm9pZCBTVkdBRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChjbwogICAgIH0KIH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIFNWR0FFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0FFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0K
LSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRhcmdldEF0dHIsIEFuaW1hdGVkU3Ry
aW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJl
ZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQotdm9pZCBTVkdBRWxlbWVudDo6c3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0
ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVNWR1RhcmdldCgpOwot
ICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRp
ZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFt
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnRhcmdldEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVTVkdUYXJnZXQoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNW
R1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6
c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCiBSZW5kZXJPYmplY3QqIFNW
R0FFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxl
KikKIHsKICAgICBpZiAoc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KHBhcmVudE5vZGUoKSktPmlz
VGV4dENvbnRlbnQoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCShyZXZpc2lvbiA5
MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MSwxMCArNTEsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotCi0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwog
CkBAIC02NywxNyArNjMsMTggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNo
b3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKIAotICAgIC8vIEFuaW1hdGVkIHByb3Bl
cnR5IGRlY2xhcmF0aW9ucwotCi0gICAgLy8gVGhpcyBkZWNsYXJhdGlvbiB1c2VkIHRvIGRlZmlu
ZSBhIG5vbi12aXJ0dWFsICJTdHJpbmcmIHRhcmdldCgpIGNvbnN0IiBtZXRob2QsIHRoYXQgY2xh
c2hlcyB3aXRoICJ2aXJ0dWFsIFN0cmluZyBFbGVtZW50Ojp0YXJnZXQoKSBjb25zdCIuCi0gICAg
Ly8gVGhhdCdzIHdoeSBpdCBoYXMgYmVlbiByZW5hbWVkIHRvICJzdmdUYXJnZXQiLCB0aGUgQ29k
ZUdlbmVyYXRvcnMgdGFrZSBjYXJlIG9mIGNhbGxpbmcgc3ZnVGFyZ2V0QW5pbWF0ZWQoKSBpbnN0
ZWFkIG9mIHRhcmdldEFuaW1hdGVkKCksIHNlZSBDb2RlR2VuZXJhdG9yLnBtLgotICAgIERFQ0xB
UkVfQU5JTUFURURfU1RSSU5HKFNWR1RhcmdldCwgc3ZnVGFyZ2V0KQotCi0gICAgLy8gU1ZHVVJJ
UmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKLQotICAg
IC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JP
T0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCkKKyAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0FFbGVtZW50KQor
ICAgICAgICAgIC8vIFRoaXMgZGVjbGFyYXRpb24gdXNlZCB0byBkZWZpbmUgYSBub24tdmlydHVh
bCAiU3RyaW5nJiB0YXJnZXQoKSBjb25zdCIgbWV0aG9kLCB0aGF0IGNsYXNoZXMgd2l0aCAidmly
dHVhbCBTdHJpbmcgRWxlbWVudDo6dGFyZ2V0KCkgY29uc3QiLgorICAgICAgICAgIC8vIFRoYXQn
cyB3aHkgaXQgaGFzIGJlZW4gcmVuYW1lZCB0byAic3ZnVGFyZ2V0IiwgdGhlIENvZGVHZW5lcmF0
b3JzIHRha2UgY2FyZSBvZiBjYWxsaW5nIHN2Z1RhcmdldEFuaW1hdGVkKCkgaW5zdGVhZCBvZiB0
YXJnZXRBbmltYXRlZCgpLCBzZWUgQ29kZUdlbmVyYXRvci5wbS4KKyAgICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX1NUUklORyhTVkdUYXJnZXQsIHN2Z1RhcmdldCkKKyAgICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
Qk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQorICAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdU
ZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNW
R1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFn
ZSh0aGlzKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDEzICszMywyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHBy
b3BlcnR5IGRlY2xhcmF0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdBbHRHbHlwaEVs
ZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQorQkVHSU5fREVGSU5FX0FO
SU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0FsdEdseXBo
RWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCitFTkRfREVGSU5FX0FO
SU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhT
VkdBbHRHbHlwaEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
aHJlZikKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0UG9z
aXRpb25pbmdFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5s
aW5lIFNWR0FsdEdseXBoRWxlbWVudDo6U1ZHQWx0R2x5cGhFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1RleHRQb3NpdGlv
bmluZ0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
U1ZHTmFtZXM6OmFsdEdseXBoVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNG
b3JTVkdBbHRHbHlwaEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdBbHRHbHlwaEVsZW1l
bnQ+IFNWR0FsdEdseXBoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTQ3LDI4ICs1NCw2IEBAIFBhc3NSZWZQdHI8U1ZH
QWx0R2x5cGhFbGVtZW50PiBTVkdBbHRHbHkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0Fs
dEdseXBoRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIFNWR0FsdEdseXBo
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKLXsKLSAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
KGF0dHJOYW1lKTsKLQotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpIHx8IFNWR1VSSVJl
ZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIHN5bmNocm9uaXpl
SHJlZigpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHQWx0R2x5cGhFbGVt
ZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQot
Ci12b2lkIFNWR0FsdEdseXBoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZH
VGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQog
dm9pZCBTVkdBbHRHbHlwaEVsZW1lbnQ6OnNldEdseXBoUmVmKGNvbnN0IEF0b21pY1N0cmluZyYs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURf
RVJSOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaAkocmV2aXNp
b24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDE4ICs0NSwxMiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNW
R0FsdEdseXBoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
LQotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAg
ICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOwotCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRD
cmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBk
ZWNsYXJhdGlvbnMKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERFQ0xBUkVfQU5JTUFU
RURfU1RSSU5HKEhyZWYsIGhyZWYpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR0FsdEdseXBoRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkco
SHJlZiwgaHJlZikKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFNWR0FuaW1hdGVFbGVtZW50OjpTVkdBbmltYXRlRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdB
bmltYXRpb25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAgICwgbV9hbmltYXRlZEF0dHJp
YnV0ZVR5cGUoQW5pbWF0ZWRTdHJpbmcpCisgICAgLCBtX2FuaW1hdGVkUHJvcGVydHlUeXBlKEFu
aW1hdGVkU3RyaW5nKQogICAgICwgbV9mcm9tUHJvcGVydHlWYWx1ZVR5cGUoUmVndWxhclByb3Bl
cnR5VmFsdWUpCiAgICAgLCBtX3RvUHJvcGVydHlWYWx1ZVR5cGUoUmVndWxhclByb3BlcnR5VmFs
dWUpCiB7CkBAIC05MywxNSArOTMsMjAgQEAgYm9vbCBTVkdBbmltYXRlRWxlbWVudDo6aGFzVmFs
aWRBdHRyaWJ1dAogICAgIGlmICghdGFyZ2V0RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIAotICAgIHJldHVybiBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0
RWxlbWVudCkgIT0gQW5pbWF0ZWRVbmtub3duOworICAgIHJldHVybiBkZXRlcm1pbmVBbmltYXRl
ZFByb3BlcnR5VHlwZSh0YXJnZXRFbGVtZW50KSAhPSBBbmltYXRlZFVua25vd247CiB9CiAKLUFu
aW1hdGVkQXR0cmlidXRlVHlwZSBTVkdBbmltYXRlRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0ZWRB
dHRyaWJ1dGVUeXBlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIGNvbnN0CitBbmltYXRlZFBy
b3BlcnR5VHlwZSBTVkdBbmltYXRlRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5
cGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgY29uc3QKIHsKICAgICBBU1NFUlQodGFyZ2V0
RWxlbWVudCk7CiAKLSAgICBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgdHlwZSA9IHRhcmdldEVsZW1l
bnQtPmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUoKSk7Ci0g
ICAgaWYgKHR5cGUgPT0gQW5pbWF0ZWRVbmtub3duIHx8IChoYXNUYWdOYW1lKFNWR05hbWVzOjph
bmltYXRlQ29sb3JUYWcpICYmIHR5cGUgIT0gQW5pbWF0ZWRDb2xvcikpCisgICAgVmVjdG9yPEFu
aW1hdGVkUHJvcGVydHlUeXBlPiBwcm9wZXJ0eVR5cGVzOworICAgIHRhcmdldEVsZW1lbnQtPmFu
aW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUoKSwgcHJvcGVydHlU
eXBlcyk7CisgICAgaWYgKHByb3BlcnR5VHlwZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
QW5pbWF0ZWRVbmtub3duOworCisgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSA9IHByb3Bl
cnR5VHlwZXNbMF07CisgICAgaWYgKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVDb2xvclRh
ZykgJiYgdHlwZSAhPSBBbmltYXRlZENvbG9yKQogICAgICAgICByZXR1cm4gQW5pbWF0ZWRVbmtu
b3duOwogCiAgICAgLy8gRklYTUU6IEFuaW1hdG9yIGZvciBBbmltYXRlZEVudW1lcmF0aW9uIG1p
c3NpbmcuCkBAIC0xNjEsOSArMTY2LDkgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3Vs
YXRlQW5pbWF0ZQogICAgICAgICByZXR1cm47CiAgICAgU1ZHQW5pbWF0ZUVsZW1lbnQqIHJlc3Vs
dHMgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+KHJlc3VsdEVsZW1lbnQpOwogICAg
IC8vIENhbid0IGFjY3VtdWxhdGUgb3ZlciBhIHN0cmluZyBwcm9wZXJ0eS4KLSAgICBpZiAocmVz
dWx0cy0+bV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPT0gQW5pbWF0ZWRTdHJpbmcgJiYgbV9hbmlt
YXRlZEF0dHJpYnV0ZVR5cGUgIT0gQW5pbWF0ZWRTdHJpbmcpCisgICAgaWYgKHJlc3VsdHMtPm1f
YW5pbWF0ZWRQcm9wZXJ0eVR5cGUgPT0gQW5pbWF0ZWRTdHJpbmcgJiYgbV9hbmltYXRlZFByb3Bl
cnR5VHlwZSAhPSBBbmltYXRlZFN0cmluZykKICAgICAgICAgcmV0dXJuOwotICAgIHN3aXRjaCAo
bV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUpIHsKKyAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRQcm9wZXJ0
eVR5cGUpIHsKICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgY2FzZSBBbmltYXRlZEJvb2xl
YW46CiAgICAgY2FzZSBBbmltYXRlZENvbG9yOgpAQCAtMjE3LDcgKzIyMiw3IEBAIHZvaWQgU1ZH
QW5pbWF0ZUVsZW1lbnQ6OmRldGVybWluZVByb3BlcnQKICAgICBpZiAoaW5oZXJpdHNGcm9tUHJv
cGVydHkodGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSgpLCB0bykpCiAgICAgICAgIG1fdG9Q
cm9wZXJ0eVZhbHVlVHlwZSA9IEluaGVyaXRWYWx1ZTsKIAotICAgIGlmIChtX2FuaW1hdGVkQXR0
cmlidXRlVHlwZSAhPSBBbmltYXRlZENvbG9yKQorICAgIGlmIChtX2FuaW1hdGVkUHJvcGVydHlU
eXBlICE9IEFuaW1hdGVkQ29sb3IpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoYXR0
cmlidXRlVmFsdWVJc0N1cnJlbnRDb2xvcihmcm9tKSkKQEAgLTIzMyw4ICsyMzgsOCBAQCBib29s
IFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIC8vIEZJWE1FOiBOZWVkcyBtb3JlIHNvbGlkIHdheSBkZXRlcm1pbmUgdGFyZ2V0
IGF0dHJpYnV0ZSB0eXBlLgotICAgIG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlID0gZGV0ZXJtaW5l
QW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKHRhcmdldEVsZW1lbnQpOwotICAgIHN3aXRjaCAobV9hbmlt
YXRlZEF0dHJpYnV0ZVR5cGUpIHsKKyAgICBtX2FuaW1hdGVkUHJvcGVydHlUeXBlID0gZGV0ZXJt
aW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUodGFyZ2V0RWxlbWVudCk7CisgICAgc3dpdGNoIChtX2Fu
aW1hdGVkUHJvcGVydHlUeXBlKSB7CiAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgogICAgIGNhc2Ug
QW5pbWF0ZWRCb29sZWFuOgogICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKQEAgLTI2NSw4ICsyNzAs
OCBAQCBib29sIFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIEFTU0VSVCghaGFzVGFnTmFtZShTVkdOYW1lczo6c2V0VGFnKSk7
Ci0gICAgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPSBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0
ZVR5cGUodGFyZ2V0RWxlbWVudCk7Ci0gICAgc3dpdGNoIChtX2FuaW1hdGVkQXR0cmlidXRlVHlw
ZSkgeworICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgPSBkZXRlcm1pbmVBbmltYXRlZFByb3Bl
cnR5VHlwZSh0YXJnZXRFbGVtZW50KTsKKyAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5
cGUpIHsKICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgY2FzZSBBbmltYXRlZEJvb2xlYW46
CiAgICAgY2FzZSBBbmltYXRlZENvbG9yOgpAQCAtMjk2LDggKzMwMSw4IEBAIHZvaWQgU1ZHQW5p
bWF0ZUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUKIHsKICAgICBTVkdFbGVtZW50KiB0YXJnZXRF
bGVtZW50ID0gdGhpcy0+dGFyZ2V0RWxlbWVudCgpOwogICAgIEFTU0VSVCh0YXJnZXRFbGVtZW50
KTsKLSAgICBtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSA9IGRldGVybWluZUFuaW1hdGVkQXR0cmli
dXRlVHlwZSh0YXJnZXRFbGVtZW50KTsKLSAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRBdHRyaWJ1dGVU
eXBlKSB7CisgICAgbV9hbmltYXRlZFByb3BlcnR5VHlwZSA9IGRldGVybWluZUFuaW1hdGVkUHJv
cGVydHlUeXBlKHRhcmdldEVsZW1lbnQpOworICAgIHN3aXRjaCAobV9hbmltYXRlZFByb3BlcnR5
VHlwZSkgewogICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKICAgICBjYXNlIEFuaW1hdGVkQm9vbGVh
bjoKICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CkBAIC0zMjcsNyArMzMyLDcgQEAgdm9pZCBTVkdB
bmltYXRlRWxlbWVudDo6cmVzZXRUb0Jhc2VWYWx1ZQogdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6
YXBwbHlSZXN1bHRzVG9UYXJnZXQoKQogewogICAgIFN0cmluZyB2YWx1ZVRvQXBwbHk7Ci0gICAg
c3dpdGNoIChtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSkgeworICAgIHN3aXRjaCAobV9hbmltYXRl
ZFByb3BlcnR5VHlwZSkgewogICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKICAgICBjYXNlIEFuaW1h
dGVkQm9vbGVhbjoKICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CkBAIC0zNTYsOCArMzYxLDggQEAg
ZmxvYXQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZURpc3RhbgogICAgIFNWR0VsZW1lbnQq
IHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CiAgICAgaWYgKCF0YXJnZXRF
bGVtZW50KQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUg
PSBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVudCk7Ci0gICAgc3dp
dGNoIChtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSkgeworICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eVR5
cGUgPSBkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0YXJnZXRFbGVtZW50KTsKKyAgICBz
d2l0Y2ggKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUpIHsKICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6
CiAgICAgY2FzZSBBbmltYXRlZEJvb2xlYW46CiAgICAgY2FzZSBBbmltYXRlZENvbG9yOgpAQCAt
MzgzLDcgKzM4OCw3IEBAIGZsb2F0IFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVEaXN0YW4K
IFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yKiBTVkdBbmltYXRlRWxlbWVudDo6ZW5zdXJlQW5pbWF0
b3IoKQogewogICAgIGlmICghbV9hbmltYXRvcikKLSAgICAgICAgbV9hbmltYXRvciA9IFNWR0Fu
aW1hdG9yRmFjdG9yeTo6Y3JlYXRlKHRoaXMsIHRhcmdldEVsZW1lbnQoKSwgbV9hbmltYXRlZEF0
dHJpYnV0ZVR5cGUpOworICAgICAgICBtX2FuaW1hdG9yID0gU1ZHQW5pbWF0b3JGYWN0b3J5Ojpj
cmVhdGUodGhpcywgdGFyZ2V0RWxlbWVudCgpLCBtX2FuaW1hdGVkUHJvcGVydHlUeXBlKTsKICAg
ICByZXR1cm4gbV9hbmltYXRvci5nZXQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyB2b2lkIGFkanVzdEZvckN1cnJlbnRDb2xvcihTVkdFbGVtZW50KiB0
YXJnZXRFbGVtZW50LCBDb2xvciYpOwogICAgIHZvaWQgYWRqdXN0Rm9ySW5oZXJpdGFuY2UoU1ZH
RWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIFN0cmluZyYgdmFs
dWUpOwogICAgIAotICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBkZXRlcm1pbmVBbmltYXRlZEF0
dHJpYnV0ZVR5cGUoU1ZHRWxlbWVudCopIGNvbnN0OworICAgIEFuaW1hdGVkUHJvcGVydHlUeXBl
IGRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKFNWR0VsZW1lbnQqKSBjb25zdDsKICAgICB2
b2lkIGRldGVybWluZVByb3BlcnR5VmFsdWVUeXBlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmKTsKICAgICAKICAgICBBbmltYXRlZFByb3BlcnR5VmFsdWVUeXBlIGZyb21Qcm9wZXJ0eVZh
bHVlVHlwZSgpIHsgcmV0dXJuIG1fZnJvbVByb3BlcnR5VmFsdWVUeXBlOyB9CkBAIC02OSw3ICs2
OSw3IEBAIHByaXZhdGU6CiAgICAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IqIGVuc3VyZUFuaW1h
dG9yKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpIGNv
bnN0OwotICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBtX2FuaW1hdGVkQXR0cmlidXRlVHlwZTsK
KyAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBtX2FuaW1hdGVkUHJvcGVydHlUeXBlOwogCiAgICAg
QW5pbWF0ZWRQcm9wZXJ0eVZhbHVlVHlwZSBtX2Zyb21Qcm9wZXJ0eVZhbHVlVHlwZTsKICAgICBB
bmltYXRlZFByb3BlcnR5VmFsdWVUeXBlIG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAko
cmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9y
bUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxOCArNjYsMjEgQEAgYm9vbCBTVkdB
bmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aGFzVmFsaQogICAgIGlmICghdGFyZ2V0RWxlbWVudCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBkZXRlcm1pbmVBbmltYXRl
ZEF0dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVudCkgPT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Owor
ICAgIHJldHVybiBkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0YXJnZXRFbGVtZW50KSA9
PSBBbmltYXRlZFRyYW5zZm9ybUxpc3Q7CiB9CiAKLUFuaW1hdGVkQXR0cmlidXRlVHlwZSBTVkdB
bmltYXRlVHJhbnNmb3JtRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKFNW
R0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIGNvbnN0CitBbmltYXRlZFByb3BlcnR5VHlwZSBTVkdB
bmltYXRlVHJhbnNmb3JtRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUoU1ZH
RWxlbWVudCogdGFyZ2V0RWxlbWVudCkgY29uc3QKIHsKICAgICBBU1NFUlQodGFyZ2V0RWxlbWVu
dCk7CiAgICAgCiAgICAgLy8gSnVzdCB0cmFuc2Zvcm0gbGlzdHMgY2FuIGJlIGFuaW1hdGVkIHdp
dGggPGFuaW1hdGVUcmFuc2Zvcm0+CiAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2Fu
aW1hdGUuaHRtbCNBbmltYXRpb25BdHRyaWJ1dGVzQW5kUHJvcGVydGllcwotICAgIGlmICh0YXJn
ZXRFbGVtZW50LT5hbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1l
KCkpICE9IEFuaW1hdGVkVHJhbnNmb3JtTGlzdCkKKyAgICBWZWN0b3I8QW5pbWF0ZWRQcm9wZXJ0
eVR5cGU+IHByb3BlcnR5VHlwZXM7CisgICAgdGFyZ2V0RWxlbWVudC0+YW5pbWF0ZWRQcm9wZXJ0
eVR5cGVGb3JBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSgpLCBwcm9wZXJ0eVR5cGVzKTsKKyAgICBp
ZiAocHJvcGVydHlUeXBlcy5pc0VtcHR5KCkgfHwgcHJvcGVydHlUeXBlc1swXSAhPSBBbmltYXRl
ZFRyYW5zZm9ybUxpc3QpCiAgICAgICAgIHJldHVybiBBbmltYXRlZFVua25vd247CiAKKyAgICBB
U1NFUlQocHJvcGVydHlUeXBlcy5zaXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIEFuaW1hdGVkVHJh
bnNmb3JtTGlzdDsKIH0KIApAQCAtMTMxLDcgKzEzNCw3IEBAIHN0YXRpYyBTVkdUcmFuc2Zvcm1M
aXN0KiB0cmFuc2Zvcm1MaXN0Rm8KIHZvaWQgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OnJl
c2V0VG9CYXNlVmFsdWUoY29uc3QgU3RyaW5nJiBiYXNlVmFsdWUpCiB7CiAgICAgU1ZHRWxlbWVu
dCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKLSAgICBpZiAoIXRhcmdl
dEVsZW1lbnQgfHwgZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKHRhcmdldEVsZW1lbnQp
ID09IEFuaW1hdGVkVW5rbm93bikKKyAgICBpZiAoIXRhcmdldEVsZW1lbnQgfHwgZGV0ZXJtaW5l
QW5pbWF0ZWRQcm9wZXJ0eVR5cGUodGFyZ2V0RWxlbWVudCkgPT0gQW5pbWF0ZWRVbmtub3duKQog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBub3QgYmUgY29ycmVj
dCBmb3IgYWNjdW11bGF0ZWQgc3VtLiBOZWVkcyBjaGVja2luZy4KQEAgLTE1NCw3ICsxNTcsNyBA
QCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpyZXNldFRvCiB2b2lkIFNWR0FuaW1h
dGVUcmFuc2Zvcm1FbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRh
Z2UsIHVuc2lnbmVkIHJlcGVhdCwgU1ZHU01JTEVsZW1lbnQqKQogewogICAgIFNWR0VsZW1lbnQq
IHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7Ci0gICAgaWYgKCF0YXJnZXRF
bGVtZW50IHx8IGRldGVybWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZSh0YXJnZXRFbGVtZW50KSA9
PSBBbmltYXRlZFVua25vd24pCisgICAgaWYgKCF0YXJnZXRFbGVtZW50IHx8IGRldGVybWluZUFu
aW1hdGVkUHJvcGVydHlUeXBlKHRhcmdldEVsZW1lbnQpID09IEFuaW1hdGVkVW5rbm93bikKICAg
ICAgICAgcmV0dXJuOwogICAgIFNWR1RyYW5zZm9ybUxpc3QqIHRyYW5zZm9ybUxpc3QgPSB0cmFu
c2Zvcm1MaXN0Rm9yKHRhcmdldEVsZW1lbnQpOwogICAgIEFTU0VSVCh0cmFuc2Zvcm1MaXN0KTsK
QEAgLTIwMCw3ICsyMDMsNyBAQCBTVkdUcmFuc2Zvcm0gU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1l
bnQ6CiB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjphcHBseVJlc3VsdHNUb1Rhcmdl
dCgpCiB7CiAgICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1l
bnQoKTsKLSAgICBpZiAoIXRhcmdldEVsZW1lbnQgfHwgZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1
dGVUeXBlKHRhcmdldEVsZW1lbnQpID09IEFuaW1hdGVkVW5rbm93bikKKyAgICBpZiAoIXRhcmdl
dEVsZW1lbnQgfHwgZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUodGFyZ2V0RWxlbWVudCkg
PT0gQW5pbWF0ZWRVbmtub3duKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBhY2N1bXVs
YXRlIHRvIHRoZSB0YXJnZXQgZWxlbWVudCB0cmFuc2Zvcm0gbGlzdCBzbyB0aGVyZSBpcyBub3Qg
bXVjaCB0byBkbyBoZXJlLgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFu
c2Zvcm1FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVUcmFuc2Zvcm1FbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcg
KzQwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaGFzVmFs
aWRBdHRyaWJ1dGVUeXBlKCkgY29uc3Q7Ci0gICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIGRldGVy
bWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZShTVkdFbGVtZW50KikgY29uc3Q7CisgICAgQW5pbWF0
ZWRQcm9wZXJ0eVR5cGUgZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUoU1ZHRWxlbWVudCop
IGNvbnN0OwogCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSop
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5oCShyZXZpc2lvbiA5MDQ1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDcgKzM0LDcgQEAgdHlwZWRlZiBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxT
VkdBbgogREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdBbmltYXRlZEFuZ2xlLCBTVkdBbmds
ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFU
RURfQU5HTEVfTVVMVElQTEVfV1JBUFBFUlMoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RP
TUF0dHJpYnV0ZUlkZW50aWZpZXIsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURF
RklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0
cmlidXRlSWRlbnRpZmllciwgU1ZHQW5pbWF0ZWRBbmdsZSwgU1ZHQW5nbGUsIFVwcGVyUHJvcGVy
dHksIExvd2VyUHJvcGVydHkpCitERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWRBbmds
ZSwgT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikK
IGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRCb29sZWFuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkQm9vbGVhbi5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZEJvb2xlYW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOCBAQCB0eXBl
ZGVmIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmCiBERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRZKFNWR0FuaW1hdGVkQm9vbGVhbiwgYm9vbCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9w
ZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfQk9PTEVBTihPd25lclR5cGUsIERPTUF0
dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVE
X1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1l
KCksIFNWR0FuaW1hdGVkQm9vbGVhbiwgYm9vbCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0
eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZEJvb2xlYW4sIE93bmVyVHlwZSwg
RE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExv
d2VyUHJvcGVydHkpCiAKLSAgICAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIGNsYXNzIFNW
R0FuaW1hdGlvbkVsZW1lbnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZEVudW1lcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkRW51bWVyYXRpb24uaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsNyBA
QCB0eXBlZGVmIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmCiBERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY8RW51bVR5
cGU+LCBFbnVtVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBE
RUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVy
UHJvcGVydHksIExvd2VyUHJvcGVydHksIEVudW1UeXBlKSBcCi1ERUZJTkVfQU5JTUFURURfUFJP
UEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwg
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZjxFbnVtVHlwZT4sIEVudW1UeXBl
LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQotCi0jZGVmaW5lIERFRklORV9BTklNQVRF
RF9FTlVNRVJBVElPTl9NVUxUSVBMRV9XUkFQUEVSUyhPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwg
U1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSwg
RW51bVR5cGUpIFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJp
YnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblBy
b3BlcnR5VGVhck9mZjxFbnVtVHlwZT4sIEVudW1UeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclBy
b3BlcnR5KQorREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkRW51bWVyYXRpb24sIE93
bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJv
cGVydHksIExvd2VyUHJvcGVydHkpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuaAkocmV2aXNpb24gOTA0NTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDEwICszNCwxMSBAQCB0eXBlZGVmIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFy
T2ZmCiBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkSW50ZWdlciwgbG9uZywg
VXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURf
SU5URUdFUihPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9w
ZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRl
LCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVkSW50ZWdlciwgbG9uZywgVXBw
ZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmlt
YXRlZEludGVnZXIsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxO
YW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKKy8vIEZJWE1FOiBUaGlzIGN1
cnJlbnRseSBhbmltYXRlcyBhcyBudW1iZXItb3B0aW9uYWwtbnVtYmVyLCBpbnN0ZWFkIG9mIGlu
dGVnZXItb3B0aW9uYWwtaW50ZWdlciwgd2hpY2ggaXMgbWlzc2luZy4KICNkZWZpbmUgREVGSU5F
X0FOSU1BVEVEX0lOVEVHRVJfTVVMVElQTEVfV1JBUFBFUlMoT3duZXJUeXBlLCBET01BdHRyaWJ1
dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVy
dHkpIFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwg
U1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgU1ZHQW5pbWF0ZWRJbnRlZ2VyLCBsb25nLCBVcHBl
clByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1h
dGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBTVkdET01B
dHRyaWJ1dGVJZGVudGlmaWVyLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiAjaWYg
RU5BQkxFKFNWR19BTklNQVRJT04pCiBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmgJKHJldmlzaW9uIDkwNDU0KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDcgKzM0LDcgQEAgdHlwZWRlZiBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxTVkdMZQog
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdBbmltYXRlZExlbmd0aCwgU1ZHTGVuZ3RoLCBV
cHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiAjZGVmaW5lIERFRklORV9BTklNQVRFRF9M
RU5HVEgoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVy
dHkpIFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwg
RE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBTVkdBbmltYXRlZExlbmd0aCwgU1ZHTGVuZ3RoLCBV
cHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFu
aW1hdGVkTGVuZ3RoLCBPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2Fs
TmFtZSgpLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiAjaWYgRU5BQkxFKFNWR19B
TklNQVRJT04pCiBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDggKzM0LDggQEAgdHlwZWRlZiBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8Uwog
REVDTEFSRV9BTklNQVRFRF9MSVNUX1BST1BFUlRZKFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCwgU1ZH
TGVuZ3RoTGlzdCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJ
TkVfQU5JTUFURURfTEVOR1RIX0xJU1QoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJv
cGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFRklORV9BTklNQVRFRF9MSVNUX1BST1BFUlRZKE93
bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1h
dGVkTGVuZ3RoTGlzdCwgU1ZHTGVuZ3RoTGlzdCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0
eSkKLSAgICAKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZExlbmd0aExpc3QsIE93
bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJv
cGVydHksIExvd2VyUHJvcGVydHkpCisKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIGNsYXNz
IFNWR0FuaW1hdGlvbkVsZW1lbnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZE51bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZE51bWJlci5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZE51bWJlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMCArMzQsMTAgQEAgdHlwZWRlZiBT
VkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZgogREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
WShTVkdBbmltYXRlZE51bWJlciwgZmxvYXQsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkp
CiAKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX05VTUJFUihPd25lclR5cGUsIERPTUF0dHJpYnV0
ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNW
R0FuaW1hdGVkTnVtYmVyLCBmbG9hdCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RF
RklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZE51bWJlciwgT3duZXJUeXBlLCBET01BdHRy
aWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9w
ZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJT
KE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBVcHBl
clByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCi1ERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoT3du
ZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFNWR0FuaW1h
dGVkTnVtYmVyLCBmbG9hdCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9B
TklNQVRFRF9QUk9QRVJUWShBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLCBPd25lclR5cGUs
IERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgVXBwZXJQcm9wZXJ0eSwg
TG93ZXJQcm9wZXJ0eSkKIAogI2lmIEVOQUJMRShTVkdfQU5JTUFUSU9OKQogY2xhc3MgU1ZHQW5p
bWF0aW9uRWxlbWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJl
ckxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1i
ZXJMaXN0LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkTnVtYmVyTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCw4IEBAIHR5cGVkZWYg
U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFMKIERFQ0xBUkVfQU5JTUFURURfTElTVF9Q
Uk9QRVJUWShTVkdBbmltYXRlZE51bWJlckxpc3QsIFNWR051bWJlckxpc3QsIFVwcGVyUHJvcGVy
dHksIExvd2VyUHJvcGVydHkpCiAKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9MSVNU
KE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBc
Ci1ERUZJTkVfQU5JTUFURURfTElTVF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwg
RE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBTVkdBbmltYXRlZE51bWJlckxpc3QsIFNWR051bWJl
ckxpc3QsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCi0gICAgCitERUZJTkVfQU5JTUFU
RURfUFJPUEVSVFkoQW5pbWF0ZWROdW1iZXJMaXN0LCBPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwg
RE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQor
CiAjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCiBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50Owog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVB
c3BlY3RSYXRpby5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQs
OCBAQCB0eXBlZGVmIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPFNWR1ByCiBERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbywgU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpbywgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBE
RUZJTkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhPd25lclR5cGUsIERPTUF0dHJpYnV0
ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNW
R0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbywgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbywgVXBw
ZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmlt
YXRlZFByZXNlcnZlQXNwZWN0UmF0aW8sIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRy
aWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKLSAgICAK
ICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFJlY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRSZWN0LmgJKHJldmlzaW9uIDkwNDU0KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw3ICszNSw3IEBAIHR5cGVkZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8RmxvYXQK
IERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHQW5pbWF0ZWRSZWN0LCBGbG9hdFJlY3QsIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX1JF
Q1QoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkp
IFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9N
QXR0cmlidXRlLmxvY2FsTmFtZSgpLCBTVkdBbmltYXRlZFJlY3QsIEZsb2F0UmVjdCwgVXBwZXJQ
cm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRl
ZFJlY3QsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCks
IFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElP
TikKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRTdHJpbmcuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCB0eXBl
ZGVmIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmCiBERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRZKFNWR0FuaW1hdGVkU3RyaW5nLCBTdHJpbmcsIFVwcGVyUHJvcGVydHksIExvd2VyUHJv
cGVydHkpCiAKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX1NUUklORyhPd25lclR5cGUsIERPTUF0
dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVE
X1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1l
KCksIFNWR0FuaW1hdGVkU3RyaW5nLCBTdHJpbmcsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVy
dHkpCitERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWRTdHJpbmcsIE93bmVyVHlwZSwg
RE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExv
d2VyUHJvcGVydHkpCiAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIGNsYXNzIFNWR0FuaW1h
dGlvbkVsZW1lbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJh
bnNmb3JtTGlzdC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCB0
eXBlZGVmIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5CiBERUNMQVJFX0FOSU1BVEVE
X0xJU1RfUFJPUEVSVFkoU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LCBTVkdUcmFuc2Zvcm1MaXN0
LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiAjZGVmaW5lIERFRklORV9BTklNQVRF
RF9UUkFOU0ZPUk1fTElTVChPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwg
TG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX0xJU1RfUFJPUEVSVFkoT3duZXJUeXBl
LCBET01BdHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgU1ZHQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0LCBTVkdUcmFuc2Zvcm1MaXN0LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5
KQorREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkVHJhbnNmb3JtTGlzdCwgT3duZXJU
eXBlLCBET01BdHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgVXBwZXJQcm9wZXJ0
eSwgTG93ZXJQcm9wZXJ0eSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NyArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVNWR0FuaW1hdGVkVHlwZTo6U1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVkQXR0cmlidXRlVHlwZSB0
eXBlKQorU1ZHQW5pbWF0ZWRUeXBlOjpTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRQcm9wZXJ0eVR5
cGUgdHlwZSkKICAgICA6IG1fdHlwZSh0eXBlKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFR5cGUuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlUmVjdChGbG9h
dFJlY3QqKTsKICAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVN0
cmluZyhTdHJpbmcqKTsKIAotICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9CisgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAgICAgU1ZHQW5nbGUmIGFuZ2xlKCk7CiAgICAgYm9vbCYg
Ym9vbGVhbigpOwpAQCAtNzksOSArNzksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmVzZXJ2
ZUFzcGVjdFJhdGlvQmFzZVZhbHVlKGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mKTsKIAog
cHJpdmF0ZToKLSAgICBTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKTsKKyAg
ICBTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRQcm9wZXJ0eVR5cGUpOwogCi0gICAgQW5pbWF0ZWRB
dHRyaWJ1dGVUeXBlIG1fdHlwZTsKKyAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBtX3R5cGU7CiAK
ICAgICB1bmlvbiBEYXRhVW5pb24gewogICAgICAgICBEYXRhVW5pb24oKQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgJKHJldmlzaW9uIDkwNDU0
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDE0ICs0MywxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZXh0
RWxlbWVudChTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkgeyBtX2NvbnRleHRFbGVtZW50ID0g
Y29udGV4dEVsZW1lbnQ7IH0KICAgICAKIHByb3RlY3RlZDoKLSAgICBTVkdBbmltYXRlZFR5cGVB
bmltYXRvcihBbmltYXRlZEF0dHJpYnV0ZVR5cGUgdHlwZSwgU1ZHQW5pbWF0aW9uRWxlbWVudCog
YW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCisgICAgU1ZHQW5p
bWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSwgU1ZHQW5pbWF0aW9u
RWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiAg
ICAgICAgIDogbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9hbmltYXRpb25FbGVtZW50KGFuaW1h
dGlvbkVsZW1lbnQpCiAgICAgICAgICwgbV9jb250ZXh0RWxlbWVudChjb250ZXh0RWxlbWVudCkK
ICAgICB7CiAgICAgfQogCi0gICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIG1fdHlwZTsKKyAgICBB
bmltYXRlZFByb3BlcnR5VHlwZSBtX3R5cGU7CiAgICAgU1ZHQW5pbWF0aW9uRWxlbWVudCogbV9h
bmltYXRpb25FbGVtZW50OwogICAgIFNWR0VsZW1lbnQqIG1fY29udGV4dEVsZW1lbnQ7CiB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAkocmV2aXNp
b24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUyLDEzICs1MiwyMCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25z
Ci1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdBbmltYXRpb25FbGVtZW50LCBTVkdOYW1lczo6
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVS
VElFUworICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0FuaW1hdGlvbkVsZW1lbnQsIFNW
R05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURf
UFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0FuaW1h
dGlvbkVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIFNWR0Fu
aW1hdGlvbkVsZW1lbnQ6OlNWR0FuaW1hdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU01JTEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpCiAgICAgLCBtX2FuaW1hdGlvblZhbGlkKGZhbHNlKQogeworICAgIHJlZ2lz
dGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQW5pbWF0aW9uRWxlbWVudCgpOwogfQogCiBzdGF0
aWMgdm9pZCBwYXJzZUtleVRpbWVzKGNvbnN0IFN0cmluZyYgcGFyc2UsIFZlY3RvcjxmbG9hdD4m
IHJlc3VsdCwgYm9vbCB2ZXJpZnlPcmRlcikKQEAgLTIwMywyMiArMjEwLDYgQEAgdm9pZCBTVkdB
bmltYXRpb25FbGVtZW50OjphdHRyaWJ1dGVDaGFuZwogICAgIFNWR1NNSUxFbGVtZW50OjphdHRy
aWJ1dGVDaGFuZ2VkKGF0dHIsIHByZXNlcnZlRGVjbHMpOwogfQogCi12b2lkIFNWR0FuaW1hdGlv
bkVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCi17Ci0gICAgU1ZHU01JTEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUp
OwotCi0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25p
emVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKQotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQo
KTsKLSAgICBlbHNlIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCi0g
ICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwot
fQotCiBmbG9hdCBTVkdBbmltYXRpb25FbGVtZW50OjpnZXRTdGFydFRpbWUoKSBjb25zdAogewog
ICAgIHJldHVybiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGludGVydmFsQmVnaW4oKS52YWx1ZSgp
KTsKQEAgLTQ4Niw3ICs0NzcsNyBAQCB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmN1cnJlbnRW
YWx1ZXNGCiAgICAgQ2FsY01vZGUgY2FsY01vZGUgPSB0aGlzLT5jYWxjTW9kZSgpOwogICAgIGlm
IChoYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlVGFnKSB8fCBoYXNUYWdOYW1lKFNWR05hbWVz
OjphbmltYXRlQ29sb3JUYWcpKSB7CiAgICAgICAgIGNvbnN0IFNWR0FuaW1hdGVFbGVtZW50KiBh
bmltYXRlRWxlbWVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFNWR0FuaW1hdGVFbGVtZW50Kj4odGhp
cyk7Ci0gICAgICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBhdHRyaWJ1dGVUeXBlID0gYW5pbWF0
ZUVsZW1lbnQtPmRldGVybWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZSh0YXJnZXRFbGVtZW50KCkp
OworICAgICAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBhdHRyaWJ1dGVUeXBlID0gYW5pbWF0ZUVs
ZW1lbnQtPmRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKHRhcmdldEVsZW1lbnQoKSk7CiAg
ICAgICAgIC8vIEZhbGwgYmFjayB0byBkaXNjcmV0ZSBhbmltYXRpb25zIGZvciBTdHJpbmdzLgog
ICAgICAgICBpZiAoYXR0cmlidXRlVHlwZSA9PSBBbmltYXRlZEJvb2xlYW4KICAgICAgICAgICAg
IHx8IGF0dHJpYnV0ZVR5cGUgPT0gQW5pbWF0ZWRFbnVtZXJhdGlvbgpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
OCw3ICsxMDgsNiBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGF0
dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVzZXJ2ZURlY2xzKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKGNvbnN0IFN0cmluZyYgZnJv
bVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBj
YWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGJ5U3RyaW5nKSA9IDA7CkBAIC0xMjMsMTAgKzEyMiwxNCBAQCBwcml2YXRlOgogICAg
IGZsb2F0IGNhbGN1bGF0ZVBlcmNlbnRGb3JTcGxpbmUoZmxvYXQgcGVyY2VudCwgdW5zaWduZWQg
c3BsaW5lSW5kZXgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGNhbGN1bGF0ZUtleVRpbWVzSW5kZXgo
ZmxvYXQgcGVyY2VudCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJh
dGlvbnMKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJF
X0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZH
QW5pbWF0aW9uRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5E
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0
dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hy
b25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9u
aXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4
dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5n
dWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KIAog
ICAgIGJvb2wgbV9hbmltYXRpb25WYWxpZDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdG9yRmFjdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRvckZhY3RvcnkuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0b3JGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgY2xh
c3MgU1ZHQW5pbWF0aW9uRWxlbWVudDsKIAogY2xhc3MgU1ZHQW5pbWF0b3JGYWN0b3J5IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGVBbmltYXRvcj4gY3Jl
YXRlKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNv
bnRleHRFbGVtZW50LCBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgYXR0cmlidXRlVHlwZSkKKyAgICBz
dGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGVBbmltYXRvcj4gY3JlYXRlKFNWR0FuaW1h
dGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50
LCBBbmltYXRlZFByb3BlcnR5VHlwZSBhdHRyaWJ1dGVUeXBlKQogICAgIHsKICAgICAgICAgQVNT
RVJUKGFuaW1hdGlvbkVsZW1lbnQpOwogICAgICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDExICszMywyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFu
aW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0Np
cmNsZUVsZW1lbnQsIFNWR05hbWVzOjpjeEF0dHIsIEN4LCBjeCkKLURFRklORV9BTklNQVRFRF9M
RU5HVEgoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTmFtZXM6OmN5QXR0ciwgQ3ksIGN5KQotREVGSU5F
X0FOSU1BVEVEX0xFTkdUSChTVkdDaXJjbGVFbGVtZW50LCBTVkdOYW1lczo6ckF0dHIsIFIsIHIp
Ci1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdDaXJjbGVFbGVtZW50LCBTVkdOYW1lczo6ZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElF
UworICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTmFtZXM6
OmN4QXR0ciwgQ3gsIGN4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHQ2lyY2xlRWxl
bWVudCwgU1ZHTmFtZXM6OmN5QXR0ciwgQ3ksIGN5KQorICAgIERFRklORV9BTklNQVRFRF9MRU5H
VEgoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTmFtZXM6OnJBdHRyLCBSLCByKQorICAgIERFRklORV9B
TklNQVRFRF9CT09MRUFOKFNWR0NpcmNsZUVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9S
RUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0NpcmNsZUVsZW1lbnQpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoY3gpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkoY3kpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocikK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5s
aW5lIFNWR0NpcmNsZUVsZW1lbnQ6OlNWR0NpcmNsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC00Niw2ICs1Niw3IEBAIGlubGluZSBT
VkdDaXJjbGVFbGVtZW50OjpTVkdDaXJjbGVFbGVtZW4KICAgICAsIG1fcihMZW5ndGhNb2RlT3Ro
ZXIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmNpcmNsZVRhZykpOworICAg
IHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQ2lyY2xlRWxlbWVudCgpOwogfQogCiBQ
YXNzUmVmUHRyPFNWR0NpcmNsZUVsZW1lbnQ+IFNWR0NpcmNsZUVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xMzgsNjcg
KzE0OSw2IEBAIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmcKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdDaXJjbGVFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChh
dHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplQ3goKTsKLSAgICAg
ICAgc3luY2hyb25pemVDeSgpOwotICAgICAgICBzeW5jaHJvbml6ZVIoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpz
eW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0
dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmN4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUN4
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmN5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUN5KCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJBdHRyKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplUigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHQ2lyY2xlRWxlbWVudDo6
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAs
ICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9p
ZCBTVkdDaXJjbGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewot
ICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoU1ZHTmFtZXM6OmN4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Y3lBdHRyLCBBbmltYXRlZExlbmd0aCk7
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyQXR0ciwgQW5p
bWF0ZWRMZW5ndGgpOwotfQotCiB2b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OnRvUGF0aERhdGEoUGF0
aCYgcGF0aCkgY29uc3QKIHsKICAgICBBU1NFUlQocGF0aC5pc0VtcHR5KCkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDIy
ICs0NywyMiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShB
dHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwotCi0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdG9QYXRo
RGF0YShQYXRoJikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVu
Z3RocygpIGNvbnN0OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3gsIGN4KQotICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIKEN5LCBjeSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSLCByKQotCi0gICAg
Ly8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9P
TEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdDaXJjbGVFbGVtZW50
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeCwgY3gpCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfTEVOR1RIKEN5LCBjeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoUiwgcikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1
aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWly
ZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMo
dGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsg
U1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlw
UGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNSArMzQsMjQgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVG
SU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0NsaXBQYXRoRWxlbWVudCwgU1ZHTmFtZXM6OmNs
aXBQYXRoVW5pdHNBdHRyLCBDbGlwUGF0aFVuaXRzLCBjbGlwUGF0aFVuaXRzLCBTVkdVbml0VHlw
ZXM6OlNWR1VuaXRUeXBlKQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHQ2xpcFBhdGhFbGVt
ZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVf
QU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdD
bGlwUGF0aEVsZW1lbnQsIFNWR05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0ciwgQ2xpcFBhdGhVbml0
cywgY2xpcFBhdGhVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICBERUZJTkVf
QU5JTUFURURfQk9PTEVBTihTVkdDbGlwUGF0aEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJ
Tl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0NsaXBQYXRoRWxlbWVudCkKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShjbGlwUGF0aFVuaXRzKQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisg
ICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZH
VGVzdHMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHQ2xp
cFBhdGhFbGVtZW50OjpTVkdDbGlwUGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX2NsaXBQYXRoVW5pdHMoU1ZHVW5pdFR5
cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKFNWR05hbWVzOjpjbGlwUGF0aFRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0
aWVzRm9yU1ZHQ2xpcFBhdGhFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHQ2xpcFBhdGhF
bGVtZW50PiBTVkdDbGlwUGF0aEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC05OSw1MyArMTA4LDYgQEAgdm9pZCBTVkdD
bGlwUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYQogICAgICAgICBvYmplY3QtPnNldE5lZWRz
TGF5b3V0KHRydWUpOwogfQogCi12b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6c3luY2hyb25pemVQ
cm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5h
bWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUNsaXBQYXRoVW5pdHMoKTsK
LSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAg
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAg
ICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRy
TmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0
cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmNsaXBQYXRoVW5pdHNBdHRyKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplQ2xpcFBhdGhVbml0cygpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQ
cm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYg
U1ZHQ2xpcFBhdGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOwotCi0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0
ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci19Ci0KIHZvaWQgU1ZHQ2xpcFBhdGhFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwg
Tm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJl
Zm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAs
MTggKzUwLDE5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVu
Q2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2Ug
PSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAog
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJl
bmRlclN0eWxlKik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKENsaXBQYXRoVW5pdHMsIGNsaXBQYXRoVW5p
dHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR0NsaXBQYXRoRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9FTlVNRVJBVElPTihDbGlwUGF0aFVuaXRzLCBjbGlwUGF0aFVuaXRzLCBTVkdVbml0VHlwZXM6
OlNWR1VuaXRUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3lu
Y2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJl
ZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1M
YW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0K
IH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNCArMzAsMjUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0VO
VU1FUkFUSU9OKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdOYW1lczo6
dHlwZUF0dHIsIFR5cGUsIHR5cGUsIENvbXBvbmVudFRyYW5zZmVyVHlwZSkKLURFRklORV9BTklN
QVRFRF9OVU1CRVJfTElTVChTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZH
TmFtZXM6OnRhYmxlVmFsdWVzQXR0ciwgVGFibGVWYWx1ZXMsIHRhYmxlVmFsdWVzKQotREVGSU5F
X0FOSU1BVEVEX05VTUJFUihTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZH
TmFtZXM6OnNsb3BlQXR0ciwgU2xvcGUsIHNsb3BlKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihT
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OmludGVyY2VwdEF0
dHIsIEludGVyY2VwdCwgaW50ZXJjZXB0KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OmFtcGxpdHVkZUF0dHIsIEFt
cGxpdHVkZSwgYW1wbGl0dWRlKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OmV4cG9uZW50QXR0ciwgRXhwb25lbnQs
IGV4cG9uZW50KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6Om9mZnNldEF0dHIsIE9mZnNldCwgb2Zmc2V0KQorQkVH
SU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVS
QVRJT04oU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR05hbWVzOjp0eXBl
QXR0ciwgVHlwZSwgdHlwZSwgQ29tcG9uZW50VHJhbnNmZXJUeXBlKQorICAgIERFRklORV9BTklN
QVRFRF9OVU1CRVJfTElTVChTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZH
TmFtZXM6OnRhYmxlVmFsdWVzQXR0ciwgVGFibGVWYWx1ZXMsIHRhYmxlVmFsdWVzKQorICAgIERF
RklORV9BTklNQVRFRF9OVU1CRVIoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQs
IFNWR05hbWVzOjpzbG9wZUF0dHIsIFNsb3BlLCBzbG9wZSkKKyAgICBERUZJTkVfQU5JTUFURURf
TlVNQkVSKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdOYW1lczo6aW50
ZXJjZXB0QXR0ciwgSW50ZXJjZXB0LCBpbnRlcmNlcHQpCisgICAgREVGSU5FX0FOSU1BVEVEX05V
TUJFUihTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OmFtcGxp
dHVkZUF0dHIsIEFtcGxpdHVkZSwgYW1wbGl0dWRlKQorICAgIERFRklORV9BTklNQVRFRF9OVU1C
RVIoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR05hbWVzOjpleHBvbmVu
dEF0dHIsIEV4cG9uZW50LCBleHBvbmVudCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdOYW1lczo6b2Zmc2V0QXR0ciwg
T2Zmc2V0LCBvZmZzZXQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5f
UkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
RWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh0eXBlKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHRhYmxlVmFsdWVzKQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHNsb3BlKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKGludGVyY2VwdCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWShhbXBsaXR1ZGUpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
ZXhwb25lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkob2Zmc2V0KQor
RU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogU1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnQ6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0Vs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC00Niw2ICs1Nyw3IEBAIFNWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50OjpTVkcKICAgICAsIG1fYW1wbGl0dWRlKDEpCiAgICAgLCBt
X2V4cG9uZW50KDEpCiB7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCgpOwogfQogCiBib29sIFNWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKQEAgLTExNCw4MSArMTI2LDYgQEAgdm9pZCBTVkdDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uRWxlbWVudAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12
b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9
PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplVHlwZSgpOwotICAgICAgICBzeW5j
aHJvbml6ZVRhYmxlVmFsdWVzKCk7Ci0gICAgICAgIHN5bmNocm9uaXplU2xvcGUoKTsKLSAgICAg
ICAgc3luY2hyb25pemVJbnRlcmNlcHQoKTsKLSAgICAgICAgc3luY2hyb25pemVBbXBsaXR1ZGUo
KTsKLSAgICAgICAgc3luY2hyb25pemVFeHBvbmVudCgpOwotICAgICAgICBzeW5jaHJvbml6ZU9m
ZnNldCgpOwotICAgICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1l
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHko
YXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjp0eXBlQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVR5cGUoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dGFibGVW
YWx1ZXNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplVGFibGVWYWx1ZXMoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c2xvcGVBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplU2xvcGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW50ZXJjZXB0QXR0cikgewotICAgICAg
ICBzeW5jaHJvbml6ZUludGVyY2VwdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjphbXBsaXR1ZGVBdHRyKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplQW1wbGl0dWRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmV4cG9uZW50QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUV4
cG9uZW50KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6Om9mZnNldEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVPZmZzZXQoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1B
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19
Ci0KLXZvaWQgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnR5
cGVBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoU1ZHTmFtZXM6OnRhYmxlVmFsdWVzQXR0ciwgQW5pbWF0ZWROdW1iZXJMaXN0KTsK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNsb3BlQXR0ciwg
QW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6aW50ZXJjZXB0QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6YW1wbGl0dWRlQXR0ciwgQW5pbWF0ZWROdW1iZXIp
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZXhwb25lbnRB
dHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjpvZmZzZXRBdHRyLCBBbmltYXRlZE51bWJlcik7Ci19Ci0KIENvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb24gU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnRyYW5z
ZmVyRnVuY3Rpb24oKSBjb25zdAogewogICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gZnVu
YzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSwzMSArMjksNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IDogcHVibGljIFNWR0VsZW1lbnQgewot
cHVibGljOgotICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gdHJhbnNmZXJGdW5jdGlvbigp
IGNvbnN0OwotCi1wcm90ZWN0ZWQ6Ci0gICAgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0KLSAgICAvLyBGSVhNRTog
c3ZnQXR0cmlidXRlQ2hhbmdlZCBtaXNzaW5nLgotICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgCi1wcml2YXRlOgotICAgIC8v
IEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfRU5V
TUVSQVRJT04oVHlwZSwgdHlwZSwgQ29tcG9uZW50VHJhbnNmZXJUeXBlKQotICAgIERFQ0xBUkVf
QU5JTUFURURfTlVNQkVSX0xJU1QoVGFibGVWYWx1ZXMsIHRhYmxlVmFsdWVzKQotICAgIERFQ0xB
UkVfQU5JTUFURURfTlVNQkVSKFNsb3BlLCBzbG9wZSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05V
TUJFUihJbnRlcmNlcHQsIGludGVyY2VwdCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihB
bXBsaXR1ZGUsIGFtcGxpdHVkZSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihFeHBvbmVu
dCwgZXhwb25lbnQpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoT2Zmc2V0LCBvZmZzZXQp
Ci19OwotCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8Q29tcG9uZW50VHJh
bnNmZXJUeXBlPiB7CiAgICAgc3RhdGljIENvbXBvbmVudFRyYW5zZmVyVHlwZSBoaWdoZXN0RW51
bVZhbHVlKCkgeyByZXR1cm4gRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0dBTU1BOyB9CkBAIC05
NSw2ICs3MCwyOSBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8Q29tcG9uZW50VHJhbnNmCiAg
ICAgfQogfTsKIAorY2xhc3MgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgOiBw
dWJsaWMgU1ZHRWxlbWVudCB7CitwdWJsaWM6CisgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
biB0cmFuc2ZlckZ1bmN0aW9uKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBTVkdDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKKworICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFuZ2VkIG1pc3NpbmcuCisgICAgYm9v
bCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOworICAgIAorcHJpdmF0ZToK
KyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04o
VHlwZSwgdHlwZSwgQ29tcG9uZW50VHJhbnNmZXJUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX05VTUJFUl9MSVNUKFRhYmxlVmFsdWVzLCB0YWJsZVZhbHVlcykKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9OVU1CRVIoU2xvcGUsIHNsb3BlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X05VTUJFUihJbnRlcmNlcHQsIGludGVyY2VwdCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9O
VU1CRVIoQW1wbGl0dWRlLCBhbXBsaXR1ZGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVN
QkVSKEV4cG9uZW50LCBleHBvbmVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIo
T2Zmc2V0LCBvZmZzZXQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworfTsK
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5B
QkxFKEZJTFRFUlMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDIwIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQotREVGSU5F
X0FOSU1BVEVEX0xFTkdUSChTVkdDdXJzb3JFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkp
Ci1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0N1cnNvckVsZW1lbnQsIFhMaW5rTmFtZXM6Omhy
ZWZBdHRyLCBIcmVmLCBocmVmKQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHQ3Vyc29yRWxl
bWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorQkVHSU5fREVGSU5F
X0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0N1cnNv
ckVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR0N1cnNvckVsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKKyAgICBERUZJTkVf
QU5JTUFURURfU1RSSU5HKFNWR0N1cnNvckVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBI
cmVmLCBocmVmKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0N1cnNvckVsZW1lbnQs
IFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFU
RURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0N1
cnNvckVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeCkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5KQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKGhyZWYpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJU
SUVTCiAKIGlubGluZSBTVkdDdXJzb3JFbGVtZW50OjpTVkdDdXJzb3JFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0VsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC00Miw2ICs1MSw3IEBAIGlubGluZSBTVkdDdXJzb3JF
bGVtZW50OjpTVkdDdXJzb3JFbGVtZW4KICAgICAsIG1feShMZW5ndGhNb2RlSGVpZ2h0KQogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpjdXJzb3JUYWcpKTsKKyAgICByZWdpc3Rl
ckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0N1cnNvckVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0
cjxTVkdDdXJzb3JFbGVtZW50PiBTVkdDdXJzb3JFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtOTYsMjAgKzEwNiw2IEBA
IHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0N1cnNvckVs
ZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19
Ci0KLXZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTnVtYmVy
KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBB
bmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5r
TmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0KIHZvaWQgU1ZHQ3Vyc29yRWxl
bWVudDo6YWRkQ2xpZW50KFNWR0VsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgbV9jbGllbnRzLmFk
ZChlbGVtZW50KTsKQEAgLTE0Nyw1MSArMTQzLDYgQEAgdm9pZCBTVkdDdXJzb3JFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZwogICAgICAgICAoKml0KS0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwog
fQogCi12b2lkIFNWR0N1cnNvckVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkp
IHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAg
ICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVIcmVmKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXMo
dGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXpl
UHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0
dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGll
cyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLX0KLQogdm9pZCBTVkdDdXJzb3JFbGVtZW50OjphZGRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgU1ZH
RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDIxICs1
MywyMCBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OwogCi0gICAgLy8gQW5p
bWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgo
WCwgeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQotCi0gICAgLy8gU1ZHVVJJ
UmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKLQotICAg
IC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JP
T0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQ3Vyc29yRWxlbWVu
dCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkco
SHJlZiwgaHJlZikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xB
UkVfQU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVS
ZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVx
dWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lv
bnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgp
IHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KIAogICAgIEhh
c2hTZXQ8U1ZHRWxlbWVudCo+IG1fY2xpZW50czsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRGVmc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdEZWZzRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0RlZnNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDIxIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMK
LURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0RlZnNFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUwor
ICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0RlZnNFbGVtZW50LCBTVkdOYW1lczo6ZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMK
KworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdEZWZzRWxlbWVudCkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5l
IFNWR0RlZnNFbGVtZW50OjpTVkdEZWZzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1l
czo6ZGVmc1RhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRGVmc0Vs
ZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdEZWZzRWxlbWVudD4gU1ZHRGVmc0VsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CkBAIC01MiwyMiArNjAsNiBAQCBSZW5kZXJPYmplY3QqIFNWR0RlZnNFbGVtZW50OjpjcmVhdGVS
ZW5kCiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcih0aGlz
KTsKIH0KIAotdm9pZCBTVkdEZWZzRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0KLSAgICBpZiAoYXR0ck5hbWUg
PT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBh
dHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIHN5
bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgIGVsc2UgaWYgKFNWR1Rl
c3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNo
cm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuaAkocmV2aXNpb24g
OTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDMsMTIgKzQzLDE1IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzVmFs
aWQoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVjbGFyYXRpb25zCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R0RlZnNFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3lu
Y2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJl
ZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1M
YW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0K
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODUsMjMgKzI4NSw5IEBAIHZvaWQgU1ZHRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXQKICAgICAgICAgU3R5bGVkRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdF
bGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit2b2lkIFNWR0VsZW1lbnQ6OmFu
aW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsIFZlY3RvcjxBbmltYXRlZFByb3BlcnR5VHlwZT4mIHByb3BlcnR5VHlwZXMpCiB7
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19h
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwOwotfQotCi1BbmltYXRlZEF0dHJpYnV0ZVR5cGUgU1ZHRWxlbWVudDo6
YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGFuaW1hdGVkQXR0cmli
dXRlTWFwID0gYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICBpZiAoYW5pbWF0ZWRB
dHRyaWJ1dGVNYXAuaXNFbXB0eSgpKQotICAgICAgICBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKLSAgICBpZiAoYW5pbWF0ZWRBdHRyaWJ1dGVNYXAuY29udGFpbnMoYXR0ck5hbWUp
KQotICAgICAgICByZXR1cm4gYW5pbWF0ZWRBdHRyaWJ1dGVNYXAuZ2V0KGF0dHJOYW1lKTsKLSAg
ICBpZiAoaXNTdHlsZWQoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR1N0eWxlZEVs
ZW1lbnQqPih0aGlzKS0+YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JDU1NQcm9wZXJ0eShhdHRyTmFt
ZSk7Ci0KLSAgICByZXR1cm4gQW5pbWF0ZWRVbmtub3duOworICAgIGxvY2FsQXR0cmlidXRlVG9Q
cm9wZXJ0eU1hcCgpLmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGF0dHJpYnV0ZU5h
bWUsIHByb3BlcnR5VHlwZXMpOwogfQogCiBib29sIFNWR0VsZW1lbnQ6OmhhdmVMb2FkZWRSZXF1
aXJlZFJlc291cmNlcygpCkBAIC0zOTIsMTMgKzM3OCw0MiBAQCB2b2lkIFNWR0VsZW1lbnQ6OnVw
ZGF0ZUFuaW1hdGVkU1ZHQXR0cmliCiAKICAgICBzZXRJc1N5bmNocm9uaXppbmdTVkdBdHRyaWJ1
dGVzKCk7CiAKLSAgICBjb25zdF9jYXN0PFNWR0VsZW1lbnQqPih0aGlzKS0+c3luY2hyb25pemVQ
cm9wZXJ0eShuYW1lKTsKLSAgICBpZiAobmFtZSA9PSBhbnlRTmFtZSgpKQorICAgIFNWR0VsZW1l
bnQqIG5vbkNvbnN0VGhpcyA9IGNvbnN0X2Nhc3Q8U1ZHRWxlbWVudCo+KHRoaXMpOworICAgIGlm
IChuYW1lID09IGFueVFOYW1lKCkpIHsKKyAgICAgICAgbm9uQ29uc3RUaGlzLT5sb2NhbEF0dHJp
YnV0ZVRvUHJvcGVydHlNYXAoKS5zeW5jaHJvbml6ZVByb3BlcnRpZXMobm9uQ29uc3RUaGlzKTsK
ICAgICAgICAgc2V0QXJlU1ZHQXR0cmlidXRlc1ZhbGlkKCk7CisgICAgfSBlbHNlCisgICAgICAg
IG5vbkNvbnN0VGhpcy0+bG9jYWxBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCkuc3luY2hyb25pemVQ
cm9wZXJ0eShub25Db25zdFRoaXMsIG5hbWUpOwogCiAgICAgY2xlYXJJc1N5bmNocm9uaXppbmdT
VkdBdHRyaWJ1dGVzKCk7CiB9CiAKK1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAmIFNWR0VsZW1l
bnQ6OmxvY2FsQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpCit7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlN
YXAsIGR1bW15TWFwLCAoKSk7CisgICAgcmV0dXJuIGR1bW15TWFwOworfQorCit2b2lkIFNWR0Vs
ZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh2b2lkKiBjb250ZXh0RWxlbWVudCkK
K3sKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgIHN0YXRpY19jYXN0PFNWR0VsZW1l
bnQqPihjb250ZXh0RWxlbWVudCktPnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpOworfQor
Cit2b2lkIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKHZvaWQqIGNv
bnRleHRFbGVtZW50KQoreworICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7CisgICAgc3RhdGlj
X2Nhc3Q8U1ZHRWxlbWVudCo+KGNvbnRleHRFbGVtZW50KS0+c3luY2hyb25pemVSZXF1aXJlZEV4
dGVuc2lvbnMoKTsKK30KKwordm9pZCBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1
YWdlKHZvaWQqIGNvbnRleHRFbGVtZW50KQoreworICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7
CisgICAgc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KGNvbnRleHRFbGVtZW50KS0+c3luY2hyb25p
emVTeXN0ZW1MYW5ndWFnZSgpOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDQ3ICsyNCwyNyBAQAog
CiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdMb2NhdGFibGUuaCIKKyNpbmNsdWRlICJT
VkdQcm9wZXJ0eUluZm8uaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIEFuaW1hdGVkQXR0
cmlidXRlVHlwZSB7Ci0gICAgQW5pbWF0ZWRBbmdsZSwKLSAgICBBbmltYXRlZEJvb2xlYW4sCi0g
ICAgQW5pbWF0ZWRDb2xvciwKLSAgICBBbmltYXRlZEVudW1lcmF0aW9uLAotICAgIEFuaW1hdGVk
SW50ZWdlciwKLSAgICBBbmltYXRlZExlbmd0aCwKLSAgICBBbmltYXRlZExlbmd0aExpc3QsCi0g
ICAgQW5pbWF0ZWROdW1iZXIsCi0gICAgQW5pbWF0ZWROdW1iZXJMaXN0LAotICAgIEFuaW1hdGVk
TnVtYmVyT3B0aW9uYWxOdW1iZXIsCi0gICAgQW5pbWF0ZWRQYXRoLAotICAgIEFuaW1hdGVkUG9p
bnRzLAotICAgIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbywKLSAgICBBbmltYXRlZFJlY3Qs
Ci0gICAgQW5pbWF0ZWRTdHJpbmcsCi0gICAgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LAotICAgIEFu
aW1hdGVkVW5rbm93bgotfTsKLQogZW51bSBTVkdQYXJzaW5nRXJyb3IgewogICAgIE5vRXJyb3Is
CiAgICAgUGFyc2luZ0F0dHJpYnV0ZUZhaWxlZEVycm9yLAogICAgIE5lZ2F0aXZlVmFsdWVGb3Ji
aWRkZW5FcnJvcgogfTsKIAotdHlwZWRlZiBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVk
QXR0cmlidXRlVHlwZT4gQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci0KK2NsYXNzIEFmZmlu
ZVRyYW5zZm9ybTsKIGNsYXNzIENTU0N1cnNvckltYWdlVmFsdWU7CiBjbGFzcyBEb2N1bWVudDsK
K2NsYXNzIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA7CiBjbGFzcyBTVkdDdXJzb3JFbGVtZW50
OwogY2xhc3MgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOwogY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNl
OwogY2xhc3MgU1ZHRWxlbWVudFJhcmVEYXRhOwogY2xhc3MgU1ZHU1ZHRWxlbWVudDsKLWNsYXNz
IEFmZmluZVRyYW5zZm9ybTsKIAogY2xhc3MgU1ZHRWxlbWVudCA6IHB1YmxpYyBTdHlsZWRFbGVt
ZW50IHsKIHB1YmxpYzoKQEAgLTkxLDEyICs3MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJikgeyB9Ci0KLSAg
ICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOwotICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBhbmltYXRlZFByb3BlcnR5VHlw
ZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGFu
aW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBWZWN0
b3I8QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+Jik7CiAKICAgICB2b2lkIHNlbmRTVkdMb2FkRXZlbnRJ
ZlBvc3NpYmxlKGJvb2wgc2VuZFBhcmVudExvYWRFdmVudHMgPSBmYWxzZSk7CiAKQEAgLTExNSw2
ICs5MSwxNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0ZWRTVkdB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogCisgICAgc3RhdGljIHZvaWQg
c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHZvaWQqIGNvbnRleHRFbGVtZW50KTsKKyAgICBz
dGF0aWMgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh2b2lkKiBjb250ZXh0RWxl
bWVudCk7CisgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh2b2lkKiBj
b250ZXh0RWxlbWVudCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZl
YXR1cmVzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNp
b25zKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSB7
IH0KKworICAgIHZpcnR1YWwgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgbG9jYWxBdHRyaWJ1
dGVUb1Byb3BlcnR5TWFwKCk7CisKIHByb3RlY3RlZDoKICAgICBTVkdFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCkBAIC0xNDEsNyArMTI3LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIG1hcEluc3RhbmNlVG9FbGVtZW50KFNWR0VsZW1lbnRJbnN0YW5jZSopOwogICAg
IHZvaWQgcmVtb3ZlSW5zdGFuY2VNYXBwaW5nKFNWR0VsZW1lbnRJbnN0YW5jZSopOwogCi0gICAg
dmlydHVhbCBib29sIGhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygpOworICAgIHZpcnR1YWwg
Ym9vbCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKTsgICAgCiB9OwogCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzMsMTIgKzMzLDIzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0
ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRWxsaXBz
ZUVsZW1lbnQsIFNWR05hbWVzOjpjeEF0dHIsIEN4LCBjeCkKLURFRklORV9BTklNQVRFRF9MRU5H
VEgoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR05hbWVzOjpjeUF0dHIsIEN5LCBjeSkKLURFRklORV9B
TklNQVRFRF9MRU5HVEgoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR05hbWVzOjpyeEF0dHIsIFJ4LCBy
eCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR05hbWVzOjpy
eUF0dHIsIFJ5LCByeSkKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0VsbGlwc2VFbGVtZW50
LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5J
TUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRWxsaXBzZUVs
ZW1lbnQsIFNWR05hbWVzOjpjeEF0dHIsIEN4LCBjeCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdOYW1lczo6Y3lBdHRyLCBDeSwgY3kpCisgICAgREVG
SU5FX0FOSU1BVEVEX0xFTkdUSChTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTmFtZXM6OnJ4QXR0ciwg
UngsIHJ4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRWxsaXBzZUVsZW1lbnQsIFNW
R05hbWVzOjpyeUF0dHIsIFJ5LCByeSkKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdF
bGxpcHNlRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorRU5E
X0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHRWxsaXBzZUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkoY3gpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoY3kpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocngpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkocnkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJ
U1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdFbGxpcHNlRWxlbWVudDo6U1ZHRWxsaXBz
ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
CkBAIC00OCw2ICs1OSw3IEBAIGlubGluZSBTVkdFbGxpcHNlRWxlbWVudDo6U1ZHRWxsaXBzZUVs
ZW0KICAgICAsIG1fcnkoTGVuZ3RoTW9kZUhlaWdodCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFt
ZShTVkdOYW1lczo6ZWxsaXBzZVRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVz
Rm9yU1ZHRWxsaXBzZUVsZW1lbnQoKTsKIH0gICAgCiAKIFBhc3NSZWZQdHI8U1ZHRWxsaXBzZUVs
ZW1lbnQ+IFNWR0VsbGlwc2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTQ5LDc0ICsxNjEsNiBAQCB2b2lkIFNWR0Vs
bGlwc2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLXZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1l
KCkpIHsKLSAgICAgICAgc3luY2hyb25pemVDeCgpOwotICAgICAgICBzeW5jaHJvbml6ZUN5KCk7
Ci0gICAgICAgIHN5bmNocm9uaXplUngoKTsKLSAgICAgICAgc3luY2hyb25pemVSeSgpOwotICAg
ICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZH
VGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1l
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpz
eW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6Y3hBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplQ3goKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6Y3lBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplQ3koKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cnhBdHRyKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplUngoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cnlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplUnko
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJv
bml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAg
ICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0VsbGlwc2VFbGVtZW50OjphdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJl
dHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0VsbGlwc2VF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKTsgICAgCi0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjpjeEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmN5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cnhBdHRyLCBBbmltYXRlZExl
bmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyeUF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLX0KLQogdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6dG9QYXRo
RGF0YShQYXRoJiBwYXRoKSBjb25zdAogewogICAgIEFTU0VSVChwYXRoLmlzRW1wdHkoKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDcsMjIgKzQ3LDIzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVk
QXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQ
cm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgdG9QYXRoRGF0YShQYXRoJikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1Jl
bGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFy
YXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3gsIGN4KQotICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKEN5LCBjeSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSeCwg
cngpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUnksIHJ5KQotCi0gICAgLy8gU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJF
R0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdFbGxpcHNlRWxlbWVudCkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3gsIGN4KQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX0xFTkdUSChDeSwgY3kpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFJ4LCBy
eCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUnksIHJ5KQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisK
KyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVh
dHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rl
c3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVT
eXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDE2ICszMSwyNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFu
aW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZF
QmxlbmRFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKLURFRklORV9BTklNQVRF
RF9TVFJJTkcoU1ZHRkVCbGVuZEVsZW1lbnQsIFNWR05hbWVzOjppbjJBdHRyLCBJbjIsIGluMikK
LURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRUJsZW5kRWxlbWVudCwgU1ZHTmFtZXM6
Om1vZGVBdHRyLCBNb2RlLCBtb2RlLCBCbGVuZE1vZGVUeXBlKQorQkVHSU5fREVGSU5FX0FOSU1B
VEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFQmxlbmRFbGVt
ZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKKyAgICBERUZJTkVfQU5JTUFURURfU1RS
SU5HKFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdOYW1lczo6aW4yQXR0ciwgSW4yLCBpbjIpCisgICAg
REVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdOYW1lczo6
bW9kZUF0dHIsIE1vZGUsIG1vZGUsIEJsZW5kTW9kZVR5cGUpCitFTkRfREVGSU5FX0FOSU1BVEVE
X1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRUJs
ZW5kRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjEpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4yKQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKG1vZGUpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JF
R0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZFQmxlbmRFbGVtZW50OjpT
VkdGRUJsZW5kRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFn
TmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX21vZGUoRkVCTEVORF9NT0RFX05PUk1BTCkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVCbGVuZFRhZykpOworICAgIHJlZ2lzdGVy
QW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVCbGVuZEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0
cjxTVkdGRUJsZW5kRWxlbWVudD4gU1ZHRkVCbGVuZEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xMTksNTUgKzEyOCw2
IEBAIHZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW4KICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6c3luY2hyb25pemVQ
cm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5h
bWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZU1vZGUoKTsKLSAgICAgICAg
c3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgc3luY2hyb25pemVJbjIoKTsKLSAgICAgICAgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1vZGVBdHRyKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplTW9kZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVJ
bjEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6aW4yQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMigpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBTVkdGRUJsZW5kRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19h
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXApOyAgICAKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW4yQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6bW9kZUF0dHIsIEFuaW1hdGVk
RW51bWVyYXRpb24pOwotfQotCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVCbGVuZEVs
ZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmls
dGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZm
ZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQu
aAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMjggKzI4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTVkdGRUJsZW5kRWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNW
R0ZFQmxlbmRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7
Ci0KLXByaXZhdGU6Ci0gICAgU1ZHRkVCbGVuZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7Ci0KLSAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7Ci0gICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJF
ZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSk7Ci0gICAgdmlydHVhbCB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiwgRmlsdGVyKik7Ci0KLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMK
LSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKLSAgICBERUNMQVJFX0FOSU1B
VEVEX1NUUklORyhJbjIsIGluMikKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKE1v
ZGUsIG1vZGUsIEJsZW5kTW9kZVR5cGUpCi19OwotCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgU1ZHUHJv
cGVydHlUcmFpdHM8QmxlbmRNb2RlVHlwZT4gewogICAgIHN0YXRpYyBCbGVuZE1vZGVUeXBlIGhp
Z2hlc3RFbnVtVmFsdWUoKSB7IHJldHVybiBGRUJMRU5EX01PREVfTElHSFRFTjsgfQpAQCAtOTEs
NiArNjksMjYgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPEJsZW5kTW9kZVR5cGU+IAogICAg
IH0KIH07CiAKK2NsYXNzIFNWR0ZFQmxlbmRFbGVtZW50IDogcHVibGljIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
U1ZHRkVCbGVuZEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKKworcHJpdmF0ZToKKyAgICBTVkdGRUJsZW5kRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKKworICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRl
ckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRl
ciopOworCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFQmxlbmRF
bGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4yLCBpbjIpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfRU5VTUVSQVRJT04oTW9kZSwgbW9kZSwgQmxlbmRNb2RlVHlwZSkKKyAgICBFTkRfREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29s
b3JNYXRyaXhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDE2ICszMSwyNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3Bl
cnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKLURFRklORV9BTklNQVRFRF9FTlVN
RVJBVElPTihTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OnR5cGVBdHRyLCBUeXBl
LCB0eXBlLCBDb2xvck1hdHJpeFR5cGUpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSX0xJU1QoU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQsIFNWR05hbWVzOjp2YWx1ZXNBdHRyLCBWYWx1ZXMsIHZhbHVl
cykKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVE
X1NUUklORyhTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4xLCBp
bjEpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50LCBTVkdOYW1lczo6dHlwZUF0dHIsIFR5cGUsIHR5cGUsIENvbG9yTWF0cml4VHlwZSkKKyAg
ICBERUZJTkVfQU5JTUFURURfTlVNQkVSX0xJU1QoU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQsIFNW
R05hbWVzOjp2YWx1ZXNBdHRyLCBWYWx1ZXMsIHZhbHVlcykKK0VORF9ERUZJTkVfQU5JTUFURURf
UFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFQ29s
b3JNYXRyaXhFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGlu
MSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh0eXBlKQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHZhbHVlcykKKyAgICBSRUdJU1RFUl9QQVJFTlRf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMp
CitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQ6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fdHlwZShGRUNPTE9S
TUFUUklYX1RZUEVfVU5LTk9XTikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6
ZmVDb2xvck1hdHJpeFRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRUNvbG9yTWF0cml4
RWxlbWVudD4gU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xMjQsNTUgKzEzMyw2IEBAIHZv
aWQgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJpYnUKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6c3luY2hyb25pemVQ
cm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5h
bWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVR5cGUoKTsKLSAgICAgICAg
c3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgc3luY2hyb25pemVWYWx1ZXMoKTsKLSAgICAgICAg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5
KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplVHlwZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25p
emVJbjEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6dmFsdWVzQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVZhbHVlcygpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6YXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsK
LSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdG
RUNvbG9yTWF0cml4RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsK
LSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp0eXBlQXR0ciwgQW5pbWF0
ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp2YWx1ZXNBdHRyLCBBbmltYXRlZE51bWJlckxpc3QpOwotfQotCiBQYXNzUmVmUHRyPEZp
bHRlckVmZmVjdD4gU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCog
aW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAkocmV2aXNpb24gOTA0
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjksMjggKzI5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBTVkdGRUNvbG9yTWF0cml4RWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Kik7Ci0KLXByaXZhdGU6Ci0gICAgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Kik7Ci0KLSAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKik7Ci0gICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0
ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiwgRmlsdGVyKik7Ci0KLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMK
LSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKLSAgICBERUNMQVJFX0FOSU1B
VEVEX0VOVU1FUkFUSU9OKFR5cGUsIHR5cGUsIENvbG9yTWF0cml4VHlwZSkKLSAgICBERUNMQVJF
X0FOSU1BVEVEX05VTUJFUl9MSVNUKFZhbHVlcywgdmFsdWVzKQotfTsKLQogdGVtcGxhdGU8Pgog
c3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPENvbG9yTWF0cml4VHlwZT4gewogICAgIHN0YXRpYyBD
b2xvck1hdHJpeFR5cGUgaGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJuIEZFQ09MT1JNQVRSSVhf
VFlQRV9MVU1JTkFOQ0VUT0FMUEhBOyB9CkBAIC04OCw2ICs2NiwyNiBAQCBzdHJ1Y3QgU1ZHUHJv
cGVydHlUcmFpdHM8Q29sb3JNYXRyaXhUeXBlCiAgICAgfQogfTsKIAorY2xhc3MgU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRUNvbG9yTWF0cml4RWxl
bWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCitwcml2YXRl
OgorICAgIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOworCisgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSop
OworICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0
KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Rmls
dGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CisKKyAgICBCRUdJ
Tl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX0VOVU1FUkFUSU9OKFR5cGUsIHR5cGUsIENvbG9yTWF0cml4VHlwZSkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVJfTElTVChWYWx1ZXMsIHZhbHVlcykKKyAgICBFTkRf
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDEzICszNCwyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NU
UklORyhTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4x
LCBpbjEpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklN
QVRFRF9TVFJJTkcoU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQsIFNWR05hbWVzOjppbkF0
dHIsIEluMSwgaW4xKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JF
R0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQorICAgIFJFR0lTVEVS
X1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdG
RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDog
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUNvbXBvbmVudFRyYW5zZmVyVGFn
KSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRUNvbXBvbmVudFRyYW5z
ZmVyRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTcyLDQxICs3OSw2IEBAIHZv
aWQgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OnBhcnMKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAo
YXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAg
ICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJv
cGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1
cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMt
PmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQogUGFzc1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0
ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJF
bGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEzICszNywxMSBA
QCBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFuZ2VkIG1pc3NpbmcuCiAg
ICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwotICAgIHZpcnR1
YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVh
bCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJC
dWlsZGVyKiwgRmlsdGVyKik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlv
bnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICBCRUdJTl9ERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAgIEVORF9ERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCShyZXZpc2lv
biA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSwyMCArMzEsMzMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NU
UklORyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQot
REVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjpp
bjJBdHRyLCBJbjIsIGluMikKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRUNvbXBv
c2l0ZUVsZW1lbnQsIFNWR05hbWVzOjpvcGVyYXRvckF0dHIsIF9vcGVyYXRvciwgX29wZXJhdG9y
LCBDb21wb3NpdGVPcGVyYXRpb25UeXBlKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUNv
bXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjprMUF0dHIsIEsxLCBrMSkKLURFRklORV9BTklNQVRF
RF9OVU1CRVIoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6azJBdHRyLCBLMiwgazIp
Ci1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6
OmszQXR0ciwgSzMsIGszKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQsIFNWR05hbWVzOjprNEF0dHIsIEs0LCBrNCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9Q
Uk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUNvbXBvc2l0ZUVsZW1l
bnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklORV9BTklNQVRFRF9TVFJJ
TkcoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6aW4yQXR0ciwgSW4yLCBpbjIpCisg
ICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZH
TmFtZXM6Om9wZXJhdG9yQXR0ciwgX29wZXJhdG9yLCBfb3BlcmF0b3IsIENvbXBvc2l0ZU9wZXJh
dGlvblR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUNvbXBvc2l0ZUVsZW1l
bnQsIFNWR05hbWVzOjprMUF0dHIsIEsxLCBrMSkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVS
KFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6OmsyQXR0ciwgSzIsIGsyKQorICAgIERF
RklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6azNB
dHRyLCBLMywgazMpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQsIFNWR05hbWVzOjprNEF0dHIsIEs0LCBrNCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJP
UEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFQ29tcG9z
aXRlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjEpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4yKQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKF9vcGVyYXRvcikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShrMSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShr
MikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrMykKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrNCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCitFTkRf
UkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHRkVDb21wb3NpdGVFbGVt
ZW50OjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9fb3BlcmF0b3IoRkVDT01QT1NJVEVf
T1BFUkFUT1JfT1ZFUikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVDb21w
b3NpdGVUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFQ29tcG9z
aXRlRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFQ29tcG9zaXRlRWxlbWVudD4gU1ZH
RkVDb21wb3NpdGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTYwLDgzICsxNzMsNiBAQCB2b2lkIFNWR0ZFQ29tcG9z
aXRlRWxlbWVudDo6c3ZnQXR0cmlidXRlCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXZvaWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgp
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplX29wZXJhdG9yKCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
SW4xKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSW4yKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSzEo
KTsKLSAgICAgICAgc3luY2hyb25pemVLMigpOwotICAgICAgICBzeW5jaHJvbml6ZUszKCk7Ci0g
ICAgICAgIHN5bmNocm9uaXplSzQoKTsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25p
emVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0cikgewotICAgICAgICBzeW5jaHJvbml6
ZV9vcGVyYXRvcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0
cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjprMUF0dHIpIHsKLSAgICAgICAgc3luY2hy
b25pemVLMSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjprMkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVLMigpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjprM0F0dHIpIHsK
LSAgICAgICAgc3luY2hyb25pemVLMygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjprNEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVL
NCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6
OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZv
aWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7ICAgIAotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmlu
Zyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbjJBdHRy
LCBBbmltYXRlZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjpvcGVyYXRvckF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6azFBdHRyLCBBbmltYXRlZE51bWJlcik7
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjprMkF0dHIsIEFu
aW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OmszQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6azRBdHRyLCBBbmltYXRlZE51bWJlcik7Ci19Ci0KIFBhc3NSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVj
dCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksMzIgKzI5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRUNvbXBv
c2l0ZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQot
cHJpdmF0ZToKLSAgICBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7Ci0KLSAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7Ci0gICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJF
ZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5j
aHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmls
dGVyKik7Ci0KLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNM
QVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklO
RyhJbjIsIGluMikKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKF9vcGVyYXRvciwg
X29wZXJhdG9yLCBDb21wb3NpdGVPcGVyYXRpb25UeXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURf
TlVNQkVSKEsxLCBrMSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLMiwgazIpCi0gICAg
REVDTEFSRV9BTklNQVRFRF9OVU1CRVIoSzMsIGszKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVN
QkVSKEs0LCBrNCkKLX07Ci0KIHRlbXBsYXRlPD4KIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxD
b21wb3NpdGVPcGVyYXRpb25UeXBlPiB7CiAgICAgc3RhdGljIENvbXBvc2l0ZU9wZXJhdGlvblR5
cGUgaGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJuIEZFQ09NUE9TSVRFX09QRVJBVE9SX0FSSVRI
TUVUSUM7IH0KQEAgLTEwMCw2ICs3NCwzMCBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8Q29t
cG9zaXRlT3BlcmF0CiAgICAgfQogfTsKIAorY2xhc3MgU1ZHRkVDb21wb3NpdGVFbGVtZW50IDog
cHVibGljIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVDb21wb3NpdGVFbGVtZW50PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisKK3ByaXZhdGU6CisgICAgU1ZHRkVDb21wb3Np
dGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCisgICAgYm9vbCBp
c1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOworICAgIHZpcnR1YWwgYm9vbCBz
ZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOworICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CisKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHRkVDb21wb3NpdGVFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X1NUUklORyhJbjEsIGluMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4yLCBp
bjIpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oX29wZXJhdG9yLCBfb3Bl
cmF0b3IsIENvbXBvc2l0ZU9wZXJhdGlvblR5cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
TlVNQkVSKEsxLCBrMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoSzIsIGsyKQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLMywgazMpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfTlVNQkVSKEs0LCBrNCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTCit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZH
KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDI1ICszNCw0MyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRp
b25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBT
VkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKLURFRklORV9BTklNQVRFRF9JTlRFR0VSX01VTFRJ
UExFX1dSQVBQRVJTKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6b3JkZXJB
dHRyLCBvcmRlclhJZGVudGlmaWVyKCksIE9yZGVyWCwgb3JkZXJYKQotREVGSU5FX0FOSU1BVEVE
X0lOVEVHRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQsIFNW
R05hbWVzOjpvcmRlckF0dHIsIG9yZGVyWUlkZW50aWZpZXIoKSwgT3JkZXJZLCBvcmRlclkpIAot
REVGSU5FX0FOSU1BVEVEX05VTUJFUl9MSVNUKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBT
VkdOYW1lczo6a2VybmVsTWF0cml4QXR0ciwgS2VybmVsTWF0cml4LCBrZXJuZWxNYXRyaXgpCi1E
RUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1l
czo6ZGl2aXNvckF0dHIsIERpdmlzb3IsIGRpdmlzb3IpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVS
KFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6Ymlhc0F0dHIsIEJpYXMsIGJp
YXMpCi1ERUZJTkVfQU5JTUFURURfSU5URUdFUihTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwg
U1ZHTmFtZXM6OnRhcmdldFhBdHRyLCBUYXJnZXRYLCB0YXJnZXRYKQotREVGSU5FX0FOSU1BVEVE
X0lOVEVHRVIoU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQsIFNWR05hbWVzOjp0YXJnZXRZQXR0
ciwgVGFyZ2V0WSwgdGFyZ2V0WSkKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OmVkZ2VNb2RlQXR0ciwgRWRnZU1vZGUsIGVk
Z2VNb2RlLCBFZGdlTW9kZVR5cGUpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dS
QVBQRVJTKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6a2VybmVsVW5pdExl
bmd0aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpLCBLZXJuZWxVbml0TGVuZ3Ro
WCwga2VybmVsVW5pdExlbmd0aFgpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dS
QVBQRVJTKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6a2VybmVsVW5pdExl
bmd0aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigpLCBLZXJuZWxVbml0TGVuZ3Ro
WSwga2VybmVsVW5pdExlbmd0aFkpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQWxwaGFBdHRyLCBQcmVzZXJ2ZUFs
cGhhLCBwcmVzZXJ2ZUFscGhhKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAg
ICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdO
YW1lczo6aW5BdHRyLCBJbjEsIGluMSkKKyAgICBERUZJTkVfQU5JTUFURURfSU5URUdFUl9NVUxU
SVBMRV9XUkFQUEVSUyhTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6Om9yZGVy
QXR0ciwgb3JkZXJYSWRlbnRpZmllcigpLCBPcmRlclgsIG9yZGVyWCkKKyAgICBERUZJTkVfQU5J
TUFURURfSU5URUdFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dCwgU1ZHTmFtZXM6Om9yZGVyQXR0ciwgb3JkZXJZSWRlbnRpZmllcigpLCBPcmRlclksIG9yZGVy
WSkgCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9MSVNUKFNWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50LCBTVkdOYW1lczo6a2VybmVsTWF0cml4QXR0ciwgS2VybmVsTWF0cml4LCBrZXJuZWxN
YXRyaXgpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudCwgU1ZHTmFtZXM6OmRpdmlzb3JBdHRyLCBEaXZpc29yLCBkaXZpc29yKQorICAgIERFRklO
RV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQsIFNWR05hbWVzOjpi
aWFzQXR0ciwgQmlhcywgYmlhcykKKyAgICBERUZJTkVfQU5JTUFURURfSU5URUdFUihTVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OnRhcmdldFhBdHRyLCBUYXJnZXRYLCB0YXJn
ZXRYKQorICAgIERFRklORV9BTklNQVRFRF9JTlRFR0VSKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50LCBTVkdOYW1lczo6dGFyZ2V0WUF0dHIsIFRhcmdldFksIHRhcmdldFkpCisgICAgREVGSU5F
X0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1l
czo6ZWRnZU1vZGVBdHRyLCBFZGdlTW9kZSwgZWRnZU1vZGUsIEVkZ2VNb2RlVHlwZSkKKyAgICBE
RUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50LCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIGtlcm5lbFVuaXRMZW5n
dGhYSWRlbnRpZmllcigpLCBLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgpCisg
ICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBrZXJuZWxVbml0
TGVuZ3RoWUlkZW50aWZpZXIoKSwgS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZ
KQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
LCBTVkdOYW1lczo6cHJlc2VydmVBbHBoYUF0dHIsIFByZXNlcnZlQWxwaGEsIHByZXNlcnZlQWxw
aGEpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCkKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkob3JkZXJYKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZ
KG9yZGVyWSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrZXJuZWxNYXRy
aXgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZGl2aXNvcikKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShiaWFzKQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKHRhcmdldFgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkodGFyZ2V0WSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShl
ZGdlTW9kZSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrZXJuZWxVbml0
TGVuZ3RoWCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrZXJuZWxVbml0
TGVuZ3RoWSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShwcmVzZXJ2ZUFs
cGhhKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJU
SUVTCiAKIGlubGluZSBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6U1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUs
IGRvY3VtZW50KQogICAgICwgbV9lZGdlTW9kZShFREdFTU9ERV9EVVBMSUNBVEUpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlQ29udm9sdmVNYXRyaXhUYWcpKTsKKyAgICBy
ZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50KCk7
CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ+IFNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQpAQCAtMjQ1LDg4ICsyNjMsNiBAQCB2b2lkIFNWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50OjpzdmdBdHRyCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZv
aWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1l
KCkpIHsKLSAgICAgICAgc3luY2hyb25pemVFZGdlTW9kZSgpOwotICAgICAgICBzeW5jaHJvbml6
ZURpdmlzb3IoKTsKLSAgICAgICAgc3luY2hyb25pemVCaWFzKCk7Ci0gICAgICAgIHN5bmNocm9u
aXplVGFyZ2V0WCgpOwotICAgICAgICBzeW5jaHJvbml6ZVRhcmdldFkoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVLZXJuZWxVbml0TGVuZ3RoWCgpOwotICAgICAgICBzeW5jaHJvbml6ZUtlcm5lbFVu
aXRMZW5ndGhZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUHJlc2VydmVBbHBoYSgpOwotICAgICAg
ICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVy
dHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBv
cnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZWRnZU1vZGVB
dHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRWRnZU1vZGUoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZGl2aXNvckF0dHIpIHsKLSAg
ICAgICAgc3luY2hyb25pemVEaXZpc29yKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmJpYXNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplQmlhcygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjp0YXJnZXRYQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVRhcmdldFgoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
dGFyZ2V0WUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVUYXJnZXRZKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5lbFVuaXRM
ZW5ndGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplS2VybmVsVW5pdExlbmd0aFgoKTsKLSAg
ICAgICAgc3luY2hyb25pemVLZXJuZWxVbml0TGVuZ3RoWSgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFscGhhQXR0cikg
ewotICAgICAgICBzeW5jaHJvbml6ZVByZXNlcnZlQWxwaGEoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJu
IHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhp
cy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6b3JkZXJBdHRyLCBBbmltYXRlZE51bWJl
ck9wdGlvbmFsTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6Omtlcm5lbE1hdHJpeEF0dHIsIEFuaW1hdGVkTnVtYmVyTGlzdCk7Ci0gICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpkaXZpc29yQXR0ciwgQW5pbWF0ZWRO
dW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Ymlh
c0F0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnRhcmdldFhBdHRyLCBBbmltYXRlZEludGVnZXIpOwotICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dGFyZ2V0WUF0dHIsIEFuaW1hdGVkSW50
ZWdlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpvcGVy
YXRvckF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIEFuaW1hdGVkTnVtYmVy
T3B0aW9uYWxOdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6cHJlc2VydmVBbHBoYUF0dHIsIEFuaW1hdGVkQm9vbGVhbik7Ci19Ci0KIFBhc3NSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHRmls
dGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVy
RWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5o
CShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw0NSArMzEsNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50IDogcHVibGlj
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIHZvaWQgc2V0T3JkZXIoZmxvYXQgb3Jk
ZXJYLCBmbG9hdCBvcmRlclkpOwotICAgIHZvaWQgc2V0S2VybmVsVW5pdExlbmd0aChmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFkpOwotCi1wcml2YXRlOgot
ICAgIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOwotCi0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSop
OwotICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0
KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciop
OwotCi0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgb3JkZXJYSWRlbnRpZmllcigpOwot
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG9yZGVyWUlkZW50aWZpZXIoKTsKLSAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKTsK
LSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZp
ZXIoKTsKLQotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xB
UkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdF
UihPcmRlclgsIG9yZGVyWCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoT3JkZXJZLCBv
cmRlclkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVJfTElTVChLZXJuZWxNYXRyaXgsIGtl
cm5lbE1hdHJpeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihEaXZpc29yLCBkaXZpc29y
KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEJpYXMsIGJpYXMpCi0gICAgREVDTEFSRV9B
TklNQVRFRF9JTlRFR0VSKFRhcmdldFgsIHRhcmdldFgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9J
TlRFR0VSKFRhcmdldFksIHRhcmdldFkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElP
TihFZGdlTW9kZSwgZWRnZU1vZGUsIEVkZ2VNb2RlVHlwZSkKLSAgICBERUNMQVJFX0FOSU1BVEVE
X05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgpCi0gICAgREVDTEFS
RV9BTklNQVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZKQot
ICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihQcmVzZXJ2ZUFscGhhLCBwcmVzZXJ2ZUFscGhh
KQotfTsKLQogdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPEVkZ2VNb2RlVHlw
ZT4gewogICAgIHN0YXRpYyBFZGdlTW9kZVR5cGUgaGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJu
IEVER0VNT0RFX05PTkU7IH0KQEAgLTEwMyw2ICs2NCw0MyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlU
cmFpdHM8RWRnZU1vZGVUeXBlPiB7CiAgICAgfQogfTsKIAorY2xhc3MgU1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCisgICAgdm9p
ZCBzZXRPcmRlcihmbG9hdCBvcmRlclgsIGZsb2F0IG9yZGVyWSk7CisgICAgdm9pZCBzZXRLZXJu
ZWxVbml0TGVuZ3RoKGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVu
Z3RoWSk7CisKK3ByaXZhdGU6CisgICAgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisKKyAgICBib29sIGlzU3VwcG9ydGVkQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRB
dHRyaWJ1dGUoQXR0cmlidXRlKik7CisgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0
dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBG
aWx0ZXIqKTsKKworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG9yZGVyWElkZW50aWZp
ZXIoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBvcmRlcllJZGVudGlmaWVyKCk7
CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYga2VybmVsVW5pdExlbmd0aFhJZGVudGlm
aWVyKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYga2VybmVsVW5pdExlbmd0aFlJ
ZGVudGlmaWVyKCk7CisKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5H
KEluMSwgaW4xKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoT3JkZXJYLCBvcmRl
clgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihPcmRlclksIG9yZGVyWSkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVJfTElTVChLZXJuZWxNYXRyaXgsIGtlcm5lbE1h
dHJpeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoRGl2aXNvciwgZGl2aXNvcikK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQmlhcywgYmlhcykKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9JTlRFR0VSKFRhcmdldFgsIHRhcmdldFgpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfSU5URUdFUihUYXJnZXRZLCB0YXJnZXRZKQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX0VOVU1FUkFUSU9OKEVkZ2VNb2RlLCBlZGdlTW9kZSwgRWRnZU1vZGVUeXBlKQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExl
bmd0aFgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEtlcm5lbFVuaXRMZW5ndGhZ
LCBrZXJuZWxVbml0TGVuZ3RoWSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKFBy
ZXNlcnZlQWxwaGEsIHByZXNlcnZlQWxwaGEpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVElFUworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMiAr
MzUsMjIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBk
ZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQotREVGSU5FX0FOSU1BVEVEX05VTUJF
UihTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpkaWZmdXNlQ29uc3RhbnRB
dHRyLCBEaWZmdXNlQ29uc3RhbnQsIGRpZmZ1c2VDb25zdGFudCkKLURFRklORV9BTklNQVRFRF9O
VU1CRVIoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6c3VyZmFjZVNjYWxl
QXR0ciwgU3VyZmFjZVNjYWxlLCBzdXJmYWNlU2NhbGUpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVS
X01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6
Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBrZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKSwgS2Vy
bmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhYKQotREVGSU5FX0FOSU1BVEVEX05VTUJF
Ul9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVz
OjprZXJuZWxVbml0TGVuZ3RoQXR0ciwga2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCksIEtl
cm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKK0JFR0lOX0RFRklORV9BTklNQVRF
RF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklORV9BTklN
QVRFRF9OVU1CRVIoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6ZGlmZnVz
ZUNvbnN0YW50QXR0ciwgRGlmZnVzZUNvbnN0YW50LCBkaWZmdXNlQ29uc3RhbnQpCisgICAgREVG
SU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVz
OjpzdXJmYWNlU2NhbGVBdHRyLCBTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSkKKyAgICBERUZJ
TkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudCwgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBrZXJuZWxVbml0TGVuZ3Ro
WElkZW50aWZpZXIoKSwgS2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhYKQorICAg
IERFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIGtlcm5lbFVuaXRM
ZW5ndGhZSWRlbnRpZmllcigpLCBLZXJuZWxVbml0TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0aFkp
CitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVE
X1BST1BFUlRZKGRpZmZ1c2VDb25zdGFudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWShzdXJmYWNlU2NhbGUpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkoa2VybmVsVW5pdExlbmd0aFgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkoa2VybmVsVW5pdExlbmd0aFkpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVS
X0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVu
dDo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTQ4LDYgKzU4LDcgQEAgaW5saW5lIFNW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6U1ZHRgogICAgICwgbV9zdXJmYWNlU2NhbGUoMSkK
IHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVEaWZmdXNlTGlnaHRpbmdUYWcp
KTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudD4g
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTk0LDY3ICsyMDUsNiBAQCB2b2lkIFNW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6bGlnaHRFCiAgICAgcHJpbWl0aXZlQXR0cmlidXRl
Q2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLXZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewot
ICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4x
KCk7Ci0gICAgICAgIHN5bmNocm9uaXplU3VyZmFjZVNjYWxlKCk7Ci0gICAgICAgIHN5bmNocm9u
aXplRGlmZnVzZUNvbnN0YW50KCk7Ci0gICAgICAgIHN5bmNocm9uaXplS2VybmVsVW5pdExlbmd0
aFgoKTsKLSAgICAgICAgc3luY2hyb25pemVLZXJuZWxVbml0TGVuZ3RoWSgpOwotICAgICAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHko
YXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6bGlnaHRpbmdfY29s
b3JBdHRyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OmluQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplU3VyZmFjZVNjYWxlKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIp
IHsKLSAgICAgICAgc3luY2hyb25pemVEaWZmdXNlQ29uc3RhbnQoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0
aEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVLZXJuZWxVbml0TGVuZ3RoWCgpOwotICAgICAg
ICBzeW5jaHJvbml6ZUtlcm5lbFVuaXRMZW5ndGhZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19h
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsgICAgCi0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIsIEFu
aW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OnN1cmZhY2VTY2FsZUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBBbmltYXRl
ZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKLX0KLQogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVy
QnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBm
aWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MywyMCArNDMsMTggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCBib29sIHNl
dEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1l
Jik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKTsKICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIoKTsKIAotICAg
IC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURf
U1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKERpZmZ1c2VDb25z
dGFudCwgZGlmZnVzZUNvbnN0YW50KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFN1cmZh
Y2VTY2FsZSwgc3VyZmFjZVNjYWxlKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEtlcm5l
bFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05V
TUJFUihLZXJuZWxVbml0TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0aFkpCisgICAgQkVHSU5fREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfTlVNQkVSKERpZmZ1c2VDb25zdGFudCwgZGlmZnVzZUNvbnN0YW50KQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVu
aXRMZW5ndGhYKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVu
Z3RoWSwga2VybmVsVW5pdExlbmd0aFkpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVS
VElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAJKHJldmlzaW9uIDkw
NDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEyICszMCwyMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURf
U1RSSU5HKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4x
LCBpbjEpCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dCwgU1ZHTmFtZXM6OmluMkF0dHIsIEluMiwgaW4yKQotREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFU
SU9OKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0
b3JBdHRyLCBYQ2hhbm5lbFNlbGVjdG9yLCB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0
b3JUeXBlKQotREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudCwgU1ZHTmFtZXM6OnlDaGFubmVsU2VsZWN0b3JBdHRyLCBZQ2hhbm5lbFNlbGVjdG9y
LCB5Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0b3JUeXBlKQotREVGSU5FX0FOSU1BVEVE
X05VTUJFUihTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNWR05hbWVzOjpzY2FsZUF0dHIs
IFNjYWxlLCBzY2FsZSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVG
SU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNWR05hbWVz
OjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50LCBTVkdOYW1lczo6aW4yQXR0ciwgSW4yLCBpbjIpCisgICAgREVG
SU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZH
TmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRyLCBYQ2hhbm5lbFNlbGVjdG9yLCB4Q2hhbm5lbFNl
bGVjdG9yLCBDaGFubmVsU2VsZWN0b3JUeXBlKQorICAgIERFRklORV9BTklNQVRFRF9FTlVNRVJB
VElPTihTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVj
dG9yQXR0ciwgWUNoYW5uZWxTZWxlY3RvciwgeUNoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVj
dG9yVHlwZSkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudCwgU1ZHTmFtZXM6OnNjYWxlQXR0ciwgU2NhbGUsIHNjYWxlKQorRU5EX0RFRklORV9B
TklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVE
X1BST1BFUlRZKGluMSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjIp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeENoYW5uZWxTZWxlY3RvcikK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5Q2hhbm5lbFNlbGVjdG9yKQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHNjYWxlKQorICAgIFJFR0lTVEVS
X1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCkBAIC00
Myw2ICs1Myw3IEBAIGlubGluZSBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OlNWR0YKICAg
ICAsIG1feUNoYW5uZWxTZWxlY3RvcihDSEFOTkVMX0EpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05h
bWUoU1ZHTmFtZXM6OmZlRGlzcGxhY2VtZW50TWFwVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRl
ZFByb3BlcnRpZXNGb3JTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQoKTsKIH0KIAogUGFzc1Jl
ZlB0cjxTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ+IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKQEAgLTEzOSw2OSArMTUwLDYgQEAgdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQ6OnN2Z0F0dAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAg
ICAgICBzeW5jaHJvbml6ZVhDaGFubmVsU2VsZWN0b3IoKTsKLSAgICAgICAgc3luY2hyb25pemVZ
Q2hhbm5lbFNlbGVjdG9yKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHN5
bmNocm9uaXplSW4yKCk7Ci0gICAgICAgIHN5bmNocm9uaXplU2NhbGUoKTsKLSAgICAgICAgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0
b3JBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWENoYW5uZWxTZWxlY3RvcigpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5Q2hhbm5l
bFNlbGVjdG9yQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVlDaGFubmVsU2VsZWN0b3IoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluMkF0dHIpIHsKLSAgICAgICAg
c3luY2hyb25pemVJbjIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6c2NhbGVBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplU2NhbGUo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
fQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt
ZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQot
Ci12b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwot
Ci0gICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsUGFzc2VkQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRl
ZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpp
bjJBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjp4Q2hhbm5lbFNlbGVjdG9yQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5Q2hhbm5lbFNl
bGVjdG9yQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpzY2FsZUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLX0KLQog
UGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAg
ICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGlu
MSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywzMiArMjcsNiBA
QAogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1jbGFzcyBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ+IGNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIHN0YXRpYyBDaGFu
bmVsU2VsZWN0b3JUeXBlIHN0cmluZ1RvQ2hhbm5lbChjb25zdCBTdHJpbmcmKTsKLSAgICAKLXBy
aXZhdGU6Ci0gICAgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50Kik7Ci0gICAgCi0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVk
QXR0cmlidXRlKEF0dHJpYnV0ZSopOwotICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RB
dHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpOwot
ICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwotCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4yLCBpbjIpCi0gICAgREVDTEFSRV9BTklNQVRF
RF9FTlVNRVJBVElPTihYQ2hhbm5lbFNlbGVjdG9yLCB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVs
U2VsZWN0b3JUeXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oWUNoYW5uZWxT
ZWxlY3RvciwgeUNoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSkKLSAgICBERUNM
QVJFX0FOSU1BVEVEX05VTUJFUihTY2FsZSwgc2NhbGUpCi19OwogCiB0ZW1wbGF0ZTw+CiBzdHJ1
Y3QgU1ZHUHJvcGVydHlUcmFpdHM8Q2hhbm5lbFNlbGVjdG9yVHlwZT4gewpAQCAtOTEsNiArNjUs
MzAgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPENoYW5uZWxTZWxlY3RvcgogICAgIH0KIH07
CiAKK2NsYXNzIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCopOworCisgICAgc3RhdGljIENoYW5uZWxTZWxlY3RvclR5cGUgc3RyaW5n
VG9DaGFubmVsKGNvbnN0IFN0cmluZyYpOworICAgIAorcHJpdmF0ZToKKyAgICBTVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
KTsKKyAgICAKKyAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7
CisgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3Qq
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSk7CisgICAgdmlydHVhbCB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKKwor
ICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjIsIGluMikKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9FTlVNRVJBVElPTihYQ2hhbm5lbFNlbGVjdG9yLCB4Q2hhbm5lbFNlbGVjdG9yLCBD
aGFubmVsU2VsZWN0b3JUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9O
KFlDaGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxTZWxlY3RvclR5cGUp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFNjYWxlLCBzY2FsZSkKKyAgICBFTkRf
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RHJvcFNoYWRvd0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDEyICszMiwyMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3Bl
cnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFRHJvcFNoYWRvd0Vs
ZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQotREVGSU5FX0FOSU1BVEVEX05VTUJF
UihTVkdGRURyb3BTaGFkb3dFbGVtZW50LCBTVkdOYW1lczo6ZHhBdHRyLCBEeCwgZHgpCi1ERUZJ
TkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQsIFNWR05hbWVzOjpkeUF0
dHIsIER5LCBkeSkKLURFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZH
RkVEcm9wU2hhZG93RWxlbWVudCwgU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIsIHN0ZERldmlh
dGlvblhJZGVudGlmaWVyKCksIFN0ZERldmlhdGlvblgsIHN0ZERldmlhdGlvblgpCi1ERUZJTkVf
QU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQs
IFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRyLCBzdGREZXZpYXRpb25ZSWRlbnRpZmllcigpLCBT
dGREZXZpYXRpb25ZLCBzdGREZXZpYXRpb25ZKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQs
IFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIo
U1ZHRkVEcm9wU2hhZG93RWxlbWVudCwgU1ZHTmFtZXM6OmR4QXR0ciwgRHgsIGR4KQorICAgIERF
RklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVEcm9wU2hhZG93RWxlbWVudCwgU1ZHTmFtZXM6OmR5
QXR0ciwgRHksIGR5KQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBF
UlMoU1ZHRkVEcm9wU2hhZG93RWxlbWVudCwgU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIsIHN0
ZERldmlhdGlvblhJZGVudGlmaWVyKCksIFN0ZERldmlhdGlvblgsIHN0ZERldmlhdGlvblgpCisg
ICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRURyb3BTaGFk
b3dFbGVtZW50LCBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwgc3RkRGV2aWF0aW9uWUlkZW50
aWZpZXIoKSwgU3RkRGV2aWF0aW9uWSwgc3RkRGV2aWF0aW9uWSkKK0VORF9ERUZJTkVfQU5JTUFU
RURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZF
RHJvcFNoYWRvd0VsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
aW4xKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGR4KQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGR5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1B
VEVEX1BST1BFUlRZKHN0ZERldmlhdGlvblgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkoc3RkRGV2aWF0aW9uWSkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJP
UEVSVElFUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCitFTkRfUkVHSVNU
RVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6
U1ZHRkVEcm9wU2hhZG93RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXModGFnTmFtZSwgZG9jdW1lbnQpCkBAIC00Nyw2ICs1Nyw3IEBAIGlubGluZSBTVkdGRURyb3BT
aGFkb3dFbGVtZW50OjpTVkdGRURyb3AKICAgICAsIG1fc3RkRGV2aWF0aW9uWSgyKQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZURyb3BTaGFkb3dUYWcpKTsKKyAgICByZWdp
c3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQoKTsKIH0KIAog
UGFzc1JlZlB0cjxTVkdGRURyb3BTaGFkb3dFbGVtZW50PiBTVkdGRURyb3BTaGFkb3dFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQpAQCAtMTQwLDQ3ICsxNTEsNiBAQCB2b2lkIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnN2Z0F0
dHJpYnV0CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVEcm9wU2hh
ZG93RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5j
aHJvbml6ZVN0ZERldmlhdGlvblgoKTsKLSAgICAgICAgc3luY2hyb25pemVTdGREZXZpYXRpb25Z
KCk7Ci0gICAgICAgIHN5bmNocm9uaXplRHgoKTsKLSAgICAgICAgc3luY2hyb25pemVEeSgpOwot
ICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJv
bml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0cikgewotICAgICAgICBzeW5j
aHJvbml6ZVN0ZERldmlhdGlvblgoKTsKLSAgICAgICAgc3luY2hyb25pemVTdGREZXZpYXRpb25Z
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmluQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkeEF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVEeCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjpkeUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVEeSgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0K
IFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpidWlsZChT
VkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSwxOCArMzksMTggQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAgICAgCiAg
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3RkRGV2aWF0aW9uWElkZW50aWZpZXIoKTsK
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdGREZXZpYXRpb25ZSWRlbnRpZmllcigp
OwogICAgIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xB
UkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVS
KER4LCBkeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihEeSwgZHkpCi0gICAgREVDTEFS
RV9BTklNQVRFRF9OVU1CRVIoU3RkRGV2aWF0aW9uWCwgc3RkRGV2aWF0aW9uWCkKLSAgICBERUNM
QVJFX0FOSU1BVEVEX05VTUJFUihTdGREZXZpYXRpb25ZLCBzdGREZXZpYXRpb25ZKQorICAgIEJF
R0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRURyb3BTaGFkb3dFbGVtZW50KQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9OVU1CRVIoRHgsIGR4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJF
UihEeSwgZHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFN0ZERldmlhdGlvblgs
IHN0ZERldmlhdGlvblgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFN0ZERldmlh
dGlvblksIHN0ZERldmlhdGlvblkpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElF
UwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCwxOSAr
NzQsNiBAQCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVGbG9vZEVsZW1lCiAgICAgcmV0
dXJuIEZFRmxvb2Q6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBvcGFjaXR5KTsKIH0KIAotQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFRmxvb2RFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVy
biBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0ZFRmxvb2RFbGVt
ZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkpOwotfQotCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDggKzM0LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdGRUZsb29kRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1
YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAkocmV2aXNpb24g
OTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTUgKzMyLDI0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9T
VFJJTkcoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGlu
MSkKLURFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50LCBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwgc3RkRGV2aWF0aW9uWElk
ZW50aWZpZXIoKSwgU3RkRGV2aWF0aW9uWCwgc3RkRGV2aWF0aW9uWCkKLURFRklORV9BTklNQVRF
RF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBTVkdO
YW1lczo6c3RkRGV2aWF0aW9uQXR0ciwgc3RkRGV2aWF0aW9uWUlkZW50aWZpZXIoKSwgU3RkRGV2
aWF0aW9uWSwgc3RkRGV2aWF0aW9uWSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVT
CisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQsIFNW
R05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVJfTVVM
VElQTEVfV1JBUFBFUlMoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBTVkdOYW1lczo6c3RkRGV2
aWF0aW9uQXR0ciwgc3RkRGV2aWF0aW9uWElkZW50aWZpZXIoKSwgU3RkRGV2aWF0aW9uWCwgc3Rk
RGV2aWF0aW9uWCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJT
KFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCwgU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIsIHN0
ZERldmlhdGlvbllJZGVudGlmaWVyKCksIFN0ZERldmlhdGlvblksIHN0ZERldmlhdGlvblkpCitF
TkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoaW4xKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKHN0ZERldmlhdGlvblgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
c3RkRGV2aWF0aW9uWSkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCitFTkRfUkVHSVNURVJfQU5JTUFU
RURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpTVkdGRUdh
dXNzaWFuQmx1ckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRh
Z05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUdh
dXNzaWFuQmx1clRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xMTksNTAgKzEyOCw2IEBAIHZv
aWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdmdBdHRyaWIKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJO
YW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVTdGREZXZpYXRpb25YKCk7
Ci0gICAgICAgIHN5bmNocm9uaXplU3RkRGV2aWF0aW9uWSgpOwotICAgICAgICBzeW5jaHJvbml6
ZUluMSgpOwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5
bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJO
YW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6c3RkRGV2aWF0aW9uQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVN0ZERldmlhdGlv
blgoKTsKLSAgICAgICAgc3luY2hyb25pemVTdGREZXZpYXRpb25ZKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewotICAg
ICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdG
RUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6
OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpp
bkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1i
ZXIpOwotfQotCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRl
cikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVj
dEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDE4ICs0MCwxNiBA
QCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIHN0ZERldmlhdGlvblhJZGVudGlmaWVyKCk7CiAgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgc3RkRGV2aWF0aW9uWUlkZW50aWZpZXIoKTsKIAotICAgIC8vIEFuaW1h
dGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKElu
MSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFN0ZERldmlhdGlvblgsIHN0ZERl
dmlhdGlvblgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3RkRGV2aWF0aW9uWSwgc3Rk
RGV2aWF0aW9uWSkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEs
IGluMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3RkRGV2aWF0aW9uWCwgc3Rk
RGV2aWF0aW9uWCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3RkRGV2aWF0aW9u
WSwgc3RkRGV2aWF0aW9uWSkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTUgKzM5LDI0IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlv
bnMKLURFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR0ZFSW1hZ2VFbGVtZW50
LCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8s
IHByZXNlcnZlQXNwZWN0UmF0aW8pCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFSW1hZ2VF
bGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKLURFRklORV9BTklNQVRF
RF9CT09MRUFOKFNWR0ZFSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9B
TklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR0ZFSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6
cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNw
ZWN0UmF0aW8pCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUltYWdlRWxlbWVudCwg
WExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCisgICAgREVGSU5FX0FOSU1BVEVEX0JP
T0xFQU4oU1ZHRkVJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFSW1hZ2VFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykK
K0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdGRUltYWdlRWxl
bWVudDo6U1ZHRkVJbWFnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVz
OjpmZUltYWdlVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRUlt
YWdlRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFSW1hZ2VFbGVtZW50PiBTVkdGRUlt
YWdlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKQEAgLTEzOCw1NCArMTQ3LDYgQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNW
R0ZFSW1hZ2VFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplUHJlc2VydmVBc3BlY3RSYXRpbygpOwotICAgICAgICBzeW5jaHJvbml6ZUhy
ZWYoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0g
ICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQ
cm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlz
U3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfSAgIAotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpw
cmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVByZXNlcnZlQXNw
ZWN0UmF0aW8oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdVUklSZWZl
cmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
SHJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBTVkdGRUltYWdlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAs
IHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBB
bmltYXRlZFN0cmluZyk7Ci19Ci0KIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlKikKIHsKICAgICBpZiAoIWluRG9jdW1lbnQoKSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw5ICs1MSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3Vy
Y2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CkBAIC02MSwxNCArNTgs
MTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVxdWVzdEltYWdlUmVzb3VyY2UoKTsKIAotICAg
IC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURf
UFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJh
dGlvKQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJ
TkcoSHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHRkVJbWFnZUVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJFU0VS
VkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAK
ICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9jYWNoZWRJbWFnZTsKICAg
ICBPd25QdHI8SW1hZ2VCdWZmZXI+IG1fdGFyZ2V0SW1hZ2U7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMjIg
KzM2LDM3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkg
ZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNW
R05hbWVzOjphemltdXRoQXR0ciwgQXppbXV0aCwgYXppbXV0aCkKLURFRklORV9BTklNQVRFRF9O
VU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjplbGV2YXRpb25BdHRyLCBFbGV2YXRp
b24sIGVsZXZhdGlvbikKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQs
IFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdo
dEVsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKLURFRklORV9BTklNQVRFRF9OVU1CRVIo
U1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjp6QXR0ciwgWiwgeikKLURFRklORV9BTklNQVRF
RF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjpwb2ludHNBdFhBdHRyLCBQb2lu
dHNBdFgsIHBvaW50c0F0WCkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1l
bnQsIFNWR05hbWVzOjpwb2ludHNBdFlBdHRyLCBQb2ludHNBdFksIHBvaW50c0F0WSkKLURFRklO
RV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjpwb2ludHNBdFpB
dHRyLCBQb2ludHNBdFosIHBvaW50c0F0WikKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVM
aWdodEVsZW1lbnQsIFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciwgU3BlY3VsYXJFeHBv
bmVudCwgc3BlY3VsYXJFeHBvbmVudCkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdo
dEVsZW1lbnQsIFNWR05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIsIExpbWl0aW5nQ29uZUFu
Z2xlLCBsaW1pdGluZ0NvbmVBbmdsZSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVT
CisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6
OmF6aW11dGhBdHRyLCBBemltdXRoLCBhemltdXRoKQorICAgIERFRklORV9BTklNQVRFRF9OVU1C
RVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjplbGV2YXRpb25BdHRyLCBFbGV2YXRpb24s
IGVsZXZhdGlvbikKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFTGlnaHRFbGVtZW50
LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdG
RUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQorICAgIERFRklORV9BTklNQVRF
RF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjp6QXR0ciwgWiwgeikKKyAgICBE
RUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFTGlnaHRFbGVtZW50LCBTVkdOYW1lczo6cG9pbnRz
QXRYQXR0ciwgUG9pbnRzQXRYLCBwb2ludHNBdFgpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJF
UihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OnBvaW50c0F0WUF0dHIsIFBvaW50c0F0WSwg
cG9pbnRzQXRZKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQs
IFNWR05hbWVzOjpwb2ludHNBdFpBdHRyLCBQb2ludHNBdFosIHBvaW50c0F0WikKKyAgICBERUZJ
TkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFTGlnaHRFbGVtZW50LCBTVkdOYW1lczo6c3BlY3VsYXJF
eHBvbmVudEF0dHIsIFNwZWN1bGFyRXhwb25lbnQsIHNwZWN1bGFyRXhwb25lbnQpCisgICAgREVG
SU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OmxpbWl0aW5n
Q29uZUFuZ2xlQXR0ciwgTGltaXRpbmdDb25lQW5nbGUsIGxpbWl0aW5nQ29uZUFuZ2xlKQorRU5E
X0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHRkVMaWdodEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkoYXppbXV0aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShl
bGV2YXRpb24pCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeCkKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKHopCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
cG9pbnRzQXRYKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHBvaW50c0F0
WSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShwb2ludHNBdFopCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc3BlY3VsYXJFeHBvbmVudCkKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShsaW1pdGluZ0NvbmVBbmdsZSkKK0VORF9S
RUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIFNWR0ZFTGlnaHRFbGVtZW50OjpTVkdGRUxp
Z2h0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9zcGVjdWxh
ckV4cG9uZW50KDEpCiB7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRUxp
Z2h0RWxlbWVudCgpOwogfQogCiBTVkdGRUxpZ2h0RWxlbWVudCogU1ZHRkVMaWdodEVsZW1lbnQ6
OmZpbmRMaWdodEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCogc3ZnRWxlbWVudCkKQEAgLTE5NCwx
MDIgKzIwOSw2IEBAIHZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW4KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBp
ZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUF6aW11dGgo
KTsKLSAgICAgICAgc3luY2hyb25pemVFbGV2YXRpb24oKTsKLSAgICAgICAgc3luY2hyb25pemVY
KCk7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICBzeW5jaHJvbml6ZVooKTsKLSAg
ICAgICAgc3luY2hyb25pemVQb2ludHNBdFgoKTsKLSAgICAgICAgc3luY2hyb25pemVQb2ludHNB
dFkoKTsKLSAgICAgICAgc3luY2hyb25pemVQb2ludHNBdFooKTsKLSAgICAgICAgc3luY2hyb25p
emVTcGVjdWxhckV4cG9uZW50KCk7Ci0gICAgICAgIHN5bmNocm9uaXplTGltaXRpbmdDb25lQW5n
bGUoKTsKLSAgICAgICAgU1ZHRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRl
KGF0dHJOYW1lKSkgewotICAgICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmF6aW11dGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplQXppbXV0aCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
OjplbGV2YXRpb25BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRWxldmF0aW9uKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6
ZVkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6ekF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVaKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIpIHsK
LSAgICAgICAgc3luY2hyb25pemVQb2ludHNBdFgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXRZQXR0cikgewotICAgICAg
ICBzeW5jaHJvbml6ZVBvaW50c0F0WSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFpBdHRyKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplUG9pbnRzQXRaKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplU3BlY3VsYXJFeHBvbmVudCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVMaW1pdGluZ0NvbmVBbmdsZSgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBTVkdGRUxpZ2h0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQot
ewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNf
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
YXppbXV0aEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoU1ZHTmFtZXM6OmVsZXZhdGlvbkF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZE51
bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0
ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6ekF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnBvaW50c0F0WUF0dHIs
IEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OnBvaW50c0F0WkF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyLCBBbmltYXRl
ZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjps
aW1pdGluZ0NvbmVBbmdsZUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLX0KLQogdm9pZCBTVkdGRUxp
Z2h0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBi
ZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewog
ICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNo
YW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVMaWdodEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMjIgKzQyLDIw
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0
ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChi
b29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2Rl
KiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAotICAgIC8vIEFu
aW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVS
KEF6aW11dGgsIGF6aW11dGgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoRWxldmF0aW9u
LCBlbGV2YXRpb24pCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoWCwgeCkKLSAgICBERUNM
QVJFX0FOSU1BVEVEX05VTUJFUihZLCB5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFos
IHopCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoUG9pbnRzQXRYLCBwb2ludHNBdFgpCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoUG9pbnRzQXRZLCBwb2ludHNBdFkpCi0gICAgREVD
TEFSRV9BTklNQVRFRF9OVU1CRVIoUG9pbnRzQXRaLCBwb2ludHNBdFopCi0gICAgREVDTEFSRV9B
TklNQVRFRF9OVU1CRVIoU3BlY3VsYXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX05VTUJFUihMaW1pdGluZ0NvbmVBbmdsZSwgbGltaXRpbmdDb25lQW5n
bGUpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFTGlnaHRFbGVt
ZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihBemltdXRoLCBhemltdXRoKQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihFbGV2YXRpb24sIGVsZXZhdGlvbikKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoWCwgeCkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9OVU1CRVIoWSwgeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoWiwgeikK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoUG9pbnRzQXRYLCBwb2ludHNBdFgpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFBvaW50c0F0WSwgcG9pbnRzQXRZKQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihQb2ludHNBdFosIHBvaW50c0F0WikKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3BlY3VsYXJFeHBvbmVudCwgc3BlY3VsYXJFeHBv
bmVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoTGltaXRpbmdDb25lQW5nbGUs
IGxpbWl0aW5nQ29uZUFuZ2xlKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRU1lcmdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTWVyZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxOSArNjAsNiBA
QCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNZXJnZUVsZW1lCiAgICAgcmV0dXJuIGVm
ZmVjdC5yZWxlYXNlKCk7CiB9CiAKLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRU1l
cmdlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cDsKLX0KLQotdm9pZCBTVkdGRU1lcmdlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKLXsKLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZp
bGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpKTsKLX0KLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKLQotLy8gdmltOnRzPTQ6
bm9ldApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgJKHJldmlzaW9u
IDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDggKzM0LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdGRU1l
cmdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqLCBGaWx0ZXIqKTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdl
Tm9kZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1l
cmdlTm9kZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMyArMzIs
MTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZp
bml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRU1lcmdlTm9kZUVsZW1lbnQsIFNW
R05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJ
RVMKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCwgU1ZH
TmFtZXM6OmluQXR0ciwgSW4xLCBpbjEpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMK
KworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRU1lcmdlTm9kZUVsZW1l
bnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQorRU5EX1JFR0lT
VEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6
U1ZHRkVNZXJnZU5vZGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlTWVyZ2VOb2RlVGFnKSk7CisgICAgcmVn
aXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRU1lcmdlTm9kZUVsZW1lbnQoKTsKIH0KIAog
UGFzc1JlZlB0cjxTVkdGRU1lcmdlTm9kZUVsZW1lbnQ+IFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
QEAgLTk0LDM4ICsxMDAsNiBAQCB2b2lkIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3ZnQXR0cmli
dXRlCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLUF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVNZXJnZU5vZGVFbGVtZW50Ojpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCkuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQot
dm9pZCBTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkp
IHsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgU1ZHRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdFbGVtZW50
OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0g
ICAKLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLX0KLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNywxMiArMzcsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAotICAgIC8vIEFuaW1h
dGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKElu
MSwgaW4xKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRU1lcmdl
Tm9kZUVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQor
ICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxl
bWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9y
cGhvbG9neUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNyArMzEsMjcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwot
REVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRU1vcnBob2xvZ3lFbGVtZW50LCBTVkdOYW1lczo6
aW5BdHRyLCBJbjEsIGluMSkKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRU1vcnBo
b2xvZ3lFbGVtZW50LCBTVkdOYW1lczo6b3BlcmF0b3JBdHRyLCBfb3BlcmF0b3IsIF9vcGVyYXRv
ciwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSkKLURFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQ
TEVfV1JBUFBFUlMoU1ZHRkVNb3JwaG9sb2d5RWxlbWVudCwgU1ZHTmFtZXM6OnJhZGl1c0F0dHIs
IHJhZGl1c1hJZGVudGlmaWVyKCksIFJhZGl1c1gsIHJhZGl1c1gpCi1ERUZJTkVfQU5JTUFURURf
TlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQsIFNWR05hbWVz
OjpyYWRpdXNBdHRyLCByYWRpdXNZSWRlbnRpZmllcigpLCBSYWRpdXNZLCByYWRpdXNZKQorQkVH
SU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5H
KFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorICAg
IERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRU1vcnBob2xvZ3lFbGVtZW50LCBTVkdO
YW1lczo6b3BlcmF0b3JBdHRyLCBfb3BlcmF0b3IsIF9vcGVyYXRvciwgTW9ycGhvbG9neU9wZXJh
dG9yVHlwZSkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNW
R0ZFTW9ycGhvbG9neUVsZW1lbnQsIFNWR05hbWVzOjpyYWRpdXNBdHRyLCByYWRpdXNYSWRlbnRp
ZmllcigpLCBSYWRpdXNYLCByYWRpdXNYKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVJfTVVM
VElQTEVfV1JBUFBFUlMoU1ZHRkVNb3JwaG9sb2d5RWxlbWVudCwgU1ZHTmFtZXM6OnJhZGl1c0F0
dHIsIHJhZGl1c1lJZGVudGlmaWVyKCksIFJhZGl1c1ksIHJhZGl1c1kpCitFTkRfREVGSU5FX0FO
SU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhT
VkdGRU1vcnBob2xvZ3lFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKGluMSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShfb3BlcmF0b3Ip
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocmFkaXVzWCkKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShyYWRpdXNZKQorICAgIFJFR0lTVEVSX1BBUkVO
VF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdGRU1vcnBo
b2xvZ3lFbGVtZW50OjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fX29wZXJhdG9yKEZF
TU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdO
YW1lczo6ZmVNb3JwaG9sb2d5VGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNG
b3JTVkdGRU1vcnBob2xvZ3lFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVNb3JwaG9s
b2d5RWxlbWVudD4gU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTE0NSw1NyArMTU1LDYgQEAg
dm9pZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzdmdBdHRyaWJ1dAogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJO
YW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVfb3BlcmF0b3IoKTsKLSAg
ICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgc3luY2hyb25pemVSYWRpdXNYKCk7Ci0g
ICAgICAgIHN5bmNocm9uaXplUmFkaXVzWSgpOwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFt
ZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5j
aHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6b3BlcmF0b3JBdHRyKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplX29wZXJhdG9yKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpy
YWRpdXNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplUmFkaXVzWCgpOwotICAgICAgICBzeW5j
aHJvbml6ZVJhZGl1c1koKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcDsKLX0KLQotdm9pZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNz
ZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFu
aW1hdGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6Om9wZXJhdG9yQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyYWRpdXNBdHRyLCBBbmltYXRlZE51bWJlck9w
dGlvbmFsTnVtYmVyKTsKLX0KLQogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTW9ycGhv
bG9neUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRl
ciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+
Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1v
cnBob2xvZ3lFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMzQgKzI4LDYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdGRU1vcnBob2xvZ3lFbGVtZW50
IDogcHVibGljIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVNb3JwaG9sb2d5RWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotCi0gICAgdm9pZCBzZXRSYWRpdXMoZmxv
YXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSk7Ci0KLXByaXZhdGU6Ci0gICAgU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIGJvb2wg
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICB2aXJ0dWFsIGJvb2wg
c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKLQotICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIHJhZGl1c1hJZGVudGlmaWVyKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgcmFkaXVzWUlkZW50aWZpZXIoKTsKLQotICAgIC8vIEFuaW1hdGVkIHByb3Bl
cnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQot
ICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oX29wZXJhdG9yLCBfb3BlcmF0b3IsIE1v
cnBob2xvZ3lPcGVyYXRvclR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoUmFkaXVz
WCwgcmFkaXVzWCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihSYWRpdXNZLCByYWRpdXNZ
KQotfTsKLQogdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPE1vcnBob2xvZ3lP
cGVyYXRvclR5cGU+IHsKICAgICBzdGF0aWMgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSBoaWdoZXN0
RW51bVZhbHVlKCkgeyByZXR1cm4gRkVNT1JQSE9MT0dZX09QRVJBVE9SX0RJTEFURTsgfQpAQCAt
ODUsNiArNTcsMzIgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPE1vcnBob2xvZ3lPcGVyYQog
ICAgIH0KIH07CiAKK2NsYXNzIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQgOiBwdWJsaWMgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTVkdGRU1vcnBob2xvZ3lFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Kik7CisKKyAgICB2b2lkIHNldFJhZGl1cyhmbG9hdCByYWRpdXNYLCBmbG9h
dCByYWRpdXNZKTsKKworcHJpdmF0ZToKKyAgICBTVkdGRU1vcnBob2xvZ3lFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCisgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVk
QXR0cmlidXRlKEF0dHJpYnV0ZSopOworICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RB
dHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1
YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwg
RmlsdGVyKik7CisKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiByYWRpdXNYSWRlbnRp
ZmllcigpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHJhZGl1c1lJZGVudGlmaWVy
KCk7CisKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oX29wZXJhdG9yLCBfb3BlcmF0b3Is
IE1vcnBob2xvZ3lPcGVyYXRvclR5cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVS
KFJhZGl1c1gsIHJhZGl1c1gpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFJhZGl1
c1ksIHJhZGl1c1kpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworfTsKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSwxNSArMzEsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmlt
YXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRU9m
ZnNldEVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQotREVGSU5FX0FOSU1BVEVE
X05VTUJFUihTVkdGRU9mZnNldEVsZW1lbnQsIFNWR05hbWVzOjpkeEF0dHIsIER4LCBkeCkKLURF
RklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVPZmZzZXRFbGVtZW50LCBTVkdOYW1lczo6ZHlBdHRy
LCBEeSwgZHkpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9B
TklNQVRFRF9TVFJJTkcoU1ZHRkVPZmZzZXRFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEs
IGluMSkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFT2Zmc2V0RWxlbWVudCwgU1ZH
TmFtZXM6OmR4QXR0ciwgRHgsIGR4KQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVP
ZmZzZXRFbGVtZW50LCBTVkdOYW1lczo6ZHlBdHRyLCBEeSwgZHkpCitFTkRfREVGSU5FX0FOSU1B
VEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdG
RU9mZnNldEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4x
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGR4KQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGR5KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9S
RUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdGRU9mZnNldEVsZW1lbnQ6
OlNWR0ZFT2Zmc2V0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMo
dGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZl
T2Zmc2V0VGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRU9mZnNl
dEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRU9mZnNldEVsZW1lbnQ+IFNWR0ZFT2Zm
c2V0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKQEAgLTEwMSw1NSArMTEwLDYgQEAgdm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNW
R0ZFT2Zmc2V0RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAg
ICBzeW5jaHJvbml6ZUR4KCk7Ci0gICAgICAgIHN5bmNocm9uaXplRHkoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVJbjEoKTsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAg
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0
eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmR4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUR4KCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmR5QXR0cikg
ewotICAgICAgICBzeW5jaHJvbml6ZUR5KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewotICAgICAgICBzeW5jaHJvbml6
ZUluMSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRU9mZnNldEVsZW1lbnQ6
OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZv
aWQgU1ZHRkVPZmZzZXRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQot
ewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmR4QXR0ciwgQW5pbWF0
ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
ZHlBdHRyLCBBbmltYXRlZE51bWJlcik7Ci19Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBT
VkdGRU9mZnNldEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIs
IEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVp
bGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVPZmZzZXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
T2Zmc2V0RWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRU9mZnNldEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTUgKzM4LDEzIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwog
ICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoRHgsIGR4KQotICAgIERFQ0xBUkVfQU5JTUFURURf
TlVNQkVSKER5LCBkeSkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZH
RkVPZmZzZXRFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGlu
MSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoRHgsIGR4KQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX05VTUJFUihEeSwgZHkpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAkocmV2aXNp
b24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEzICszNiwyNCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5J
TUFURURfU1RSSU5HKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjppbkF0
dHIsIEluMSwgaW4xKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LCBTVkdOYW1lczo6c3BlY3VsYXJDb25zdGFudEF0dHIsIFNwZWN1bGFyQ29uc3Rh
bnQsIHNwZWN1bGFyQ29uc3RhbnQpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciwgU3BlY3Vs
YXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZH
RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIsIFN1
cmZhY2VTY2FsZSwgc3VyZmFjZVNjYWxlKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBM
RV9XUkFQUEVSUyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6a2VybmVs
VW5pdExlbmd0aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpLCBLZXJuZWxVbml0
TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJ
UExFX1dSQVBQRVJTKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjprZXJu
ZWxVbml0TGVuZ3RoQXR0ciwga2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCksIEtlcm5lbFVu
aXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9Q
RVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKKyAgICBERUZJTkVfQU5JTUFURURf
TlVNQkVSKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpzcGVjdWxhckNv
bnN0YW50QXR0ciwgU3BlY3VsYXJDb25zdGFudCwgc3BlY3VsYXJDb25zdGFudCkKKyAgICBERUZJ
TkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVz
OjpzcGVjdWxhckV4cG9uZW50QXR0ciwgU3BlY3VsYXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVu
dCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQsIFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyLCBTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2Fs
ZSkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwga2Vy
bmVsVW5pdExlbmd0aFhJZGVudGlmaWVyKCksIEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0
TGVuZ3RoWCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0
ciwga2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCksIEtlcm5lbFVuaXRMZW5ndGhZLCBrZXJu
ZWxVbml0TGVuZ3RoWSkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9S
RUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHNwZWN1bGFyQ29uc3RhbnQpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc3BlY3VsYXJFeHBvbmVudCkKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShzdXJmYWNlU2NhbGUpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoa2VybmVsVW5pdExlbmd0aFgpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoa2VybmVsVW5pdExlbmd0aFkpCisgICAgUkVHSVNURVJfUEFSRU5U
X0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQ6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQpAQCAtNTEsNiAr
NjIsNyBAQCBpbmxpbmUgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6U1ZHCiAgICAgLCBt
X3N1cmZhY2VTY2FsZSgxKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZVNw
ZWN1bGFyTGlnaHRpbmdUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMjA0
LDcxICsyMTYsNiBAQCB2b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmxpZ2h0CiAg
ICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLXZvaWQgU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewot
ICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICBzeW5jaHJvbml6ZVN1cmZhY2VTY2Fs
ZSgpOwotICAgICAgICBzeW5jaHJvbml6ZVNwZWN1bGFyQ29uc3RhbnQoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVTcGVjdWxhckV4cG9uZW50KCk7Ci0gICAgICAgIHN5bmNocm9uaXplS2VybmVsVW5p
dExlbmd0aFgoKTsKLSAgICAgICAgc3luY2hyb25pemVLZXJuZWxVbml0TGVuZ3RoWSgpOwotICAg
ICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJv
cGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1
cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVTdXJmYWNlU2NhbGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3BlY3VsYXJDb25zdGFudEF0dHIpIHsKLSAg
ICAgICAgc3luY2hyb25pemVTcGVjdWxhckNvbnN0YW50KCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplU3BlY3VsYXJFeHBvbmVudCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjprZXJuZWxVbml0TGVu
Z3RoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUtlcm5lbFVuaXRMZW5ndGhYKCk7Ci0gICAg
ICAgIHN5bmNocm9uaXplS2VybmVsVW5pdExlbmd0aFkoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4g
c19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRo
aXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNwZWN1bGFyQ29uc3RhbnRBdHRyLCBB
bmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0ciwgQW5pbWF0
ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
a2VybmVsVW5pdExlbmd0aEF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOwotfQot
CiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7
CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlk
KGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwyMSAr
NDIsMTkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKik7CiAgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShG
aWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiwgRmlsdGVyKik7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBrZXJuZWxVbml0
TGVuZ3RoWElkZW50aWZpZXIoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBrZXJu
ZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIoKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRl
Y2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQotICAgIERF
Q0xBUkVfQU5JTUFURURfTlVNQkVSKFNwZWN1bGFyQ29uc3RhbnQsIHNwZWN1bGFyQ29uc3RhbnQp
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3BlY3VsYXJFeHBvbmVudCwgc3BlY3VsYXJF
eHBvbmVudCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihTdXJmYWNlU2NhbGUsIHN1cmZh
Y2VTY2FsZSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWCwg
a2VybmVsVW5pdExlbmd0aFgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoS2VybmVsVW5p
dExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50KQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1C
RVIoU3BlY3VsYXJDb25zdGFudCwgc3BlY3VsYXJDb25zdGFudCkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9OVU1CRVIoU3BlY3VsYXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3VyZmFjZVNjYWxlLCBzdXJmYWNlU2NhbGUpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxV
bml0TGVuZ3RoWCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoS2VybmVsVW5pdExl
bmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMyArMzIs
MjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZp
bml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRVRpbGVFbGVtZW50LCBTVkdOYW1l
czo6aW5BdHRyLCBJbjEsIGluMSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisg
ICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRVRpbGVFbGVtZW50LCBTVkdOYW1lczo6aW5B
dHRyLCBJbjEsIGluMSkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9S
RUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFVGlsZUVsZW1lbnQpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklN
QVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VO
RF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdGRVRpbGVFbGVtZW50
OjpTVkdGRVRpbGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0
YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVU
aWxlVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRVRpbGVFbGVt
ZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVUaWxlRWxlbWVudD4gU1ZHRkVUaWxlRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCkKQEAgLTg2LDQxICs5Myw2IEBAIHZvaWQgU1ZHRkVUaWxlRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmcKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRVRpbGVFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQot
ewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
SW4xKCk7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3lu
Y2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5h
bWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFVGlsZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNf
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVUaWxlRWxlbWVudDo6
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBTVkdGRVRpbGVFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWls
ZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRl
ckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFVGlsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVUaWxlRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRVRpbGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEzICszNywxMSBAQCBwcml2
YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7
Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
LSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5
IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAg
IEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRVRpbGVFbGVtZW50KQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICBFTkRfREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCShyZXZpc2lv
biA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTMgKzMwLDI0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9O
VU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6
OmJhc2VGcmVxdWVuY3lBdHRyLCBiYXNlRnJlcXVlbmN5WElkZW50aWZpZXIoKSwgQmFzZUZyZXF1
ZW5jeVgsIGJhc2VGcmVxdWVuY3lYKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9X
UkFQUEVSUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0
dHIsIGJhc2VGcmVxdWVuY3lZSWRlbnRpZmllcigpLCBCYXNlRnJlcXVlbmN5WSwgYmFzZUZyZXF1
ZW5jeVkpCi1ERUZJTkVfQU5JTUFURURfSU5URUdFUihTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBT
VkdOYW1lczo6bnVtT2N0YXZlc0F0dHIsIE51bU9jdGF2ZXMsIG51bU9jdGF2ZXMpCi1ERUZJTkVf
QU5JTUFURURfTlVNQkVSKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIFNWR05hbWVzOjpzZWVkQXR0
ciwgU2VlZCwgc2VlZCkKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50LCBTVkdOYW1lczo6c3RpdGNoVGlsZXNBdHRyLCBTdGl0Y2hUaWxlcywgc3RpdGNo
VGlsZXMsIFNWR1N0aXRjaE9wdGlvbnMpCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZH
RkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OnR5cGVBdHRyLCBUeXBlLCB0eXBlLCBUdXJi
dWxlbmNlVHlwZSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5F
X0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50
LCBTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0dHIsIGJhc2VGcmVxdWVuY3lYSWRlbnRpZmllcigp
LCBCYXNlRnJlcXVlbmN5WCwgYmFzZUZyZXF1ZW5jeVgpCisgICAgREVGSU5FX0FOSU1BVEVEX05V
TUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6
YmFzZUZyZXF1ZW5jeUF0dHIsIGJhc2VGcmVxdWVuY3lZSWRlbnRpZmllcigpLCBCYXNlRnJlcXVl
bmN5WSwgYmFzZUZyZXF1ZW5jeVkpCisgICAgREVGSU5FX0FOSU1BVEVEX0lOVEVHRVIoU1ZHRkVU
dXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6Om51bU9jdGF2ZXNBdHRyLCBOdW1PY3RhdmVzLCBu
dW1PY3RhdmVzKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVUdXJidWxlbmNlRWxl
bWVudCwgU1ZHTmFtZXM6OnNlZWRBdHRyLCBTZWVkLCBzZWVkKQorICAgIERFRklORV9BTklNQVRF
RF9FTlVNRVJBVElPTihTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6c3RpdGNoVGls
ZXNBdHRyLCBTdGl0Y2hUaWxlcywgc3RpdGNoVGlsZXMsIFNWR1N0aXRjaE9wdGlvbnMpCisgICAg
REVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIFNWR05h
bWVzOjp0eXBlQXR0ciwgVHlwZSwgdHlwZSwgVHVyYnVsZW5jZVR5cGUpCitFTkRfREVGSU5FX0FO
SU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhT
VkdGRVR1cmJ1bGVuY2VFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKGJhc2VGcmVxdWVuY3lYKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZ
KGJhc2VGcmVxdWVuY3lZKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKG51
bU9jdGF2ZXMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc2VlZCkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShzdGl0Y2hUaWxlcykKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh0eXBlKQorICAgIFJFR0lTVEVSX1BBUkVOVF9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykK
K0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50OjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTQ1LDYgKzU2LDcgQEAgaW5saW5l
IFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OlNWR0ZFVHVyYgogICAgICwgbV90eXBlKEZFVFVSQlVM
RU5DRV9UWVBFX1RVUkJVTEVOQ0UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6
OmZlVHVyYnVsZW5jZVRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZH
RkVUdXJidWxlbmNlRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQ+IFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xNjAsNzEgKzE3Miw2IEBAIHZvaWQg
U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6c3ZnQXR0cmlidXQKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIH0KIAotdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9
PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplVHlwZSgpOwotICAgICAgICBzeW5j
aHJvbml6ZVN0aXRjaFRpbGVzKCk7Ci0gICAgICAgIHN5bmNocm9uaXplQmFzZUZyZXF1ZW5jeVgo
KTsKLSAgICAgICAgc3luY2hyb25pemVCYXNlRnJlcXVlbmN5WSgpOwotICAgICAgICBzeW5jaHJv
bml6ZVNlZWQoKTsKLSAgICAgICAgc3luY2hyb25pemVOdW1PY3RhdmVzKCk7Ci0gICAgICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShh
dHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVk
QXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0eXBlQXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZVR5cGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3RpdGNoVGlsZXNBdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplU3RpdGNoVGlsZXMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0dHIpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVCYXNlRnJlcXVlbmN5WCgpOwotICAgICAgICBzeW5jaHJvbml6ZUJhc2VGcmVxdWVu
Y3lZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnNlZWRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplU2VlZCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpudW1PY3RhdmVz
QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZU51bU9jdGF2ZXMoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4g
c19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRVR1cmJ1bGVuY2VF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjpiYXNlRnJlcXVlbmN5QXR0ciwgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51
bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpudW1P
Y3RhdmVzQXR0ciwgQW5pbWF0ZWRJbnRlZ2VyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoU1ZHTmFtZXM6OnNlZWRBdHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpzdGl0Y2hUaWxlc0F0dHIsIEFuaW1h
dGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6dHlwZUF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotfQotCiBQYXNzUmVmUHRyPEZp
bHRlckVmZmVjdD4gU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciosIEZpbHRlciogZmlsdGVyKQogewogICAgIGlmIChiYXNlRnJlcXVlbmN5WCgpIDwgMCB8fCBi
YXNlRnJlcXVlbmN5WSgpIDwgMCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1
bGVuY2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVy
YnVsZW5jZUVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwzNCArMzYsNiBA
QCBlbnVtIFNWR1N0aXRjaE9wdGlvbnMgewogICAgIFNWR19TVElUQ0hUWVBFX05PU1RJVENIID0g
MgogfTsKIAotY2xhc3MgU1ZHRkVUdXJidWxlbmNlRWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKLQotcHJpdmF0ZToKLSAgICBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotCi0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVk
QXR0cmlidXRlKEF0dHJpYnV0ZSopOwotICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RB
dHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpOwot
ICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwotCi0gICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgYmFzZUZyZXF1ZW5jeVhJZGVudGlmaWVyKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgYmFzZUZyZXF1ZW5jeVlJZGVudGlmaWVyKCk7Ci0KLSAgICAvLyBBbmltYXRl
ZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihCYXNl
RnJlcXVlbmN5WCwgYmFzZUZyZXF1ZW5jeVgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIo
QmFzZUZyZXF1ZW5jeVksIGJhc2VGcmVxdWVuY3lZKQotICAgIERFQ0xBUkVfQU5JTUFURURfSU5U
RUdFUihOdW1PY3RhdmVzLCBudW1PY3RhdmVzKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVS
KFNlZWQsIHNlZWQpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihTdGl0Y2hUaWxl
cywgc3RpdGNoVGlsZXMsIFNWR1N0aXRjaE9wdGlvbnMpCi0gICAgREVDTEFSRV9BTklNQVRFRF9F
TlVNRVJBVElPTihUeXBlLCB0eXBlLCBUdXJidWxlbmNlVHlwZSkKLX07Ci0KIHRlbXBsYXRlPD4K
IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdTdGl0Y2hPcHRpb25zPiB7CiAgICAgc3RhdGlj
IFNWR1N0aXRjaE9wdGlvbnMgaGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJuIFNWR19TVElUQ0hU
WVBFX05PU1RJVENIOyB9CkBAIC0xMjIsNiArOTQsMzIgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJh
aXRzPFR1cmJ1bGVuY2VUeXBlPgogICAgIH0KIH07CiAKK2NsYXNzIFNWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRVR1cmJ1bGVuY2VFbGVtZW50PiBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisKK3ByaXZhdGU6CisgICAgU1ZH
RkVUdXJidWxlbmNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKwor
ICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKyAgICB2aXJ0
dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRl
ckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOworCisgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgYmFzZUZyZXF1ZW5jeVhJZGVudGlmaWVyKCk7CisgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgYmFzZUZyZXF1ZW5jeVlJZGVudGlmaWVyKCk7CisKKyAg
ICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQmFzZUZyZXF1ZW5jeVgsIGJhc2VG
cmVxdWVuY3lYKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihCYXNlRnJlcXVlbmN5
WSwgYmFzZUZyZXF1ZW5jeVkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihOdW1P
Y3RhdmVzLCBudW1PY3RhdmVzKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihTZWVk
LCBzZWVkKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFN0aXRjaFRpbGVz
LCBzdGl0Y2hUaWxlcywgU1ZHU3RpdGNoT3B0aW9ucykKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9FTlVNRVJBVElPTihUeXBlLCB0eXBlLCBUdXJidWxlbmNlVHlwZSkKKyAgICBFTkRfREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUSUVTCit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVt
ZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDIzICszNiwzNCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVf
QU5JTUFURURfRU5VTUVSQVRJT04oU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OmZpbHRlclVu
aXRzQXR0ciwgRmlsdGVyVW5pdHMsIGZpbHRlclVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlKQotREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05h
bWVzOjpwcmltaXRpdmVVbml0c0F0dHIsIFByaW1pdGl2ZVVuaXRzLCBwcmltaXRpdmVVbml0cywg
U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRmls
dGVyRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQotREVGSU5FX0FOSU1BVEVEX0xFTkdU
SChTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCi1ERUZJTkVfQU5JTUFU
RURfTEVOR1RIKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3
aWR0aCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6
OmhlaWdodEF0dHIsIEhlaWdodCwgaGVpZ2h0KQotREVGSU5FX0FOSU1BVEVEX0lOVEVHRVJfTVVM
VElQTEVfV1JBUFBFUlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OmZpbHRlclJlc0F0dHIs
IGZpbHRlclJlc1hJZGVudGlmaWVyKCksIEZpbHRlclJlc1gsIGZpbHRlclJlc1gpCi1ERUZJTkVf
QU5JTUFURURfSU5URUdFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdO
YW1lczo6ZmlsdGVyUmVzQXR0ciwgZmlsdGVyUmVzWUlkZW50aWZpZXIoKSwgRmlsdGVyUmVzWSwg
ZmlsdGVyUmVzWSkKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRmlsdGVyRWxlbWVudCwgWExp
bmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihT
VkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIs
IEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitC
RUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9FTlVN
RVJBVElPTihTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyLCBGaWx0
ZXJVbml0cywgZmlsdGVyVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgREVG
SU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpwcmlt
aXRpdmVVbml0c0F0dHIsIFByaW1pdGl2ZVVuaXRzLCBwcmltaXRpdmVVbml0cywgU1ZHVW5pdFR5
cGVzOjpTVkdVbml0VHlwZSkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlckVs
ZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RI
KFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKKyAgICBERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRo
LCB3aWR0aCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlckVsZW1lbnQsIFNW
R05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdodCkKKyAgICBERUZJTkVfQU5JTUFURURf
SU5URUdFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6Zmls
dGVyUmVzQXR0ciwgZmlsdGVyUmVzWElkZW50aWZpZXIoKSwgRmlsdGVyUmVzWCwgZmlsdGVyUmVz
WCkKKyAgICBERUZJTkVfQU5JTUFURURfSU5URUdFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGaWx0
ZXJFbGVtZW50LCBTVkdOYW1lczo6ZmlsdGVyUmVzQXR0ciwgZmlsdGVyUmVzWUlkZW50aWZpZXIo
KSwgRmlsdGVyUmVzWSwgZmlsdGVyUmVzWSkKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNW
R0ZpbHRlckVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQorICAgIERF
RklORV9BTklNQVRFRF9CT09MRUFOKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitC
RUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlckVsZW1lbnQpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZmlsdGVyVW5pdHMpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocHJpbWl0aXZlVW5pdHMpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWSh5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHdpZHRoKQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGhlaWdodCkKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShmaWx0ZXJSZXNYKQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKGZpbHRlclJlc1kpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkoaHJlZikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJ
RVMKIAogaW5saW5lIFNWR0ZpbHRlckVsZW1lbnQ6OlNWR0ZpbHRlckVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVk
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKLSAgICAsIFNWR1VSSVJlZmVyZW5jZSgpCi0gICAg
LCBTVkdMYW5nU3BhY2UoKQotICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCiAg
ICAgLCBtX2ZpbHRlclVuaXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VO
RElOR0JPWCkKICAgICAsIG1fcHJpbWl0aXZlVW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9U
WVBFX1VTRVJTUEFDRU9OVVNFKQogICAgICwgbV94KExlbmd0aE1vZGVXaWR0aCwgIi0xMCUiKQpA
QCAtNjMsNiArNzQsNyBAQCBpbmxpbmUgU1ZHRmlsdGVyRWxlbWVudDo6U1ZHRmlsdGVyRWxlbWVu
CiAgICAgLy8gU3BlYzogSWYgdGhlIHgveSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhl
IGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICItMTAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICAv
LyBTcGVjOiBJZiB0aGUgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0
aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEyMCUiIHdlcmUgc3BlY2lmaWVkLgogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmaWx0ZXJUYWcpKTsKKyAgICByZWdpc3RlckFu
aW1hdGVkUHJvcGVydGllc0ZvclNWR0ZpbHRlckVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxT
VkdGaWx0ZXJFbGVtZW50PiBTVkdGaWx0ZXJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTg5LDk4ICsyMDEsNiBAQCB2
b2lkIFNWR0ZpbHRlckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nCiAgICAgICAgIG9iamVjdC0+
c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiB9CiAKLXZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAo
YXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAg
ICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAg
c3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAgICAgc3luY2hyb25pemVGaWx0ZXJVbml0cygpOwot
ICAgICAgICBzeW5jaHJvbml6ZVByaW1pdGl2ZVVuaXRzKCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
RmlsdGVyUmVzWCgpOwotICAgICAgICBzeW5jaHJvbml6ZUZpbHRlclJlc1koKTsKLSAgICAgICAg
c3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHN5bmNocm9u
aXplSHJlZigpOwotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNo
cm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVgo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6eUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgewotICAgICAg
ICBzeW5jaHJvbml6ZVdpZHRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVI
ZWlnaHQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRmlsdGVyVW5p
dHMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6cHJpbWl0aXZlVW5pdHNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplUHJpbWl0aXZl
VW5pdHMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6ZmlsdGVyUmVzQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUZpbHRlclJlc1go
KTsKLSAgICAgICAgc3luY2hyb25pemVGaWx0ZXJSZXNZKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVVJJUmVmZXJl
bmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUhy
ZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRmlsdGVyRWxlbWVudDo6YXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgp
KTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBT
VkdGaWx0ZXJFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAg
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9
IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRFbGVt
ZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6ZmlsdGVyVW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnByaW1pdGl2ZVVuaXRzQXR0ciwgQW5pbWF0
ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgp
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0
ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6ZmlsdGVyUmVzQXR0ciwgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBB
bmltYXRlZFN0cmluZyk7Ci19Ci0KIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVy
Q2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNo
aWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2Us
IGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50
LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQsNiBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1
YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBm
YWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQg
Y2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwpAQCAtNjYsMjEgKzYzLDE4IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZmlsdGVyUmVzWElkZW50
aWZpZXIoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBmaWx0ZXJSZXNZSWRlbnRp
ZmllcigpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVD
TEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihGaWx0ZXJVbml0cywgZmlsdGVyVW5pdHMsIFNWR1Vu
aXRUeXBlczo6U1ZHVW5pdFR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihQ
cmltaXRpdmVVbml0cywgcHJpbWl0aXZlVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUp
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKLSAgICBERUNMQVJFX0FOSU1BVEVE
X0xFTkdUSChZLCB5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkK
LSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKLSAgICBERUNMQVJF
X0FOSU1BVEVEX0lOVEVHRVIoRmlsdGVyUmVzWCwgZmlsdGVyUmVzWCkKLSAgICBERUNMQVJFX0FO
SU1BVEVEX0lOVEVHRVIoRmlsdGVyUmVzWSwgZmlsdGVyUmVzWSkKLQotICAgIC8vIFNWR1VSSVJl
ZmVyZW5jZQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCi0KLSAgICAv
LyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09M
RUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQp
CisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlckVsZW1lbnQp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oRmlsdGVyVW5pdHMsIGZpbHRl
clVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX0VOVU1FUkFUSU9OKFByaW1pdGl2ZVVuaXRzLCBwcmltaXRpdmVVbml0cywgU1ZHVW5pdFR5
cGVzOjpTVkdVbml0VHlwZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSChIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9JTlRFR0VSKEZp
bHRlclJlc1gsIGZpbHRlclJlc1gpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihG
aWx0ZXJSZXNZLCBmaWx0ZXJSZXNZKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhI
cmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNw
cAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTEgKzM3LDIy
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRp
b25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcywgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR05hbWVzOjp5QXR0ciwgWSwg
eSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0aCwgd2lkdGgpCi1ERUZJTkVfQU5JTUFU
RURfTEVOR1RIKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTmFtZXM6
OmhlaWdodEF0dHIsIEhlaWdodCwgaGVpZ2h0KQotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR05hbWVzOjpyZXN1bHRBdHRyLCBS
ZXN1bHQsIHJlc3VsdCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVG
SU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMs
IFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQor
ICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0aCwgd2lkdGgpCisgICAgREVGSU5FX0FO
SU1BVEVEX0xFTkdUSChTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR05h
bWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdodCkKKyAgICBERUZJTkVfQU5JTUFURURfU1RS
SU5HKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTmFtZXM6OnJlc3Vs
dEF0dHIsIFJlc3VsdCwgcmVzdWx0KQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisK
K0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeSkKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWSh3aWR0aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShoZWlnaHQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
cmVzdWx0KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxl
ZEVsZW1lbnQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQpAQCAtNTIsNiArNjMs
NyBAQCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OlNWCiB7CiAgICAgLy8g
U3BlYzogSWYgdGhlIHgveSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBp
cyBhcyBpZiBhIHZhbHVlIG9mICIwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgLy8gU3BlYzogSWYg
dGhlIHdpZHRoL2hlaWdodCBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBp
cyBhcyBpZiBhIHZhbHVlIG9mICIxMDAlIiB3ZXJlIHNwZWNpZmllZC4KKyAgICByZWdpc3RlckFu
aW1hdGVkUHJvcGVydGllc0ZvclNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcygp
OwogfQogCiBib29sIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6aXNTdXBw
b3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBAIC0xMjEsNTEg
KzEzMyw2IEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGUKICAgICBp
bnZhbGlkYXRlKCk7CiB9CiAKLXZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQot
eyAgICAKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJv
bml6ZVgoKTsKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplV2lk
dGgoKTsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAgICAgc3luY2hyb25pemVS
ZXN1bHQoKTsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShh
dHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVk
QXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpIHsKLSAgICAgICAg
c3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSGVp
Z2h0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnJlc3VsdEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVSZXN1bHQoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCiB2b2lk
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y2hpbGRyZW5DaGFuZ2VkKGJv
b2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdl
LCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxk
Q291bnREZWx0YSk7CkBAIC0yMDQsMTcgKzE3MSw2IEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGUKICAgICBmaWx0ZXJFZmZlY3QtPnNldEVmZmVjdEJvdW5kYXJpZXMo
ZWZmZWN0QkJveCk7CiB9CiAKLXZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKQotewotICAgIFNWR1N0eWxl
ZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgCi0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0
ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6cmVzdWx0QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotfQotCiBSZW5k
ZXJPYmplY3QqIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5l
dyAoYXJlbmEpIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKHRoaXMpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDggKzUxLDYgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZvaWQgZmlsbFBhc3NlZEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJik7CiAgICAgdmlydHVh
bCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2Rl
KiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50
RGVsdGEgPSAwKTsKIAogICAgIGlubGluZSB2b2lkIGludmFsaWRhdGUoKQpAQCAtNzMsMTIgKzcx
LDEzIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJ
c05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogCi0gICAgLy8gQW5pbWF0ZWQg
cHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkK
LSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQotICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIKFdpZHRoLCB3aWR0aCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQs
IGhlaWdodCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhSZXN1bHQsIHJlc3VsdCkKKyAg
ICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX0xFTkdUSChXaWR0aCwgd2lkdGgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVO
R1RIKEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhSZXN1
bHQsIHJlc3VsdCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9W
aWV3Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3
Qm94LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9W
aWV3Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDIwICsxMDQsNiBAQCBib29sIFNWR0Zp
dFRvVmlld0JveDo6cGFyc2VNYXBwZWRBdHRyaWJ1CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12
b2lkIFNWR0ZpdFRvVmlld0JveDo6c3luY2hyb25pemVQcm9wZXJ0aWVzKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplVmlld0JveCgpOwotICAgICAgICBzeW5jaHJvbml6ZVByZXNlcnZl
QXNwZWN0UmF0aW8oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6dmlld0JveEF0dHIpCi0gICAgICAgIHN5bmNocm9uaXplVmlld0JveCgp
OwotICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlv
QXR0cikKLSAgICAgICAgc3luY2hyb25pemVQcmVzZXJ2ZUFzcGVjdFJhdGlvKCk7Ci19Ci0KIGJv
b2wgU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQogewogICAgIHJldHVybiBhdHRyTmFtZSA9PSBTVkdOYW1lczo6dmlld0JveEF0
dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaAkocmV2aXNpb24gOTA0NTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDE0ICs0MywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShEb2N1
bWVudCosIEF0dHJpYnV0ZSopOwogICAgIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAgICAgdm9pZCBhZGRTdXBwb3J0ZWRBdHRyaWJ1dGVzKEhhc2hTZXQ8UXVh
bGlmaWVkTmFtZT4mKTsKLSAgICB2b2lkIHN5bmNocm9uaXplUHJvcGVydGllcyhjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld0JveEJhc2VWYWx1ZShjb25z
dCBGbG9hdFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFByZXNlcnZlQXNwZWN0UmF0
aW9CYXNlVmFsdWUoY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYpID0gMDsKIAotICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVZpZXdCb3goKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN5
bmNocm9uaXplUHJlc2VydmVBc3BlY3RSYXRpbygpID0gMDsKLQogcHJpdmF0ZToKICAgICBib29s
IHBhcnNlVmlld0JveChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYsIEZsb2F0UmVjdCYpOwogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw4ICszNiwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVk
IHByb3BlcnR5IGRlY2xhcmF0aW9ucwotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHRm9udEVs
ZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklO
RV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHRm9u
dEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJ
TkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR0ZvbnRFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZ
KGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHU3R5bGVkRWxlbWVudCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9Q
RVJUSUVTCiAKIGlubGluZSBTVkdGb250RWxlbWVudDo6U1ZHRm9udEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVk
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkgCkBAIC00NSw2ICs1MSw3IEBAIGlubGluZSBTVkdG
b250RWxlbWVudDo6U1ZHRm9udEVsZW1lbnQoY28KICAgICAsIG1faXNHbHlwaENhY2hlVmFsaWQo
ZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZvbnRUYWcpKTsKKyAg
ICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZvbnRFbGVtZW50KCk7CiB9CiAKIFBh
c3NSZWZQdHI8U1ZHRm9udEVsZW1lbnQ+IFNWR0ZvbnRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNTIsMTQgKzU5LDYg
QEAgUGFzc1JlZlB0cjxTVkdGb250RWxlbWVudD4gU1ZHRm9udEVsZW1lbgogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU1ZHRm9udEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9p
ZCBTVkdGb250RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKLXsKLSAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
KGF0dHJOYW1lKTsKLQotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpIHx8IFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAg
ICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLX0KLQogdm9pZCBTVkdG
b250RWxlbWVudDo6aW52YWxpZGF0ZUdseXBoQ2FjaGUoKQogewogICAgIGlmIChtX2lzR2x5cGhD
YWNoZVZhbGlkKSB7CkBAIC0yNTksMTcgKzI1OCw2IEBAIEdseXBoIFNWR0ZvbnRFbGVtZW50Ojpt
aXNzaW5nR2x5cGgoKQogICAgIHJldHVybiBtX21pc3NpbmdHbHlwaDsKIH0KIAotQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZvbnRFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0ZvbnRFbGVtZW50OjpmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZp
bGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpKTsKLX0KLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWR19GT05UUykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MywxOCArNzMs
MTQgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9ICAKLSAg
ICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmly
dHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKIAogICAgIHZvaWQgZW5zdXJlR2x5cGhDYWNoZSgpOwogICAgIHZvaWQgcmVnaXN0ZXJM
aWdhdHVyZXNJbkdseXBoQ2FjaGUoVmVjdG9yPFN0cmluZz4mKTsKIAotICAgIC8vIEFuaW1hdGVk
IHByb3BlcnR5IGRlY2xhcmF0aW9ucwotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdGb250RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9C
T09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogCiAgICAgS2VybmluZ1Bh
aXJWZWN0b3IgbV9ob3Jpem9udGFsS2VybmluZ1BhaXJzOwogICAgIEtlcm5pbmdQYWlyVmVjdG9y
IG1fdmVydGljYWxLZXJuaW5nUGFpcnM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQsMTMgKzM0LDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJv
cGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRm9yZWlnbk9iamVj
dEVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgo
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKLURFRklORV9B
TklNQVRFRF9MRU5HVEgoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0
dHIsIFdpZHRoLCB3aWR0aCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRm9yZWlnbk9iamVj
dEVsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdodCkKLURFRklORV9B
TklNQVRFRF9TVFJJTkcoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZB
dHRyLCBIcmVmLCBocmVmKQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHRm9yZWlnbk9iamVj
dEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RF
RklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdG
b3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQorICAgIERFRklORV9B
TklNQVRFRF9MRU5HVEgoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwg
WSwgeSkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50
LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0aCwgd2lkdGgpCisgICAgREVGSU5FX0FOSU1BVEVE
X0xFTkdUSChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhl
aWdodCwgaGVpZ2h0KQorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRm9yZWlnbk9iamVj
dEVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQorICAgIERFRklORV9B
TklNQVRFRF9CT09MRUFOKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKwor
QkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVu
dCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh4KQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkod2lkdGgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaGVp
Z2h0KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGhyZWYpCisgICAgUkVH
SVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkK
KyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhT
VkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdG
b3JlaWduT2JqZWN0RWxlbWVudDo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC01MCw2ICs2Miw3IEBAIGlu
bGluZSBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6U1ZHRm9yZWkKICAgICAsIG1faGVpZ2h0KExl
bmd0aE1vZGVIZWlnaHQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZvcmVp
Z25PYmplY3RUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZvcmVp
Z25PYmplY3RFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQ+IFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTM0LDc2ICsxNDcsNiBAQCB2b2lkIFNW
R0ZvcmVpZ25PYmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1CiAgICAgICAgIFJlbmRlclNWR1Jlc291
cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVyZXIp
OwogfQogCi12b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBh
bnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6
ZVkoKTsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhl
aWdodCgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsK
LSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewot
ICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0
eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OnhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
V2lkdGgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6aGVpZ2h0QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdU
ZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0
dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17ICAgIAotICAg
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9
IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmlt
YXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjpoZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0KIFJl
bmRlck9iamVjdCogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBS
ZW5kZXJTVkdGb3JlaWduT2JqZWN0KHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDI2ICs0NSwyNSBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIGNoaWxk
U2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OwogICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHls
ZSk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0Owog
Ci0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklN
QVRFRF9MRU5HVEgoWCwgeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQotICAg
IERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKLSAgICBERUNMQVJFX0FOSU1B
VEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAg
IERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCi0KLSAgICAvLyBTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgQkVHSU5f
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX0xFTkdUSChZLCB5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwg
d2lkdGgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisK
KyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVh
dHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rl
c3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVT
eXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEzICsz
MSwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRl
Y2xhcmF0aW9ucwotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHR0VsZW1lbnQsIFNWR05hbWVz
OjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9Q
RVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHR0VsZW1lbnQsIFNWR05hbWVz
OjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVS
VElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0dFbGVtZW50KQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBTVkdH
RWxlbWVudDo6U1ZHR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmdUYWcpKTsK
KyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0dFbGVtZW50KCk7CiB9CiAKIFBh
c3NSZWZQdHI8U1ZHR0VsZW1lbnQ+IFNWR0dFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtODksNDQgKzk3LDYgQEAgdm9p
ZCBTVkdHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjbwogICAgICAgICBSZW5kZXJTVkdS
ZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRl
cmVyKTsKIH0KIAotdm9pZCBTVkdHRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUo
KSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAg
ICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0g
ICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdUZXN0czo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9u
aXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIFNWR0dFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwOwotfQotCi12b2lkIFNWR0dFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKQotewotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsUGFzc2Vk
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKSk7
Ci19Ci0KIFJlbmRlck9iamVjdCogU1ZHR0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIC8vIFNWRyAxLjEgdGVzdHN1
aXRlIGV4cGxpY2l0ZWx5IHVzZXMgY29uc3RydWN0cyBsaWtlIDxnIGRpc3BsYXk9Im5vbmUiPjxs
aW5lYXJHcmFkaWVudD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCShyZXZpc2lvbiA5
MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MSwxNiArNTEsMTcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRB
dHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVBy
b3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgYm9v
bCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAKLSAgICAv
LyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHR0VsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9P
TEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAotICAgIC8vIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAvLyBT
VkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5j
aHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5j
aHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5n
dWFnZSh0aGlzKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOSwy
MCArMTI5LDYgQEAgc3RhdGljIGlubGluZSBmbG9hdCBwYXJzZVNWR0dseXBoQXR0cmlidQogICAg
IHJldHVybiB2YWx1ZS50b0Zsb2F0KCk7CiB9CiAKLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBTVkdHbHlwaEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHR2x5cGhFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
Ci0KLSAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZEF0dHIsIEFuaW1hdGVkUGF0aCk7Ci19Ci0KIFNWR0ds
eXBoIFNWR0dseXBoRWxlbWVudDo6YnVpbGRHZW5lcmljR2x5cGhJZGVudGlmaWVyKGNvbnN0IFNW
R0VsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgU1ZHR2x5cGggaWRlbnRpZmllcjsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0
Niw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHR2x5cGhFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCopOwogCisgICAgLy8gRklYTUU6IHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQgbWlzc2luZy4KICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDE4ICszOCwyOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVk
IHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHR3Jh
ZGllbnRFbGVtZW50LCBTVkdOYW1lczo6c3ByZWFkTWV0aG9kQXR0ciwgU3ByZWFkTWV0aG9kLCBz
cHJlYWRNZXRob2QsIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHU3ByZWFkTWV0aG9kVHlwZSkKLURF
RklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpn
cmFkaWVudFVuaXRzQXR0ciwgR3JhZGllbnRVbml0cywgZ3JhZGllbnRVbml0cywgU1ZHVW5pdFR5
cGVzOjpTVkdVbml0VHlwZSkKLURFRklORV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChTVkdHcmFk
aWVudEVsZW1lbnQsIFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIsIEdyYWRpZW50VHJh
bnNmb3JtLCBncmFkaWVudFRyYW5zZm9ybSkKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHR3Jh
ZGllbnRFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKLURFRklORV9B
TklNQVRFRF9CT09MRUFOKFNWR0dyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBE
RUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6
c3ByZWFkTWV0aG9kQXR0ciwgU3ByZWFkTWV0aG9kLCBzcHJlYWRNZXRob2QsIFNWR1NwcmVhZE1l
dGhvZFR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0dyYWRpZW50RWxl
bWVudCwgU1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRyLCBHcmFkaWVudFVuaXRzLCBncmFkaWVu
dFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQorICAgIERFRklORV9BTklNQVRFRF9U
UkFOU0ZPUk1fTElTVChTVkdHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpncmFkaWVudFRyYW5z
Zm9ybUF0dHIsIEdyYWRpZW50VHJhbnNmb3JtLCBncmFkaWVudFRyYW5zZm9ybSkKKyAgICBERUZJ
TkVfQU5JTUFURURfU1RSSU5HKFNWR0dyYWRpZW50RWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0
dHIsIEhyZWYsIGhyZWYpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHR3JhZGllbnRF
bGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5F
X0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdHcmFkaWVudEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkoc3ByZWFkTWV0aG9kKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGdy
YWRpZW50VW5pdHMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZ3JhZGll
bnRUcmFuc2Zvcm0pCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxl
ZEVsZW1lbnQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBTVkdHcmFkaWVu
dEVsZW1lbnQ6OlNWR0dyYWRpZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KQotICAgICwgbV9zcHJlYWRNZXRob2QoU1ZHX1NQUkVBRE1FVEhPRF9QQUQpCisgICAg
LCBtX3NwcmVhZE1ldGhvZChTVkdTcHJlYWRNZXRob2RQYWQpCiAgICAgLCBtX2dyYWRpZW50VW5p
dHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKQogeworICAg
IHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHR3JhZGllbnRFbGVtZW50KCk7CiB9CiAK
IGJvb2wgU1ZHR3JhZGllbnRFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKQEAgLTExNiw2MSArMTI3LDYgQEAgdm9pZCBTVkdHcmFkaWVu
dEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYQogICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9
IHJlbmRlcmVyKCkpCiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiB9Ci0K
LXZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplR3JhZGllbnRVbml0cygpOwotICAgICAgICBzeW5jaHJvbml6
ZUdyYWRpZW50VHJhbnNmb3JtKCk7Ci0gICAgICAgIHN5bmNocm9uaXplU3ByZWFkTWV0aG9kKCk7
Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAg
ICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25p
emVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
IWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6Z3JhZGllbnRVbml0c0F0dHIpIHsK
LSAgICAgICAgc3luY2hyb25pemVHcmFkaWVudFVuaXRzKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0
cikgewotICAgICAgICBzeW5jaHJvbml6ZUdyYWRpZW50VHJhbnNmb3JtKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwcmVhZE1ldGhv
ZEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVTcHJlYWRNZXRob2QoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdV
UklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplSHJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KLXZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKQotewotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0K
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNwcmVhZE1ldGhv
ZEF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6Z3JhZGllbnRVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24p
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Z3JhZGllbnRU
cmFuc2Zvcm1BdHRyLCBBbmltYXRlZFRyYW5zZm9ybUxpc3QpOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwot
fQogICAgIAogdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNo
YW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50
IGNoaWxkQ291bnREZWx0YSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVu
dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRF
bGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRp
ZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw1OSArMzMsMjcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdHcmFkaWVudEVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5
bGVkRWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZl
cmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCB7Ci1wdWJsaWM6Ci0gICAgZW51bSBTVkdTcHJlYWRNZXRob2RUeXBlIHsK
LSAgICAgICAgU1ZHX1NQUkVBRE1FVEhPRF9VTktOT1dOID0gMCwKLSAgICAgICAgU1ZHX1NQUkVB
RE1FVEhPRF9QQUQgICAgID0gMSwKLSAgICAgICAgU1ZHX1NQUkVBRE1FVEhPRF9SRUZMRUNUID0g
MiwKLSAgICAgICAgU1ZHX1NQUkVBRE1FVEhPRF9SRVBFQVQgID0gMwotICAgIH07Ci0KLSAgICBW
ZWN0b3I8R3JhZGllbnQ6OkNvbG9yU3RvcD4gYnVpbGRTdG9wcygpOwotIAotcHJvdGVjdGVkOgot
ICAgIFNWR0dyYWRpZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsK
LQotICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwot
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICB2
aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0g
ICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwotICAgIHZvaWQgZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwJik7Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIG5lZWRz
UGVuZGluZ1Jlc291cmNlSGFuZGxpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAg
dmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNl
LCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGls
ZENvdW50RGVsdGEgPSAwKTsKLQotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9u
cwotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oU3ByZWFkTWV0aG9kLCBzcHJlYWRN
ZXRob2QsIFNWR1NwcmVhZE1ldGhvZFR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJB
VElPTihHcmFkaWVudFVuaXRzLCBncmFkaWVudFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURfVFJBTlNGT1JNX0xJU1QoR3JhZGllbnRUcmFuc2Zv
cm0sIGdyYWRpZW50VHJhbnNmb3JtKQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVD
TEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK2VudW0gU1ZHU3ByZWFk
TWV0aG9kVHlwZSB7CisgICAgU1ZHU3ByZWFkTWV0aG9kVW5rbm93biA9IDAsCisgICAgU1ZHU3By
ZWFkTWV0aG9kUGFkLAorICAgIFNWR1NwcmVhZE1ldGhvZFJlZmxlY3QsCisgICAgU1ZHU3ByZWFk
TWV0aG9kUmVwZWF0CiB9OwogCiB0ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8
U1ZHR3JhZGllbnRFbGVtZW50OjpTVkdTcHJlYWRNZXRob2RUeXBlPiB7Ci0gICAgc3RhdGljIFNW
R0dyYWRpZW50RWxlbWVudDo6U1ZHU3ByZWFkTWV0aG9kVHlwZSBoaWdoZXN0RW51bVZhbHVlKCkg
eyByZXR1cm4gU1ZHR3JhZGllbnRFbGVtZW50OjpTVkdfU1BSRUFETUVUSE9EX1JFUEVBVDsgfQor
c3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1NwcmVhZE1ldGhvZFR5cGU+IHsKKyAgICBzdGF0
aWMgU1ZHU3ByZWFkTWV0aG9kVHlwZSBoaWdoZXN0RW51bVZhbHVlKCkgeyByZXR1cm4gU1ZHU3By
ZWFkTWV0aG9kUmVwZWF0OyB9CiAKLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFNWR0dyYWRp
ZW50RWxlbWVudDo6U1ZHU3ByZWFkTWV0aG9kVHlwZSB0eXBlKQorICAgIHN0YXRpYyBTdHJpbmcg
dG9TdHJpbmcoU1ZHU3ByZWFkTWV0aG9kVHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgc3dpdGNo
ICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgU1ZHR3JhZGllbnRFbGVtZW50OjpTVkdfU1BSRUFETUVU
SE9EX1VOS05PV046CisgICAgICAgIGNhc2UgU1ZHU3ByZWFkTWV0aG9kVW5rbm93bjoKICAgICAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgICAgICBjYXNlIFNWR0dyYWRpZW50RWxl
bWVudDo6U1ZHX1NQUkVBRE1FVEhPRF9QQUQ6CisgICAgICAgIGNhc2UgU1ZHU3ByZWFkTWV0aG9k
UGFkOgogICAgICAgICAgICAgcmV0dXJuICJwYWQiOwotICAgICAgICBjYXNlIFNWR0dyYWRpZW50
RWxlbWVudDo6U1ZHX1NQUkVBRE1FVEhPRF9SRUZMRUNUOgorICAgICAgICBjYXNlIFNWR1NwcmVh
ZE1ldGhvZFJlZmxlY3Q6CiAgICAgICAgICAgICByZXR1cm4gInJlZmxlY3QiOwotICAgICAgICBj
YXNlIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHX1NQUkVBRE1FVEhPRF9SRVBFQVQ6CisgICAgICAg
IGNhc2UgU1ZHU3ByZWFkTWV0aG9kUmVwZWF0OgogICAgICAgICAgICAgcmV0dXJuICJyZXBlYXQi
OwogICAgICAgICB9CiAKQEAgLTkzLDE4ICs2MSw1MiBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFp
dHM8U1ZHR3JhZGllbnRFbGVtCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0K
IAotICAgIHN0YXRpYyBTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR1NwcmVhZE1ldGhvZFR5cGUgZnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQorICAgIHN0YXRpYyBTVkdTcHJlYWRNZXRob2RU
eXBlIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICh2
YWx1ZSA9PSAicGFkIikKLSAgICAgICAgICAgIHJldHVybiBTVkdHcmFkaWVudEVsZW1lbnQ6OlNW
R19TUFJFQURNRVRIT0RfUEFEOworICAgICAgICAgICAgcmV0dXJuIFNWR1NwcmVhZE1ldGhvZFBh
ZDsKICAgICAgICAgaWYgKHZhbHVlID09ICJyZWZsZWN0IikKLSAgICAgICAgICAgIHJldHVybiBT
VkdHcmFkaWVudEVsZW1lbnQ6OlNWR19TUFJFQURNRVRIT0RfUkVGTEVDVDsKKyAgICAgICAgICAg
IHJldHVybiBTVkdTcHJlYWRNZXRob2RSZWZsZWN0OwogICAgICAgICBpZiAodmFsdWUgPT0gInJl
cGVhdCIpCi0gICAgICAgICAgICByZXR1cm4gU1ZHR3JhZGllbnRFbGVtZW50OjpTVkdfU1BSRUFE
TUVUSE9EX1JFUEVBVDsKLSAgICAgICAgcmV0dXJuIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHX1NQ
UkVBRE1FVEhPRF9VTktOT1dOOworICAgICAgICAgICAgcmV0dXJuIFNWR1NwcmVhZE1ldGhvZFJl
cGVhdDsKKyAgICAgICAgcmV0dXJuIFNWR1NwcmVhZE1ldGhvZFVua25vd247CiAgICAgfQogfTsK
IAorY2xhc3MgU1ZHR3JhZGllbnRFbGVtZW50IDogcHVibGljIFNWR1N0eWxlZEVsZW1lbnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQg
eworcHVibGljOgorICAgIGVudW0geworICAgICAgICBTVkdfU1BSRUFETUVUSE9EX1VOS05PV04g
PSBTVkdTcHJlYWRNZXRob2RVbmtub3duLAorICAgICAgICBTVkdfU1BSRUFETUVUSE9EX1BBRCA9
IFNWR1NwcmVhZE1ldGhvZFBhZCwKKyAgICAgICAgU1ZHX1NQUkVBRE1FVEhPRF9SRUZMRUNUID0g
U1ZHU3ByZWFkTWV0aG9kUmVmbGVjdCwKKyAgICAgICAgU1ZHX1NQUkVBRE1FVEhPRF9SRVBFQVQg
PSBTVkdTcHJlYWRNZXRob2RSZXBlYXQgCisgICAgfTsKKworICAgIFZlY3RvcjxHcmFkaWVudDo6
Q29sb3JTdG9wPiBidWlsZFN0b3BzKCk7CisgCitwcm90ZWN0ZWQ6CisgICAgU1ZHR3JhZGllbnRF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCisgICAgYm9vbCBpc1N1
cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lk
IHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOworICAgIHZpcnR1YWwgdm9pZCBzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKworcHJpdmF0ZToKKyAgICB2
aXJ0dWFsIGJvb2wgbmVlZHNQZW5kaW5nUmVzb3VyY2VIYW5kbGluZygpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdl
ZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hh
bmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOworCisgICAgQkVHSU5fREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR0dyYWRpZW50RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9FTlVNRVJBVElPTihTcHJlYWRNZXRob2QsIHNwcmVhZE1ldGhvZCwgU1ZHU3ByZWFk
TWV0aG9kVHlwZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihHcmFkaWVu
dFVuaXRzLCBncmFkaWVudFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKEdyYWRpZW50VHJhbnNmb3JtLCBncmFk
aWVudFRyYW5zZm9ybSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJl
ZikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVElFUworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNCArMzYsMjcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0xF
TkdUSChTVkdJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKLURFRklORV9BTklN
QVRFRF9MRU5HVEgoU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCi1ERUZJ
TkVfQU5JTUFURURfTEVOR1RIKFNWR0ltYWdlRWxlbWVudCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwg
V2lkdGgsIHdpZHRoKQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdJbWFnZUVsZW1lbnQsIFNW
R05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdodCkKLURFRklORV9BTklNQVRFRF9QUkVT
RVJWRUFTUEVDVFJBVElPKFNWR0ltYWdlRWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0
UmF0aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQotREVG
SU5FX0FOSU1BVEVEX1NUUklORyhTVkdJbWFnZUVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRy
LCBIcmVmLCBocmVmKQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHSW1hZ2VFbGVtZW50LCBT
VkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFU
RURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHSW1hZ2VFbGVtZW50
LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdJ
bWFnZUVsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKKyAgICBERUZJTkVfQU5JTUFURURf
TEVOR1RIKFNWR0ltYWdlRWxlbWVudCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgV2lkdGgsIHdpZHRo
KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6
aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQpCisgICAgREVGSU5FX0FOSU1BVEVEX1BSRVNFUlZF
QVNQRUNUUkFUSU8oU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRp
b0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgREVG
SU5FX0FOSU1BVEVEX1NUUklORyhTVkdJbWFnZUVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRy
LCBIcmVmLCBocmVmKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0ltYWdlRWxlbWVu
dCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorRU5EX0RFRklORV9BTklN
QVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZH
SW1hZ2VFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeSkKKyAgICBSRUdJU1RFUl9MT0NB
TF9BTklNQVRFRF9QUk9QRVJUWSh3aWR0aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWShoZWlnaHQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocHJl
c2VydmVBc3BlY3RSYXRpbykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSho
cmVmKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwog
CiBpbmxpbmUgU1ZHSW1hZ2VFbGVtZW50OjpTVkdJbWFnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC01NCw2ICs2Nyw3IEBAIGlubGlu
ZSBTVkdJbWFnZUVsZW1lbnQ6OlNWR0ltYWdlRWxlbWVudCgKICAgICAsIG1faW1hZ2VMb2FkZXIo
dGhpcykKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6aW1hZ2VUYWcpKTsKKyAg
ICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ltYWdlRWxlbWVudCgpOwogfQogCiBQ
YXNzUmVmUHRyPFNWR0ltYWdlRWxlbWVudD4gU1ZHSW1hZ2VFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTczLDg4ICsx
ODcsNiBAQCB2b2lkIFNWR0ltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRy
TmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBz
eW5jaHJvbml6ZVkoKTsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICBzeW5j
aHJvbml6ZUhlaWdodCgpOwotICAgICAgICBzeW5jaHJvbml6ZVByZXNlcnZlQXNwZWN0UmF0aW8o
KTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAg
ICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9w
ZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAg
ICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0
ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjp4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVdpZHRo
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmhlaWdodEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cHJlc2VydmVB
c3BlY3RSYXRpb0F0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVQcmVzZXJ2ZUFzcGVjdFJhdGlv
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hy
b25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAg
U1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ltYWdlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4g
c19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdJbWFnZUVsZW1lbnQ6
OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFu
aW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8p
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0
ciwgQW5pbWF0ZWRTdHJpbmcpOwotfQotCiBib29sIFNWR0ltYWdlRWxlbWVudDo6c2VsZkhhc1Jl
bGF0aXZlTGVuZ3RocygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHgoKS5pc1JlbGF0aXZlKCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw5ICs1MSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNo
KCk7CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CkBAIC02OCwxOCAr
NjUsMjAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3Ro
cygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgp
OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9B
TklNQVRFRF9MRU5HVEgoWCwgeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQot
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKLSAgICBERUNMQVJFX0FO
SU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX1BSRVNF
UlZFQVNQRUNUUkFUSU8oUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykK
LQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhy
ZWYsIGhyZWYpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVD
TEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR0ltYWdlRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSChIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFT
UEVDVFJBVElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKKworICAg
IC8vIFNWR1Rlc3RzCisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJl
cygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6
OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3Rl
bUxhbmd1YWdlKHRoaXMpOyB9CiAKICAgICBTVkdJbWFnZUxvYWRlciBtX2ltYWdlTG9hZGVyOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMywxMiArMzMsMjMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmlt
YXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5l
RWxlbWVudCwgU1ZHTmFtZXM6OngxQXR0ciwgWDEsIHgxKQotREVGSU5FX0FOSU1BVEVEX0xFTkdU
SChTVkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6OnkxQXR0ciwgWTEsIHkxKQotREVGSU5FX0FOSU1B
VEVEX0xFTkdUSChTVkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6OngyQXR0ciwgWDIsIHgyKQotREVG
SU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6OnkyQXR0ciwgWTIs
IHkyKQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHTGluZUVsZW1lbnQsIFNWR05hbWVzOjpl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwg
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJU
SUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6
OngxQXR0ciwgWDEsIHgxKQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZUVsZW1l
bnQsIFNWR05hbWVzOjp5MUF0dHIsIFkxLCB5MSkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RI
KFNWR0xpbmVFbGVtZW50LCBTVkdOYW1lczo6eDJBdHRyLCBYMiwgeDIpCisgICAgREVGSU5FX0FO
SU1BVEVEX0xFTkdUSChTVkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6OnkyQXR0ciwgWTIsIHkyKQor
ICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0xpbmVFbGVtZW50LCBTVkdOYW1lczo6ZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMK
KworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdMaW5lRWxlbWVudCkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh4MSkKKyAgICBSRUdJU1RFUl9MT0NB
TF9BTklNQVRFRF9QUk9QRVJUWSh5MSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWSh4MikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5MikKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNW
R0xpbmVFbGVtZW50OjpTVkdMaW5lRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTQ4LDYgKzU5LDcgQEAgaW5saW5lIFNWR0xpbmVFbGVt
ZW50OjpTVkdMaW5lRWxlbWVudChjbwogICAgICwgbV95MihMZW5ndGhNb2RlSGVpZ2h0KQogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpsaW5lVGFnKSk7CisgICAgcmVnaXN0ZXJB
bmltYXRlZFByb3BlcnRpZXNGb3JTVkdMaW5lRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNW
R0xpbmVFbGVtZW50PiBTVkdMaW5lRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTE0NSw3NCArMTU3LDYgQEAgdm9pZCBT
VkdMaW5lRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCi12b2lkIFNWR0xpbmVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFt
ZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWDEoKTsKLSAgICAgICAgc3luY2hyb25pemVZMSgp
OwotICAgICAgICBzeW5jaHJvbml6ZVgyKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWTIoKTsKLSAg
ICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNW
R1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFt
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmli
dXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6
c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OngxQXR0cikgewotICAgICAgICBzeW5jaHJv
bml6ZVgxKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnkxQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVkxKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OngyQXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZVgyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnkyQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVky
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hy
b25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAg
ICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdMaW5lRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1
cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdMaW5lRWxlbWVu
dDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
Ojp4MUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OnkxQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eDJBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5MkF0dHIsIEFuaW1h
dGVkTGVuZ3RoKTsKLX0KLQogdm9pZCBTVkdMaW5lRWxlbWVudDo6dG9QYXRoRGF0YShQYXRoJiBw
YXRoKSBjb25zdAogewogICAgIEFTU0VSVChwYXRoLmlzRW1wdHkoKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGluZUVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGluZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsOSArNDcsNiBAQCBw
cml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNv
bnN0OwogCkBAIC01NywxNCArNTQsMTggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBz
ZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0
eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYMSwgeDEpCi0gICAg
REVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWTEsIHkxKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVO
R1RIKFgyLCB4MikKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZMiwgeTIpCi0KLSAgICAv
LyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09M
RUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQp
CisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0xpbmVFbGVtZW50KQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYMSwgeDEpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKFkxLCB5MSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgo
WDIsIHgyKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZMiwgeTIpCisgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJ
RVMKKworICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWly
ZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh0aGlz
KTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsg
U1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKHRoaXMpOyB9CisgICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTEgKzQwLDIwIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURF
RklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6
eDFBdHRyLCBYMSwgeDEpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0xpbmVhckdyYWRpZW50
RWxlbWVudCwgU1ZHTmFtZXM6OnkxQXR0ciwgWTEsIHkxKQotREVGSU5FX0FOSU1BVEVEX0xFTkdU
SChTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjp4MkF0dHIsIFgyLCB4MikKLURF
RklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6
eTJBdHRyLCBZMiwgeTIpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERF
RklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6
eDFBdHRyLCBYMSwgeDEpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQsIFNWR05hbWVzOjp5MUF0dHIsIFkxLCB5MSkKKyAgICBERUZJTkVfQU5JTUFU
RURfTEVOR1RIKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OngyQXR0ciwgWDIs
IHgyKQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
LCBTVkdOYW1lczo6eTJBdHRyLCBZMiwgeTIpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJ
RVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeDEpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeTEpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoeDIpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkoeTIpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHR3JhZGll
bnRFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNW
R0xpbmVhckdyYWRpZW50RWxlbWVudDo6U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0dyYWRp
ZW50RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTU1LDYgKzY0LDcgQEAgaW5saW5lIFNW
R0xpbmVhckdyYWRpZW50RWxlbWVudDo6U1ZHTGluZQogewogICAgIC8vIFNwZWM6IElmIHRoZSB4
MiBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVl
IG9mICIxMDAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1l
czo6bGluZWFyR3JhZGllbnRUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0Zv
clNWR0xpbmVhckdyYWRpZW50RWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0xpbmVhckdy
YWRpZW50RWxlbWVudD4gU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTE5LDYyICsxMjks
NiBAQCB2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmliCiAgICAgICAgIG9i
amVjdC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiB9CiAKLXZvaWQgU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQoteyAgICAKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5j
aHJvbml6ZVgxKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWTEoKTsKLSAgICAgICAgc3luY2hyb25p
emVYMigpOwotICAgICAgICBzeW5jaHJvbml6ZVkyKCk7Ci0gICAgICAgIFNWR0dyYWRpZW50RWxl
bWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAg
ICBTVkdHcmFkaWVudEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfSAgIAotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4
MUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYMSgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5MUF0dHIpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVZMSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjp4MkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYMigpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5MkF0dHIp
IHsKLSAgICAgICAgc3luY2hyb25pemVZMigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkK
LXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBz
X2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Ojpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdHcmFkaWVudEVsZW1lbnQ6OmZpbGxQYXNzZWRB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4MUF0dHIsIEFuaW1h
dGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OnkxQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6eDJBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5MkF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLX0K
LQogUmVuZGVyT2JqZWN0KiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFy
ZW5hKSBSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50KHRoaXMpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAkocmV2aXNpb24gOTA0
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDE5ICs0MiwxNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBw
b3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5
bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVy
U3R5bGUqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29u
c3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJF
X0FOSU1BVEVEX0xFTkdUSChYMSwgeDEpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWTEs
IHkxKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgyLCB4MikKLSAgICBERUNMQVJFX0FO
SU1BVEVEX0xFTkdUSChZMiwgeTIpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEgoWDEsIHgxKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZMSwgeTEpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgyLCB4MikKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9MRU5HVEgoWTIsIHkyKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJ
RVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNUGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdNUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxNCArMjgsMjEgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9u
cwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdNUGF0aEVsZW1lbnQsIFhMaW5rTmFtZXM6Omhy
ZWZBdHRyLCBIcmVmLCBocmVmKQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHTVBhdGhFbGVt
ZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVf
QU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHTVBhdGhF
bGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKKyAgICBERUZJTkVfQU5J
TUFURURfQk9PTEVBTihTVkdNUGF0aEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJ
U1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR01QYXRoRWxlbWVudCkKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShocmVmKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVE
X1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfUkVHSVNURVJfQU5JTUFU
RURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHTVBhdGhFbGVtZW50OjpTVkdNUGF0aEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDog
U1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShT
VkdOYW1lczo6bXBhdGhUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNW
R01QYXRoRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR01QYXRoRWxlbWVudD4gU1ZHTVBh
dGhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQpAQCAtNjgsNDEgKzc1LDYgQEAgdm9pZCBTVkdNUGF0aEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR01Q
YXRoRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5j
aHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgc3luY2hyb25pemVI
cmVmKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0
cmlidXRlKGF0dHJOYW1lKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIFNWR01QYXRoRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQot
ewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNf
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdNUGF0aEVsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KS5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQogU1ZHUGF0
aEVsZW1lbnQqIFNWR01QYXRoRWxlbWVudDo6cGF0aEVsZW1lbnQoKQogewogICAgIEVsZW1lbnQq
IHRhcmdldCA9IHRyZWVTY29wZSgpLT5nZXRFbGVtZW50QnlJZChnZXRUYXJnZXQoaHJlZigpKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDQsMTcgKzQ0LDExIEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IHN2Z0F0dHJpYnV0ZUNo
YW5nZWQgbWlzc2luZy4KICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRp
b25zCi0KLSAgICAvLyBTVkdVUklSZWZlcmVuY2UKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklO
RyhIcmVmLCBocmVmKQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAg
IERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdNUGF0aEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhy
ZWYsIGhyZWYpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9ERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMywxNiArMzMsNDUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRl
ZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXJrZXJF
bGVtZW50LCBTVkdOYW1lczo6cmVmWEF0dHIsIFJlZlgsIHJlZlgpCi1ERUZJTkVfQU5JTUFURURf
TEVOR1RIKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjpyZWZZQXR0ciwgUmVmWSwgcmVmWSkK
LURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6Om1hcmtl
cldpZHRoQXR0ciwgTWFya2VyV2lkdGgsIG1hcmtlcldpZHRoKQotREVGSU5FX0FOSU1BVEVEX0xF
TkdUSChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6bWFya2VySGVpZ2h0QXR0ciwgTWFya2Vy
SGVpZ2h0LCBtYXJrZXJIZWlnaHQpCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHTWFy
a2VyRWxlbWVudCwgU1ZHTmFtZXM6Om1hcmtlclVuaXRzQXR0ciwgTWFya2VyVW5pdHMsIG1hcmtl
clVuaXRzLCBTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJVbml0c1R5cGUpCi1ERUZJTkVfQU5J
TUFURURfQU5HTEVfTVVMVElQTEVfV1JBUFBFUlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6
Om9yaWVudEF0dHIsIG9yaWVudEFuZ2xlSWRlbnRpZmllcigpLCBPcmllbnRBbmdsZSwgb3JpZW50
QW5nbGUpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1l
czo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi1ERUZJTkVfQU5JTUFURURfUkVDVChTVkdN
YXJrZXJFbGVtZW50LCBTVkdOYW1lczo6dmlld0JveEF0dHIsIFZpZXdCb3gsIHZpZXdCb3gpCi1E
RUZJTkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhTVkdNYXJrZXJFbGVtZW50LCBTVkdO
YW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNl
cnZlQXNwZWN0UmF0aW8pCisvLyBEZWZpbmUgY3VzdG9tIGFuaW1hdGVkIHByb3BlcnR5ICdvcmll
bnRUeXBlJy4KK2NvbnN0IFNWR1Byb3BlcnR5SW5mbyogU1ZHTWFya2VyRWxlbWVudDo6b3JpZW50
VHlwZVByb3BlcnR5SW5mbygpCit7CisgICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyog
c19wcm9wZXJ0eUluZm8gPSAwOworICAgIGlmICghc19wcm9wZXJ0eUluZm8pIHsKKyAgICAgICAg
c19wcm9wZXJ0eUluZm8gPSBuZXcgU1ZHUHJvcGVydHlJbmZvKEFuaW1hdGVkRW51bWVyYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6
b3JpZW50QXR0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9yaWVudFR5cGVJZGVudGlmaWVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmU1ZHTWFya2VyRWxlbWVudDo6c3luY2hyb25pemVPcmllbnRUeXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNWR01hcmtlckVs
ZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlT3JpZW50VHlwZVdyYXBwZXIpOworICAgIH0KKyAgICByZXR1
cm4gc19wcm9wZXJ0eUluZm87Cit9CisKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVT
CisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6
cmVmWEF0dHIsIFJlZlgsIHJlZlgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXJr
ZXJFbGVtZW50LCBTVkdOYW1lczo6cmVmWUF0dHIsIFJlZlksIHJlZlkpCisgICAgREVGSU5FX0FO
SU1BVEVEX0xFTkdUSChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6bWFya2VyV2lkdGhBdHRy
LCBNYXJrZXJXaWR0aCwgbWFya2VyV2lkdGgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChT
VkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6bWFya2VySGVpZ2h0QXR0ciwgTWFya2VySGVpZ2h0
LCBtYXJrZXJIZWlnaHQpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR01hcmtl
ckVsZW1lbnQsIFNWR05hbWVzOjptYXJrZXJVbml0c0F0dHIsIE1hcmtlclVuaXRzLCBtYXJrZXJV
bml0cywgU1ZHTWFya2VyVW5pdHNUeXBlKQorICAgIERFRklORV9BTklNQVRFRF9BTkdMRV9NVUxU
SVBMRV9XUkFQUEVSUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6b3JpZW50QXR0ciwgb3Jp
ZW50QW5nbGVJZGVudGlmaWVyKCksIE9yaWVudEFuZ2xlLCBvcmllbnRBbmdsZSkKKyAgICBERUZJ
TkVfQU5JTUFURURfQk9PTEVBTihTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCisgICAgREVGSU5FX0FOSU1BVEVEX1JFQ1QoU1ZHTWFya2VyRWxl
bWVudCwgU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBWaWV3Qm94LCB2aWV3Qm94KQorICAgIERFRklO
RV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVz
OjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVB
c3BlY3RSYXRpbykKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJ
U1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR01hcmtlckVsZW1lbnQpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkocmVmWCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShyZWZZKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKG1h
cmtlcldpZHRoKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKG1hcmtlckhl
aWdodCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShtYXJrZXJVbml0cykK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShvcmllbnRBbmdsZSkKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShvcmllbnRUeXBlKQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkodmlld0JveCkKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgIFJFR0lTVEVS
X1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVsZW1lbnQpCitFTkRfUkVHSVNU
RVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHTWFya2VyRWxlbWVudDo6U1ZHTWFy
a2VyRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQpAQCAtNTAsMTEg
Kzc5LDEyIEBAIGlubGluZSBTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJFbGVtZW4KICAgICAs
IG1fcmVmWShMZW5ndGhNb2RlSGVpZ2h0KQogICAgICwgbV9tYXJrZXJXaWR0aChMZW5ndGhNb2Rl
V2lkdGgsICIzIikKICAgICAsIG1fbWFya2VySGVpZ2h0KExlbmd0aE1vZGVIZWlnaHQsICIzIikg
Ci0gICAgLCBtX21hcmtlclVuaXRzKFNWR19NQVJLRVJVTklUU19TVFJPS0VXSURUSCkKLSAgICAs
IG1fb3JpZW50VHlwZShTVkdfTUFSS0VSX09SSUVOVF9BTkdMRSkKKyAgICAsIG1fbWFya2VyVW5p
dHMoTWFya2VyVW5pdHNTdHJva2VXaWR0aCkKKyAgICAsIG1fb3JpZW50VHlwZShNYXJrZXJPcmll
bnRBbmdsZSkKIHsKICAgICAvLyBTcGVjOiBJZiB0aGUgbWFya2VyV2lkdGgvbWFya2VySGVpZ2h0
IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUg
b2YgIjMiIHdlcmUgc3BlY2lmaWVkLgogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpt
YXJrZXJUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR01hcmtlckVs
ZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdNYXJrZXJFbGVtZW50PiBTVkdNYXJrZXJFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQpAQCAtMTMzLDEwICsxNjMsMTAgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYgogCiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6b3JpZW50QXR0
cikgewogICAgICAgICBTVkdBbmdsZSBhbmdsZTsKLSAgICAgICAgU1ZHTWFya2VyT3JpZW50VHlw
ZSBvcmllbnRUeXBlID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT46OmZy
b21TdHJpbmcodmFsdWUsIGFuZ2xlKTsKKyAgICAgICAgTWFya2VyT3JpZW50VHlwZSBvcmllbnRU
eXBlID0gU1ZHUHJvcGVydHlUcmFpdHM8TWFya2VyT3JpZW50VHlwZT46OmZyb21TdHJpbmcodmFs
dWUsIGFuZ2xlKTsKICAgICAgICAgaWYgKG9yaWVudFR5cGUgPiAwKQogICAgICAgICAgICAgc2V0
T3JpZW50VHlwZUJhc2VWYWx1ZShvcmllbnRUeXBlKTsKLSAgICAgICAgaWYgKG9yaWVudFR5cGUg
PT0gU1ZHX01BUktFUl9PUklFTlRfQU5HTEUpCisgICAgICAgIGlmIChvcmllbnRUeXBlID09IE1h
cmtlck9yaWVudEFuZ2xlKQogICAgICAgICAgICAgc2V0T3JpZW50QW5nbGVCYXNlVmFsdWUoYW5n
bGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTcwLDkxICsyMDAsNiBAQCB2b2lkIFNW
R01hcmtlckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nCiAgICAgICAgIG9iamVjdC0+c2V0TmVl
ZHNMYXlvdXQodHJ1ZSk7CiB9CiAKLXZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c3luY2hyb25pemVQ
cm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5h
bWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZU1hcmtlclVuaXRzKCk7Ci0g
ICAgICAgIHN5bmNocm9uaXplUmVmWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVJlZlkoKTsKLSAg
ICAgICAgc3luY2hyb25pemVNYXJrZXJXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZU1hcmtl
ckhlaWdodCgpOwotICAgICAgICBzeW5jaHJvbml6ZU9yaWVudEFuZ2xlKCk7Ci0gICAgICAgIHN5
bmNocm9uaXplT3JpZW50VHlwZSgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHRml0VG9WaWV3Qm94OjpzeW5jaHJvbml6ZVByb3Bl
cnRpZXMoYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjptYXJrZXJVbml0c0F0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVNYXJrZXJVbml0cygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpyZWZYQXR0cikgewotICAgICAgICBzeW5jaHJv
bml6ZVJlZlgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6cmVmWUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVSZWZZKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1hcmtl
cldpZHRoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZU1hcmtlcldpZHRoKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1hcmtlckhl
aWdodEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVNYXJrZXJIZWlnaHQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6b3JpZW50QXR0
cikgewotICAgICAgICBzeW5jaHJvbml6ZU9yaWVudEFuZ2xlKCk7Ci0gICAgICAgIHN5bmNocm9u
aXplT3JpZW50VHlwZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRml0VG9WaWV3Qm94OjpzeW5jaHJvbml6ZVByb3Bl
cnRpZXMoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdNYXJrZXJF
bGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwot
fQotCi12b2lkIFNWR01hcmtlckVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNW
R1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjpyZWZYQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cmVmWUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om1hcmtlcldpZHRo
QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6bWFya2VySGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6bWFya2VyVW5pdHNBdHRyLCBBbmlt
YXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6Om9yaWVudEF0dHIsIEFuaW1hdGVkQW5nbGUpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6dmlld0JveEF0dHIsIEFuaW1hdGVkUmVjdCk7Ci19Ci0K
IHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFy
c2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3Vu
dERlbHRhKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2Vk
QnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkBA
IC0yNjgsMjAgKzIxMywyNiBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdl
ZChiCiAKIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50VG9BdXRvKCkKIHsKLSAgICBz
ZXRPcmllbnRUeXBlQmFzZVZhbHVlKFNWR19NQVJLRVJfT1JJRU5UX0FVVE8pOworICAgIHNldE9y
aWVudFR5cGVCYXNlVmFsdWUoTWFya2VyT3JpZW50QXV0byk7CiAgICAgc2V0T3JpZW50QW5nbGVC
YXNlVmFsdWUoU1ZHQW5nbGUoKSk7CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBy
ZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOworICAgIC8v
IE1hcmsgb3JpZW50QXR0ciBkaXJ0eSAtIHRoZSBuZXh0IFhNTCBET00gYWNjZXNzIG9mIHRoYXQg
YXR0cmlidXRlIGtpY2tzIGluIHN5bmNocm9uaXphdGlvbi4KKyAgICBtX29yaWVudEFuZ2xlLnNo
b3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKKyAgICBtX29yaWVudFR5cGUuc2hvdWxkU3luY2hyb25p
emUgPSB0cnVlOworICAgIGludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7CisgICAgc3ZnQXR0cmli
dXRlQ2hhbmdlZChvcmllbnRBbmdsZVByb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lKTsKIH0K
IAogdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnRUb0FuZ2xlKGNvbnN0IFNWR0FuZ2xl
JiBhbmdsZSkKIHsKLSAgICBzZXRPcmllbnRUeXBlQmFzZVZhbHVlKFNWR19NQVJLRVJfT1JJRU5U
X0FOR0xFKTsKKyAgICBzZXRPcmllbnRUeXBlQmFzZVZhbHVlKE1hcmtlck9yaWVudEFuZ2xlKTsK
ICAgICBzZXRPcmllbnRBbmdsZUJhc2VWYWx1ZShhbmdsZSk7CiAKLSAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0
KHRydWUpOworICAgIC8vIE1hcmsgb3JpZW50QXR0ciBkaXJ0eSAtIHRoZSBuZXh0IFhNTCBET00g
YWNjZXNzIG9mIHRoYXQgYXR0cmlidXRlIGtpY2tzIGluIHN5bmNocm9uaXphdGlvbi4KKyAgICBt
X29yaWVudEFuZ2xlLnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKKyAgICBtX29yaWVudFR5cGUu
c2hvdWxkU3luY2hyb25pemUgPSB0cnVlOworICAgIGludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7
CisgICAgc3ZnQXR0cmlidXRlQ2hhbmdlZChvcmllbnRBbmdsZVByb3BlcnR5SW5mbygpLT5hdHRy
aWJ1dGVOYW1lKTsKIH0KIAogUmVuZGVyT2JqZWN0KiBTVkdNYXJrZXJFbGVtZW50OjpjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKQEAgLTI5NywyNCArMjQ4
LDM0IEBAIGJvb2wgU1ZHTWFya2VyRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGUKICAgICAgICAg
fHwgbWFya2VySGVpZ2h0KCkuaXNSZWxhdGl2ZSgpOwogfQogCi12b2lkIFNWR01hcmtlckVsZW1l
bnQ6OnN5bmNocm9uaXplT3JpZW50VHlwZSgpCit2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnN5bmNo
cm9uaXplT3JpZW50VHlwZSh2b2lkKiBjb250ZXh0RWxlbWVudCkKIHsKLSAgICBpZiAoIW1fb3Jp
ZW50VHlwZS5zaG91bGRTeW5jaHJvbml6ZSkKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwor
ICAgIFNWR01hcmtlckVsZW1lbnQqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR01hcmtlckVs
ZW1lbnQqPihjb250ZXh0RWxlbWVudCk7CisgICAgaWYgKCFvd25lclR5cGUtPm1fb3JpZW50VHlw
ZS5zaG91bGRTeW5jaHJvbml6ZSkKICAgICAgICAgcmV0dXJuOwotICAgIAorICAgCiAgICAgQXRv
bWljU3RyaW5nIHZhbHVlOwotICAgIGlmIChtX29yaWVudFR5cGUudmFsdWUgPT0gU1ZHX01BUktF
Ul9PUklFTlRfQVVUTykKKyAgICBpZiAob3duZXJUeXBlLT5tX29yaWVudFR5cGUudmFsdWUgPT0g
TWFya2VyT3JpZW50QXV0bykKICAgICAgICAgdmFsdWUgPSAiYXV0byI7Ci0gICAgZWxzZSBpZiAo
bV9vcmllbnRUeXBlLnZhbHVlID09IFNWR19NQVJLRVJfT1JJRU5UX0FOR0xFKQotICAgICAgICB2
YWx1ZSA9IG9yaWVudEFuZ2xlKCkudmFsdWVBc1N0cmluZygpOworICAgIGVsc2UgaWYgKG93bmVy
VHlwZS0+bV9vcmllbnRUeXBlLnZhbHVlID09IE1hcmtlck9yaWVudEFuZ2xlKQorICAgICAgICB2
YWx1ZSA9IG93bmVyVHlwZS0+bV9vcmllbnRBbmdsZS52YWx1ZS52YWx1ZUFzU3RyaW5nKCk7CiAK
LSAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPHRydWU+OjpzeW5jaHJvbml6ZSh0
aGlzLCBTVkdOYW1lczo6b3JpZW50QXR0ciwgdmFsdWUpOworICAgIFNWR0FuaW1hdGVkUHJvcGVy
dHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5bmNocm9uaXplKG93bmVyVHlwZSwgb3JpZW50VHlwZVBy
b3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lLCB2YWx1ZSk7Cit9CisKK1Bhc3NSZWZQdHI8U1ZH
QW5pbWF0ZWRQcm9wZXJ0eT4gU1ZHTWFya2VyRWxlbWVudDo6bG9va3VwT3JDcmVhdGVPcmllbnRU
eXBlV3JhcHBlcih2b2lkKiBjb250ZXh0RWxlbWVudCkKK3sKKyAgICBBU1NFUlQoY29udGV4dEVs
ZW1lbnQpOworICAgIFNWR01hcmtlckVsZW1lbnQqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNW
R01hcmtlckVsZW1lbnQqPihjb250ZXh0RWxlbWVudCk7CisgICAgcmV0dXJuIFNWR0FuaW1hdGVk
UHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdNYXJrZXJFbGVtZW50LCBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmPE1hcmtlck9yaWVudFR5cGU+LCBNYXJrZXJP
cmllbnRUeXBlLCB0cnVlPgorICAgICAgICAgICAob3duZXJUeXBlLCBvcmllbnRUeXBlUHJvcGVy
dHlJbmZvKCksIG93bmVyVHlwZS0+bV9vcmllbnRUeXBlLnZhbHVlKTsKIH0KIAotUGFzc1JlZlB0
cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmPFNWR01hcmtlckVsZW1lbnQ6
OlNWR01hcmtlck9yaWVudFR5cGU+ID4gU1ZHTWFya2VyRWxlbWVudDo6b3JpZW50VHlwZUFuaW1h
dGVkKCkKK1Bhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZjxN
YXJrZXJPcmllbnRUeXBlPiA+IFNWR01hcmtlckVsZW1lbnQ6Om9yaWVudFR5cGVBbmltYXRlZCgp
CiB7CiAgICAgbV9vcmllbnRUeXBlLnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKLSAgICByZXR1
cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR0FuaW1hdGVk
RW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY8U1ZHTWFya2VyT3JpZW50VHlwZT4sIFNWR01hcmtl
ck9yaWVudFR5cGU+KHRoaXMsIFNWR05hbWVzOjpvcmllbnRBdHRyLCBvcmllbnRUeXBlSWRlbnRp
ZmllcigpLCBtX29yaWVudFR5cGUudmFsdWUpOworICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9j
YXN0PFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY8TWFya2VyT3JpZW50VHlw
ZT4gPihsb29rdXBPckNyZWF0ZU9yaWVudFR5cGVXcmFwcGVyKHRoaXMpKTsKIH0KIAogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDIxICszNSw4MSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2VudW0gU1ZHTWFya2Vy
VW5pdHNUeXBlIHsKKyAgICBNYXJrZXJVbml0c1Vua25vd24gPSAwLAorICAgIE1hcmtlclVuaXRz
VXNlclNwYWNlT25Vc2UsCisgICAgTWFya2VyVW5pdHNTdHJva2VXaWR0aAorfTsKKworZW51bSBN
YXJrZXJPcmllbnRUeXBlIHsKKyAgICBNYXJrZXJPcmllbnRVbmtub3duID0gMCwKKyAgICBNYXJr
ZXJPcmllbnRBdXRvLAorICAgIE1hcmtlck9yaWVudEFuZ2xlCit9OworCit0ZW1wbGF0ZTw+Citz
dHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyVW5pdHNUeXBlPiB7CisgICAgc3RhdGlj
IFNWR01hcmtlclVuaXRzVHlwZSBoaWdoZXN0RW51bVZhbHVlKCkgeyByZXR1cm4gTWFya2VyVW5p
dHNTdHJva2VXaWR0aDsgfQorCisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhTVkdNYXJrZXJV
bml0c1R5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBj
YXNlIE1hcmtlclVuaXRzVW5rbm93bjoKKyAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OworICAgICAgICBjYXNlIE1hcmtlclVuaXRzVXNlclNwYWNlT25Vc2U6CisgICAgICAgICAgICBy
ZXR1cm4gInVzZXJTcGFjZU9uVXNlIjsKKyAgICAgICAgY2FzZSBNYXJrZXJVbml0c1N0cm9rZVdp
ZHRoOgorICAgICAgICAgICAgcmV0dXJuICJzdHJva2VXaWR0aCI7CisgICAgICAgIH0KKworICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CisgICAgfQorCisgICAgc3RhdGljIFNWR01hcmtlclVuaXRzVHlwZSBmcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYgdmFsdWUpCisgICAgeworICAgICAgICBpZiAodmFsdWUgPT0gInVzZXJTcGFjZU9u
VXNlIikKKyAgICAgICAgICAgIHJldHVybiBNYXJrZXJVbml0c1VzZXJTcGFjZU9uVXNlOworICAg
ICAgICBpZiAodmFsdWUgPT0gInN0cm9rZVdpZHRoIikKKyAgICAgICAgICAgIHJldHVybiBNYXJr
ZXJVbml0c1N0cm9rZVdpZHRoOworICAgICAgICByZXR1cm4gTWFya2VyVW5pdHNVbmtub3duOwor
ICAgIH0KK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxNYXJrZXJP
cmllbnRUeXBlPiB7CisgICAgc3RhdGljIE1hcmtlck9yaWVudFR5cGUgaGlnaGVzdEVudW1WYWx1
ZSgpIHsgcmV0dXJuIE1hcmtlck9yaWVudEFuZ2xlOyB9CisKKyAgICAvLyB0b1N0cmluZyBpcyBu
b3QgbmVlZGVkLCBzeW5jaHJvbml6ZU9yaWVudFR5cGUoKSBoYW5kbGVzIHRoaXMgb24gaXRzIG93
bi4KKworICAgIHN0YXRpYyBNYXJrZXJPcmllbnRUeXBlIGZyb21TdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSwgU1ZHQW5nbGUmIGFuZ2xlKQorICAgIHsKKyAgICAgICAgaWYgKHZhbHVlID09ICJh
dXRvIikKKyAgICAgICAgICAgIHJldHVybiBNYXJrZXJPcmllbnRBdXRvOworCisgICAgICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICBhbmdsZS5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVl
LCBlYyk7CisgICAgICAgIGlmICghZWMpCisgICAgICAgICAgICByZXR1cm4gTWFya2VyT3JpZW50
QW5nbGU7CisgICAgICAgIHJldHVybiBNYXJrZXJPcmllbnRVbmtub3duOworICAgIH0KK307CisK
IGNsYXNzIFNWR01hcmtlckVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdGaXRUb1ZpZXdCb3ggewogcHVibGljOgotICAgIGVu
dW0gU1ZHTWFya2VyVW5pdHNUeXBlIHsKLSAgICAgICAgU1ZHX01BUktFUlVOSVRTX1VOS05PV04g
ICAgICAgICAgID0gMCwKLSAgICAgICAgU1ZHX01BUktFUlVOSVRTX1VTRVJTUEFDRU9OVVNFICAg
ID0gMSwKLSAgICAgICAgU1ZHX01BUktFUlVOSVRTX1NUUk9LRVdJRFRIICAgICAgID0gMgorICAg
IGVudW0geworICAgICAgICBTVkdfTUFSS0VSVU5JVFNfVU5LTk9XTiA9IE1hcmtlclVuaXRzVW5r
bm93biwKKyAgICAgICAgU1ZHX01BUktFUlVOSVRTX1VTRVJTUEFDRU9OVVNFID0gTWFya2VyVW5p
dHNVc2VyU3BhY2VPblVzZSwKKyAgICAgICAgU1ZHX01BUktFUlVOSVRTX1NUUk9LRVdJRFRIID0g
TWFya2VyVW5pdHNTdHJva2VXaWR0aAogICAgIH07CiAKLSAgICBlbnVtIFNWR01hcmtlck9yaWVu
dFR5cGUgewotICAgICAgICBTVkdfTUFSS0VSX09SSUVOVF9VTktOT1dOICAgID0gMCwKLSAgICAg
ICAgU1ZHX01BUktFUl9PUklFTlRfQVVUTyAgICAgICA9IDEsCi0gICAgICAgIFNWR19NQVJLRVJf
T1JJRU5UX0FOR0xFICAgICAgPSAyCisgICAgZW51bSB7CisgICAgICAgIFNWR19NQVJLRVJfT1JJ
RU5UX1VOS05PV04gPSBNYXJrZXJPcmllbnRVbmtub3duLAorICAgICAgICBTVkdfTUFSS0VSX09S
SUVOVF9BVVRPID0gTWFya2VyT3JpZW50QXV0bywKKyAgICAgICAgU1ZHX01BUktFUl9PUklFTlRf
QU5HTEUgPSBNYXJrZXJPcmllbnRBbmdsZQogICAgIH07CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTVkdNYXJrZXJFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Kik7CkBAIC01OSw2ICsxMTksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPcmllbnRUb0F1dG8o
KTsKICAgICB2b2lkIHNldE9yaWVudFRvQW5nbGUoY29uc3QgU1ZHQW5nbGUmKTsKIAorICAgIHN0
YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIG9yaWVudFR5cGVQcm9wZXJ0eUluZm8oKTsKKwog
cHJpdmF0ZToKICAgICBTVkdNYXJrZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOwogCkBAIC02Nyw5ICsxMjksNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1
YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9k
ZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3Vu
dERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIo
UmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwpAQCAtNzcsODIgKzEzNiwzNCBAQCBwcml2YXRl
OgogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIAor
ICAgIHZvaWQgc3luY2hyb25pemVPcmllbnRUeXBlKCk7CisKICAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBvcmllbnRUeXBlSWRlbnRpZmllcigpOwogICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIG9yaWVudEFuZ2xlSWRlbnRpZmllcigpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJv
cGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUmVmWCwgcmVm
WCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSZWZZLCByZWZZKQotICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKE1hcmtlcldpZHRoLCBtYXJrZXJXaWR0aCkKLSAgICBERUNMQVJFX0FO
SU1BVEVEX0xFTkdUSChNYXJrZXJIZWlnaHQsIG1hcmtlckhlaWdodCkKLSAgICBERUNMQVJFX0FO
SU1BVEVEX0VOVU1FUkFUSU9OKE1hcmtlclVuaXRzLCBtYXJrZXJVbml0cywgU1ZHTWFya2VyVW5p
dHNUeXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURfQU5HTEUoT3JpZW50QW5nbGUsIG9yaWVudEFu
Z2xlKQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVf
QU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKQotCi0gICAgLy8gU1ZHRml0VG9WaWV3Qm94Ci0gICAgREVDTEFSRV9BTklN
QVRFRF9SRUNUKFZpZXdCb3gsIHZpZXdCb3gpCi0gICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJW
RUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisg
ICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR01hcmtlckVsZW1lbnQpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFJlZlgsIHJlZlgpCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfTEVOR1RIKFJlZlksIHJlZlkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIKE1hcmtlcldpZHRoLCBtYXJrZXJXaWR0aCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9MRU5HVEgoTWFya2VySGVpZ2h0LCBtYXJrZXJIZWlnaHQpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfRU5VTUVSQVRJT04oTWFya2VyVW5pdHMsIG1hcmtlclVuaXRzLCBTVkdNYXJrZXJVbml0
c1R5cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQU5HTEUoT3JpZW50QW5nbGUsIG9yaWVu
dEFuZ2xlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9SRUNUKFZpZXdCb3gsIHZpZXdCb3gpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
UFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJh
dGlvKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogcHVibGljOgotICAg
IC8vIEN1c3RvbSBhbmltYXRlZCBwcm9wZXJ0eTogb3JpZW50VHlwZQotICAgIFNWR01hcmtlck9y
aWVudFR5cGUmIG9yaWVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX29yaWVudFR5cGUudmFsdWU7
IH0KLSAgICBTVkdNYXJrZXJPcmllbnRUeXBlJiBvcmllbnRUeXBlQmFzZVZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmllbnRUeXBlLnZhbHVlOyB9Ci0gICAgdm9pZCBzZXRPcmllbnRUeXBlQmFz
ZVZhbHVlKGNvbnN0IFNWR01hcmtlck9yaWVudFR5cGUmIHR5cGUpIHsgbV9vcmllbnRUeXBlLnZh
bHVlID0gdHlwZTsgfQotICAgIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3Bl
cnR5VGVhck9mZjxTVkdNYXJrZXJPcmllbnRUeXBlPiA+IG9yaWVudFR5cGVBbmltYXRlZCgpOwor
ICAgIC8vIEN1c3RvbSAnb3JpZW50VHlwZScgcHJvcGVydHkuCisgICAgc3RhdGljIHZvaWQgc3lu
Y2hyb25pemVPcmllbnRUeXBlKHZvaWQqIGNvbnRleHRFbGVtZW50KTsKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29rdXBPckNyZWF0ZU9yaWVudFR5cGVXcmFw
cGVyKHZvaWQqIGNvbnRleHRFbGVtZW50KTsKKyAgICBNYXJrZXJPcmllbnRUeXBlJiBvcmllbnRU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRUeXBlLnZhbHVlOyB9CisgICAgTWFya2VyT3Jp
ZW50VHlwZSYgb3JpZW50VHlwZUJhc2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50VHlw
ZS52YWx1ZTsgfQorICAgIHZvaWQgc2V0T3JpZW50VHlwZUJhc2VWYWx1ZShjb25zdCBNYXJrZXJP
cmllbnRUeXBlJiB0eXBlKSB7IG1fb3JpZW50VHlwZS52YWx1ZSA9IHR5cGU7IH0KKyAgICBQYXNz
UmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY8TWFya2VyT3JpZW50
VHlwZT4gPiBvcmllbnRUeXBlQW5pbWF0ZWQoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHN5bmNo
cm9uaXplT3JpZW50VHlwZSgpOwotICAgIG11dGFibGUgU1ZHU3luY2hyb25pemFibGVBbmltYXRl
ZFByb3BlcnR5PFNWR01hcmtlck9yaWVudFR5cGU+IG1fb3JpZW50VHlwZTsKLX07Ci0KLXRlbXBs
YXRlPD4KLXN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJr
ZXJVbml0c1R5cGU+IHsKLSAgICBzdGF0aWMgU1ZHTWFya2VyRWxlbWVudDo6U1ZHTWFya2VyVW5p
dHNUeXBlIGhpZ2hlc3RFbnVtVmFsdWUoKSB7IHJldHVybiBTVkdNYXJrZXJFbGVtZW50OjpTVkdf
TUFSS0VSVU5JVFNfU1RST0tFV0lEVEg7IH0KLQotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmco
U1ZHTWFya2VyRWxlbWVudDo6U1ZHTWFya2VyVW5pdHNUeXBlIHR5cGUpCi0gICAgewotICAgICAg
ICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBTVkdNYXJrZXJFbGVtZW50OjpTVkdfTUFS
S0VSVU5JVFNfVU5LTk9XTjoKLSAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAg
ICAgICBjYXNlIFNWR01hcmtlckVsZW1lbnQ6OlNWR19NQVJLRVJVTklUU19VU0VSU1BBQ0VPTlVT
RToKLSAgICAgICAgICAgIHJldHVybiAidXNlclNwYWNlT25Vc2UiOwotICAgICAgICBjYXNlIFNW
R01hcmtlckVsZW1lbnQ6OlNWR19NQVJLRVJVTklUU19TVFJPS0VXSURUSDoKLSAgICAgICAgICAg
IHJldHVybiAic3Ryb2tlV2lkdGgiOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIH0KLQotICAgIHN0
YXRpYyBTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJVbml0c1R5cGUgZnJvbVN0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlKQotICAgIHsKLSAgICAgICAgaWYgKHZhbHVlID09ICJ1c2VyU3BhY2VP
blVzZSIpCi0gICAgICAgICAgICByZXR1cm4gU1ZHTWFya2VyRWxlbWVudDo6U1ZHX01BUktFUlVO
SVRTX1VTRVJTUEFDRU9OVVNFOwotICAgICAgICBpZiAodmFsdWUgPT0gInN0cm9rZVdpZHRoIikK
LSAgICAgICAgICAgIHJldHVybiBTVkdNYXJrZXJFbGVtZW50OjpTVkdfTUFSS0VSVU5JVFNfU1RS
T0tFV0lEVEg7Ci0gICAgICAgIHJldHVybiBTVkdNYXJrZXJFbGVtZW50OjpTVkdfTUFSS0VSVU5J
VFNfVU5LTk9XTjsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHUHJvcGVydHlU
cmFpdHM8U1ZHTWFya2VyRWxlbWVudDo6U1ZHTWFya2VyT3JpZW50VHlwZT4gewotICAgIHN0YXRp
YyBTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJPcmllbnRUeXBlIGhpZ2hlc3RFbnVtVmFsdWUo
KSB7IHJldHVybiBTVkdNYXJrZXJFbGVtZW50OjpTVkdfTUFSS0VSX09SSUVOVF9BTkdMRTsgfQot
Ci0gICAgLy8gdG9TdHJpbmcgaXMgbm90IG5lZWRlZCwgc3luY2hyb25pemVPcmllbnRUeXBlKCkg
aGFuZGxlcyB0aGlzIG9uIGl0cyBvd24uCi0KLSAgICBzdGF0aWMgU1ZHTWFya2VyRWxlbWVudDo6
U1ZHTWFya2VyT3JpZW50VHlwZSBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUsIFNWR0Fu
Z2xlJiBhbmdsZSkKLSAgICB7Ci0gICAgICAgIGlmICh2YWx1ZSA9PSAiYXV0byIpCi0gICAgICAg
ICAgICByZXR1cm4gU1ZHTWFya2VyRWxlbWVudDo6U1ZHX01BUktFUl9PUklFTlRfQVVUTzsKLQot
ICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgYW5nbGUuc2V0VmFsdWVBc1N0
cmluZyh2YWx1ZSwgZWMpOwotICAgICAgICBpZiAoIWVjKQotICAgICAgICAgICAgcmV0dXJuIFNW
R01hcmtlckVsZW1lbnQ6OlNWR19NQVJLRVJfT1JJRU5UX0FOR0xFOwotICAgICAgICByZXR1cm4g
U1ZHTWFya2VyRWxlbWVudDo6U1ZHX01BUktFUl9PUklFTlRfVU5LTk9XTjsKLSAgICB9CisgICAg
bXV0YWJsZSBTVkdTeW5jaHJvbml6YWJsZUFuaW1hdGVkUHJvcGVydHk8TWFya2VyT3JpZW50VHlw
ZT4gbV9vcmllbnRUeXBlOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01h
c2tFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0Vs
ZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNr
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE0ICszNiwyNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVf
QU5JTUFURURfRU5VTUVSQVRJT04oU1ZHTWFza0VsZW1lbnQsIFNWR05hbWVzOjptYXNrVW5pdHNB
dHRyLCBNYXNrVW5pdHMsIG1hc2tVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKLURF
RklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6Om1hc2tD
b250ZW50VW5pdHNBdHRyLCBNYXNrQ29udGVudFVuaXRzLCBtYXNrQ29udGVudFVuaXRzLCBTVkdV
bml0VHlwZXM6OlNWR1VuaXRUeXBlKQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXNrRWxl
bWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdN
YXNrRWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQotREVGSU5FX0FOSU1BVEVEX0xFTkdU
SChTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgV2lkdGgsIHdpZHRoKQotREVG
SU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIs
IEhlaWdodCwgaGVpZ2h0KQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHTWFza0VsZW1lbnQs
IFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9BTklN
QVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR01hc2tF
bGVtZW50LCBTVkdOYW1lczo6bWFza1VuaXRzQXR0ciwgTWFza1VuaXRzLCBtYXNrVW5pdHMsIFNW
R1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9O
KFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6bWFza0NvbnRlbnRVbml0c0F0dHIsIE1hc2tDb250
ZW50VW5pdHMsIG1hc2tDb250ZW50VW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisg
ICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRy
LCBYLCB4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTWFza0VsZW1lbnQsIFNWR05h
bWVzOjp5QXR0ciwgWSwgeSkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01hc2tFbGVt
ZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0aCwgd2lkdGgpCisgICAgREVGSU5FX0FOSU1B
VEVEX0xFTkdUSChTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhlaWdodCwg
aGVpZ2h0KQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR01hc2tFbGVtZW50LCBTVkdO
YW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BS
T1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdNYXNrRWxl
bWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShtYXNrVW5pdHMpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkobWFza0NvbnRlbnRVbml0cykKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh4KQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKHkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkod2lkdGgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaGVpZ2h0KQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVk
TG9jYXRhYmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBT
VkdNYXNrRWxlbWVudDo6U1ZHTWFza0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkKQEAgLTU3LDYgKzcwLDcgQEAgaW5saW5lIFNWR01hc2tFbGVtZW50
OjpTVkdNYXNrRWxlbWVudChjbwogICAgIC8vIFNwZWM6IElmIHRoZSB4L3kgYXR0cmlidXRlIGlz
IG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiLTEwJSIgd2Vy
ZSBzcGVjaWZpZWQuCiAgICAgLy8gU3BlYzogSWYgdGhlIHdpZHRoL2hlaWdodCBhdHRyaWJ1dGUg
aXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIxMjAlIiB3
ZXJlIHNwZWNpZmllZC4KICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6bWFza1RhZykp
OworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHTWFza0VsZW1lbnQoKTsKIH0K
IAogUGFzc1JlZlB0cjxTVkdNYXNrRWxlbWVudD4gU1ZHTWFza0VsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xNTEsODgg
KzE2NSw2IEBAIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICAg
ICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KIAotdm9pZCBTVkdNYXNrRWxlbWVu
dDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsK
LSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZU1h
c2tVbml0cygpOwotICAgICAgICBzeW5jaHJvbml6ZU1hc2tDb250ZW50VW5pdHMoKTsKLSAgICAg
ICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICBzeW5j
aHJvbml6ZVdpZHRoKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHN5
bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBTVkdUZXN0czo6
c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHU3R5bGVk
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAg
ICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6bWFz
a1VuaXRzQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZU1hc2tVbml0cygpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjptYXNrQ29udGVu
dFVuaXRzQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZU1hc2tDb250ZW50VW5pdHMoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0
dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplWSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjp3aWR0aEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRB
dHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVGVzdHM6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBTVkdNYXNrRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdNYXNrRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwot
Ci0gICAgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0
ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjptYXNrVW5pdHNBdHRyLCBBbmltYXRl
ZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6Om1hc2tDb250ZW50VW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLX0KLQogdm9p
ZCBTVkdNYXNrRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBO
b2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRh
KQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJz
ZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMjUgKzUw
LDI2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBR
dWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBO
b2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0
eWxlKik7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0
OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9B
TklNQVRFRF9FTlVNRVJBVElPTihNYXNrVW5pdHMsIG1hc2tVbml0cywgU1ZHVW5pdFR5cGVzOjpT
VkdVbml0VHlwZSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKE1hc2tDb250ZW50
VW5pdHMsIG1hc2tDb250ZW50VW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCi0gICAg
REVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdU
SChZLCB5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKLQotICAgIC8vIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJ
Tl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHTWFza0VsZW1lbnQpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oTWFza1VuaXRzLCBtYXNrVW5pdHMsIFNWR1VuaXRU
eXBlczo6U1ZHVW5pdFR5cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04o
TWFza0NvbnRlbnRVbml0cywgbWFza0NvbnRlbnRVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0
VHlwZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoV2lkdGgsIHdpZHRoKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQs
IGhlaWdodCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1
aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWly
ZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMo
dGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsg
U1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KIH07CiAKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNyArMzYsNiBAQCBQYXNzUmVmUHRyPFNWR01p
c3NpbmdHbHlwaEVsZW1lbnQ+IFNWR01pCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdNaXNz
aW5nR2x5cGhFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLUF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBTVkdNaXNzaW5nR2x5cGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBz
X2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR01pc3NpbmdHbHlwaEVs
ZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgU1ZHU3R5bGVk
RWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkpOwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHX0ZPTlRT
KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5oCShy
ZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNaXNzaW5nR2x5cGhFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDYgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBTVkdNaXNzaW5nR2x5cGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCopOwogCi0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7Ci0KICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25z
dCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCkBAIC00Miw1
ICszOSwzIEBAIHByaXZhdGU6CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHX0ZPTlRTKQogI2VuZGlm
Ci0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50
LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0NiwzMiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFU
RURfTlVNQkVSKFNWR1BhdGhFbGVtZW50LCBTVkdOYW1lczo6cGF0aExlbmd0aEF0dHIsIFBhdGhM
ZW5ndGgsIHBhdGhMZW5ndGgpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdQYXRoRWxlbWVu
dCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorLy8gRGVmaW5lIGN1c3Rv
bSBhbmltYXRlZCBwcm9wZXJ0eSAnZCcuCitjb25zdCBTVkdQcm9wZXJ0eUluZm8qIFNWR1BhdGhF
bGVtZW50OjpkUHJvcGVydHlJbmZvKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJ
bmZvKiBzX3Byb3BlcnR5SW5mbyA9IDA7CisgICAgaWYgKCFzX3Byb3BlcnR5SW5mbykgeworICAg
ICAgICBzX3Byb3BlcnR5SW5mbyA9IG5ldyBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRQYXRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6OmRB
dHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFt
ZXM6OmRBdHRyLmxvY2FsTmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJlNWR1BhdGhFbGVtZW50OjpzeW5jaHJvbml6ZUQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU1ZHUGF0aEVsZW1lbnQ6Omxvb2t1cE9y
Q3JlYXRlRFdyYXBwZXIpOworICAgIH0KKyAgICByZXR1cm4gc19wcm9wZXJ0eUluZm87Cit9CisK
K0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX05V
TUJFUihTVkdQYXRoRWxlbWVudCwgU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyLCBQYXRoTGVuZ3Ro
LCBwYXRoTGVuZ3RoKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1BhdGhFbGVtZW50
LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1B
VEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdQ
YXRoRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShkKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHBhdGhMZW5ndGgpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAg
ICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdU
ZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdQYXRo
RWxlbWVudDo6U1ZHUGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCkBAIC01Niw2ICs3OSw3IEBAIGlubGluZSBTVkdQYXRoRWxlbWVudDo6
U1ZHUGF0aEVsZW1lbnQoY28KICAgICAsIG1fcGF0aFNlZ0xpc3QoUGF0aFNlZ1VuYWx0ZXJlZFJv
bGUpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBhdGhUYWcpKTsKKyAgICBy
ZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1BhdGhFbGVtZW50KCk7CiB9CiAKIFBhc3NS
ZWZQdHI8U1ZHUGF0aEVsZW1lbnQ+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMjM4LDcgKzI2Miw3IEBA
IHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICBSZW5kZXJTVkdQ
YXRoKiByZW5kZXJlciA9IHN0YXRpY19jYXN0PFJlbmRlclNWR1BhdGgqPih0aGlzLT5yZW5kZXJl
cigpKTsKIAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZEF0dHIpIHsKLSAgICAgICAg
aWYgKG1fYW5pbWF0YWJsZVBhdGhTZWdMaXN0KSB7CisgICAgICAgIGlmIChTVkdBbmltYXRlZFBy
b3BlcnR5Ojpsb29rdXBXcmFwcGVyPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJP
ZmY+KHRoaXMsIGRQcm9wZXJ0eUluZm8oKSkpIHsKICAgICAgICAgICAgIFNWR1BhdGhTZWdMaXN0
IG5ld0xpc3QoUGF0aFNlZ1VuYWx0ZXJlZFJvbGUpOwogICAgICAgICAgICAgU1ZHUGF0aFBhcnNl
ckZhY3RvcnkqIGZhY3RvcnkgPSBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpOwogICAgICAg
ICAgICAgZmFjdG9yeS0+YnVpbGRTVkdQYXRoU2VnTGlzdEZyb21CeXRlU3RyZWFtKG1fcGF0aEJ5
dGVTdHJlYW0uZ2V0KCksIHRoaXMsIG5ld0xpc3QsIFVuYWx0ZXJlZFBhcnNpbmcpOwpAQCAtMjUz
LDgwICsyNzcsMzIgQEAgdm9pZCBTVkdQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAog
ICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNl
SW52YWxpZGF0aW9uKHJlbmRlcmVyKTsKIH0KIAotdm9pZCBTVkdQYXRoRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK1Bhc3NSZWZQdHI8
U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gU1ZHUGF0aEVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlRFdyYXBw
ZXIodm9pZCogY29udGV4dEVsZW1lbnQpCiB7Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1l
KCkpIHsKLSAgICAgICAgc3luY2hyb25pemVEKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUGF0aExl
bmd0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsK
LSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7
Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBw
b3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZEF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
UGF0aExlbmd0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQorICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7CisgICAgU1ZHUGF0aEVsZW1l
bnQqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR1BhdGhFbGVtZW50Kj4oY29udGV4dEVsZW1l
bnQpOwogCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewot
ICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSogZmFjdG9y
eSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7CisgICAgZmFjdG9yeS0+YnVpbGRTVkdQ
YXRoU2VnTGlzdEZyb21CeXRlU3RyZWFtKG93bmVyVHlwZS0+bV9wYXRoQnl0ZVN0cmVhbS5nZXQo
KSwgb3duZXJUeXBlLCBvd25lclR5cGUtPm1fcGF0aFNlZ0xpc3QudmFsdWUsIFVuYWx0ZXJlZFBh
cnNpbmcpOwogCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFNWR0FuaW1h
dGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdQYXRoRWxlbWVudCwgU1ZHQW5p
bWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZiwgU1ZHUGF0aFNlZ0xpc3QsIHRydWU+Cisg
ICAgICAgICAgIChvd25lclR5cGUsIGRQcm9wZXJ0eUluZm8oKSwgb3duZXJUeXBlLT5tX3BhdGhT
ZWdMaXN0LnZhbHVlKTsKIH0KIAotdm9pZCBTVkdQYXRoRWxlbWVudDo6c3luY2hyb25pemVEKCkK
K3ZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplRCh2b2lkKiBjb250ZXh0RWxlbWVudCkK
IHsKLSAgICBpZiAoIW1fcGF0aFNlZ0xpc3Quc2hvdWxkU3luY2hyb25pemUpCisgICAgQVNTRVJU
KGNvbnRleHRFbGVtZW50KTsKKyAgICBTVkdQYXRoRWxlbWVudCogb3duZXJUeXBlID0gc3RhdGlj
X2Nhc3Q8U1ZHUGF0aEVsZW1lbnQqPihjb250ZXh0RWxlbWVudCk7CisgICAgaWYgKCFvd25lclR5
cGUtPm1fcGF0aFNlZ0xpc3Quc2hvdWxkU3luY2hyb25pemUpCiAgICAgICAgIHJldHVybjsKLQot
ICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5bmNocm9uaXplKHRo
aXMsIFNWR05hbWVzOjpkQXR0ciwgbV9wYXRoU2VnTGlzdC52YWx1ZS52YWx1ZUFzU3RyaW5nKCkp
OwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHUGF0aEVsZW1lbnQ6OmF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7
Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZH
UGF0aEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhp
cy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6ZEF0dHIsIEFuaW1hdGVkUGF0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwYXRoTGVuZ3RoQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwor
ICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5bmNocm9uaXplKG93
bmVyVHlwZSwgZFByb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lLCBvd25lclR5cGUtPm1fcGF0
aFNlZ0xpc3QudmFsdWUudmFsdWVBc1N0cmluZygpKTsKIH0KIAogU1ZHUGF0aFNlZ0xpc3RQcm9w
ZXJ0eVRlYXJPZmYqIFNWR1BhdGhFbGVtZW50OjpwYXRoU2VnTGlzdCgpCiB7Ci0gICAgaWYgKCFt
X2FuaW1hdGFibGVQYXRoU2VnTGlzdCkgewotICAgICAgICBtX3BhdGhTZWdMaXN0LnNob3VsZFN5
bmNocm9uaXplID0gdHJ1ZTsKLQotICAgICAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSogZmFjdG9y
eSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7Ci0gICAgICAgIGZhY3RvcnktPmJ1aWxk
U1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbShtX3BhdGhCeXRlU3RyZWFtLmdldCgpLCB0aGlz
LCBtX3BhdGhTZWdMaXN0LnZhbHVlLCBVbmFsdGVyZWRQYXJzaW5nKTsKLQotICAgICAgICBtX2Fu
aW1hdGFibGVQYXRoU2VnTGlzdCA9IFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRl
V3JhcHBlcjxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLCBTVkdQYXRoU2Vn
TGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLCBTVkdOYW1lczo6
ZEF0dHIsIFNWR05hbWVzOjpkQXR0ci5sb2NhbE5hbWUoKSwgbV9wYXRoU2VnTGlzdC52YWx1ZSk7
Ci0gICAgfQotCisgICAgbV9wYXRoU2VnTGlzdC5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7Cisg
ICAgaWYgKCFtX2FuaW1hdGFibGVQYXRoU2VnTGlzdCkKKyAgICAgICAgbV9hbmltYXRhYmxlUGF0
aFNlZ0xpc3QgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9w
ZXJ0eVRlYXJPZmY+KGxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIodGhpcykpOwogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZio+KG1fYW5pbWF0YWJsZVBh
dGhTZWdMaXN0LT5iYXNlVmFsKFBhdGhTZWdVbmFsdGVyZWRSb2xlKSk7CiB9CiAKQEAgLTMzOCwx
NiArMzE0LDkgQEAgU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYqIFNWR1BhdGhFbAogCiBT
VkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZiogU1ZHUGF0aEVsZW1lbnQ6OmFuaW1hdGVkUGF0
aFNlZ0xpc3QoKQogewotICAgIGlmICghbV9hbmltYXRhYmxlUGF0aFNlZ0xpc3QpIHsKLSAgICAg
ICAgbV9wYXRoU2VnTGlzdC5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7Ci0KLSAgICAgICAgU1ZH
UGF0aFBhcnNlckZhY3RvcnkqIGZhY3RvcnkgPSBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigp
OwotICAgICAgICBmYWN0b3J5LT5idWlsZFNWR1BhdGhTZWdMaXN0RnJvbUJ5dGVTdHJlYW0obV9w
YXRoQnl0ZVN0cmVhbS5nZXQoKSwgdGhpcywgbV9wYXRoU2VnTGlzdC52YWx1ZSwgVW5hbHRlcmVk
UGFyc2luZyk7Ci0KLSAgICAgICAgbV9hbmltYXRhYmxlUGF0aFNlZ0xpc3QgPSBTVkdBbmltYXRl
ZFByb3BlcnR5Ojpsb29rdXBPckNyZWF0ZVdyYXBwZXI8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFBy
b3BlcnR5VGVhck9mZiwgU1ZHUGF0aFNlZ0xpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAodGhpcywgU1ZHTmFtZXM6OmRBdHRyLCBTVkdOYW1lczo6ZEF0dHIubG9jYWxOYW1l
KCksIG1fcGF0aFNlZ0xpc3QudmFsdWUpOwotICAgIH0KLQorICAgIG1fcGF0aFNlZ0xpc3Quc2hv
dWxkU3luY2hyb25pemUgPSB0cnVlOworICAgIGlmICghbV9hbmltYXRhYmxlUGF0aFNlZ0xpc3Qp
CisgICAgICAgIG1fYW5pbWF0YWJsZVBhdGhTZWdMaXN0ID0gc3RhdGljX3BvaW50ZXJfY2FzdDxT
VkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmPihsb29rdXBPckNyZWF0ZURXcmFw
cGVyKHRoaXMpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0
eVRlYXJPZmYqPihtX2FuaW1hdGFibGVQYXRoU2VnTGlzdC0+YW5pbVZhbChQYXRoU2VnVW5hbHRl
cmVkUm9sZSkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAkocmV2
aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtOTEsMTEgKzkxLDEyIEBAIHB1YmxpYzoKICAgICBTVkdQYXRoU2VnTGlz
dFByb3BlcnR5VGVhck9mZiogYW5pbWF0ZWROb3JtYWxpemVkUGF0aFNlZ0xpc3QoKTsKIAogICAg
IFNWR1BhdGhCeXRlU3RyZWFtKiBwYXRoQnl0ZVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0
aEJ5dGVTdHJlYW0uZ2V0KCk7IH0KLSAgICBTVkdBbmltYXRlZFByb3BlcnR5KiBhbmltYXRhYmxl
UGF0aFNlZ0xpc3QoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGFibGVQYXRoU2VnTGlzdC5nZXQo
KTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0OwogICAgIHZv
aWQgcGF0aFNlZ0xpc3RDaGFuZ2VkKFNWR1BhdGhTZWdSb2xlKTsKIAorICAgIHN0YXRpYyBjb25z
dCBTVkdQcm9wZXJ0eUluZm8qIGRQcm9wZXJ0eUluZm8oKTsKKwogcHJpdmF0ZToKICAgICBTVkdQ
YXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApAQCAtMTA0LDIx
ICsxMDUsMjQgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdHRyaWJ1dGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c01hcmtlcnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAvLyBBbmltYXRlZCBwcm9w
ZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihQYXRoTGVuZ3Ro
LCBwYXRoTGVuZ3RoKQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAg
IERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIC8vIEN1c3RvbSAnZCcgcHJvcGVydHkKKyAgICBz
dGF0aWMgdm9pZCBzeW5jaHJvbml6ZUQodm9pZCogY29udGV4dEVsZW1lbnQpOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIo
dm9pZCogY29udGV4dEVsZW1lbnQpOworCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR1BhdGhFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihQ
YXRoTGVuZ3RoLCBwYXRoTGVuZ3RoKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4o
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAg
ICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpz
eW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVp
cmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3Rl
bUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsg
fQogCi0gICAgdm9pZCBzeW5jaHJvbml6ZUQoKTsKLQotcHJvdGVjdGVkOgorcHJpdmF0ZToKICAg
ICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IG1fcGF0aEJ5dGVTdHJlYW07CiAgICAgbXV0YWJs
ZSBTVkdTeW5jaHJvbml6YWJsZUFuaW1hdGVkUHJvcGVydHk8U1ZHUGF0aFNlZ0xpc3Q+IG1fcGF0
aFNlZ0xpc3Q7CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJP
ZmY+IG1fYW5pbWF0YWJsZVBhdGhTZWdMaXN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhTZWdXaXRoQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoU2VnV2l0aENvbnRleHQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aFNlZ1dpdGhDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5
LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFBhdGhTZWdVbmRlZmluZWRSb2xlOgogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGNhc2UgUGF0aFNlZ1VuYWx0ZXJlZFJvbGU6Ci0gICAg
ICAgICAgICByZXR1cm4gbV9lbGVtZW50LT5hbmltYXRhYmxlUGF0aFNlZ0xpc3QoKTsKKyAgICAg
ICAgICAgIHJldHVybiBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBXcmFwcGVyPFNWR0FuaW1h
dGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+KG1fZWxlbWVudC5nZXQoKSwgU1ZHUGF0aEVs
ZW1lbnQ6OmRQcm9wZXJ0eUluZm8oKSk7CiAgICAgICAgIGNhc2UgUGF0aFNlZ05vcm1hbGl6ZWRS
b2xlOgogICAgICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTQxMiAtIEltcGxlbWVudCBub3JtYWxpemVkIHBhdGggc2VnbWVudCBsaXN0
cyEKICAgICAgICAgICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dHRlcm5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
dGVybkVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXR0ZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDE4ICs0MiwzNSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25z
Ci1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6eEF0
dHIsIFgsIHgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdO
YW1lczo6eUF0dHIsIFksIHkpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1BhdHRlcm5FbGVt
ZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0aCwgd2lkdGgpCi1ERUZJTkVfQU5JTUFURURf
TEVOR1RIKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBo
ZWlnaHQpCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHUGF0dGVybkVsZW1lbnQsIFNW
R05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRyLCBQYXR0ZXJuVW5pdHMsIHBhdHRlcm5Vbml0cywgU1ZH
VW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdQ
YXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50VW5pdHNBdHRyLCBQYXR0ZXJu
Q29udGVudFVuaXRzLCBwYXR0ZXJuQ29udGVudFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlKQotREVGSU5FX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFNWR1BhdHRlcm5FbGVtZW50LCBT
VkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIsIFBhdHRlcm5UcmFuc2Zvcm0sIHBhdHRlcm5U
cmFuc2Zvcm0pIAotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdQYXR0ZXJuRWxlbWVudCwgWExp
bmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihT
VkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRy
LCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQot
REVGSU5FX0FOSU1BVEVEX1JFQ1QoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjp2aWV3Qm94
QXR0ciwgVmlld0JveCwgdmlld0JveCkKLURFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJB
VElPKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIs
IFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pIAorQkVHSU5fREVGSU5F
X0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1BhdHRl
cm5FbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xF
TkdUSChTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQorICAgIERFRklO
RV9BTklNQVRFRF9MRU5HVEgoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIs
IFdpZHRoLCB3aWR0aCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1BhdHRlcm5FbGVt
ZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQpCisgICAgREVGSU5FX0FO
SU1BVEVEX0VOVU1FUkFUSU9OKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6cGF0dGVyblVu
aXRzQXR0ciwgUGF0dGVyblVuaXRzLCBwYXR0ZXJuVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5p
dFR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR1BhdHRlcm5FbGVtZW50
LCBTVkdOYW1lczo6cGF0dGVybkNvbnRlbnRVbml0c0F0dHIsIFBhdHRlcm5Db250ZW50VW5pdHMs
IHBhdHRlcm5Db250ZW50VW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgREVG
SU5FX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6
cGF0dGVyblRyYW5zZm9ybUF0dHIsIFBhdHRlcm5UcmFuc2Zvcm0sIHBhdHRlcm5UcmFuc2Zvcm0p
IAorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHUGF0dGVybkVsZW1lbnQsIFhMaW5rTmFt
ZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNW
R1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIs
IEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisg
ICAgREVGSU5FX0FOSU1BVEVEX1JFQ1QoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjp2aWV3
Qm94QXR0ciwgVmlld0JveCwgdmlld0JveCkKKyAgICBERUZJTkVfQU5JTUFURURfUFJFU0VSVkVB
U1BFQ1RSQVRJTyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0
aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSAKK0VORF9E
RUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR1BhdHRlcm5FbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeSkKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh3aWR0aCkKKyAgICBSRUdJU1RFUl9MT0NB
TF9BTklNQVRFRF9QUk9QRVJUWShoZWlnaHQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkocGF0dGVyblVuaXRzKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKHBhdHRlcm5Db250ZW50VW5pdHMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkocGF0dGVyblRyYW5zZm9ybSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWShocmVmKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
dmlld0JveCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShwcmVzZXJ2ZUFz
cGVjdFJhdGlvKSAKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdT
dHlsZWRFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1Bh
dHRlcm5FbGVtZW50OjpTVkdQYXR0ZXJuRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KQpAQCAtNjUsNiArODIsNyBAQCBpbmxpbmUgU1ZHUGF0dGVybkVsZW1lbnQ6OlNW
R1BhdHRlcm5FbGVtCiAgICAgLCBtX3BhdHRlcm5Db250ZW50VW5pdHMoU1ZHVW5pdFR5cGVzOjpT
VkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNW
R05hbWVzOjpwYXR0ZXJuVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JT
VkdQYXR0ZXJuRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR1BhdHRlcm5FbGVtZW50PiBT
VkdQYXR0ZXJuRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKQEAgLTE4MCwxMTAgKzE5OCw2IEBAIHZvaWQgU1ZHUGF0dGVybkVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW4KICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCh0
cnVlKTsKIH0KIAotdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsgICAgCi0gICAgaWYgKGF0dHJOYW1lID09
IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVQYXR0ZXJuVW5pdHMoKTsKLSAgICAg
ICAgc3luY2hyb25pemVQYXR0ZXJuQ29udGVudFVuaXRzKCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
UGF0dGVyblRyYW5zZm9ybSgpOwotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAgc3luY2hy
b25pemVIZWlnaHQoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICBTVkdGaXRUb1ZpZXdC
b3g6OnN5bmNocm9uaXplUHJvcGVydGllcyhhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1Rlc3RzOjpz
eW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAg
ICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwYXR0
ZXJuVW5pdHNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplUGF0dGVyblVuaXRzKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBhdHRl
cm5Db250ZW50VW5pdHNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplUGF0dGVybkNvbnRlbnRV
bml0cygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjpwYXR0ZXJuVHJhbnNmb3JtQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVBhdHRl
cm5UcmFuc2Zvcm0oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6eEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25p
emVXaWR0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAg
ICAgICBTVkdGaXRUb1ZpZXdCb3g6OnN5bmNocm9uaXplUHJvcGVydGllcyhhdHRyTmFtZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3du
QXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlz
LCBhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1BhdHRlcm5FbGVt
ZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQot
Ci12b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdT
dHlsZWRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVk
TGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Omhl
aWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OnBhdHRlcm5Vbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwot
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cGF0dGVybkNvbnRl
bnRVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIsIEFuaW1hdGVkVHJh
bnNmb3JtTGlzdCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFt
ZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgQW5pbWF0ZWRSZWN0KTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9B
dHRyLCBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOwotfQotCiB2b2lkIFNWR1BhdHRlcm5F
bGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9y
ZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAg
U1ZHU3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3Jl
Q2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCwzMyArNjAs
MzAgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5v
ZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5
bGUqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7
CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FO
SU1BVEVEX0xFTkdUSChYLCB4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQotICAgIERFQ0xBUkVfQU5J
TUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVS
QVRJT04oUGF0dGVyblVuaXRzLCBwYXR0ZXJuVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5
cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihQYXR0ZXJuQ29udGVudFVuaXRz
LCBwYXR0ZXJuQ29udGVudFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQotICAgIERF
Q0xBUkVfQU5JTUFURURfVFJBTlNGT1JNX0xJU1QoUGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblRy
YW5zZm9ybSkKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERFQ0xBUkVfQU5JTUFURURf
U1RSSU5HKEhyZWYsIGhyZWYpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi0KLSAgICAvLyBTVkdQYXR0ZXJuRWxlbWVudAot
ICAgIERFQ0xBUkVfQU5JTUFURURfUkVDVChWaWV3Qm94LCB2aWV3Qm94KQotICAgIERFQ0xBUkVf
QU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2
ZUFzcGVjdFJhdGlvKSAKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZH
UGF0dGVybkVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04o
UGF0dGVyblVuaXRzLCBwYXR0ZXJuVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oUGF0dGVybkNvbnRlbnRVbml0cywg
cGF0dGVybkNvbnRlbnRVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChQYXR0ZXJuVHJhbnNmb3JtLCBwYXR0ZXJu
VHJhbnNmb3JtKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9S
RUNUKFZpZXdCb3gsIHZpZXdCb3gpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVB
U1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSAKKyAg
ICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpz
eW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVp
cmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3Rl
bUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsg
fQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BvbHlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UG9seUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQb2x5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEyICszNSwzNSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1E
RUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdQb2x5RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKQorLy8gRGVmaW5lIGN1c3RvbSBhbmltYXRlZCBwcm9wZXJ0eSAn
cG9pbnRzJy4KK2NvbnN0IFNWR1Byb3BlcnR5SW5mbyogU1ZHUG9seUVsZW1lbnQ6OnBvaW50c1By
b3BlcnR5SW5mbygpCit7CisgICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogc19wcm9w
ZXJ0eUluZm8gPSAwOworICAgIGlmICghc19wcm9wZXJ0eUluZm8pIHsKKyAgICAgICAgc19wcm9w
ZXJ0eUluZm8gPSBuZXcgU1ZHUHJvcGVydHlJbmZvKEFuaW1hdGVkUG9pbnRzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6OnBvaW50c0F0dHIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6
cG9pbnRzQXR0ci5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZTVkdQb2x5RWxlbWVudDo6c3luY2hyb25pemVQb2ludHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU1ZHUG9seUVsZW1lbnQ6Omxv
b2t1cE9yQ3JlYXRlUG9pbnRzV3JhcHBlcik7CisgICAgfQorICAgIHJldHVybiBzX3Byb3BlcnR5
SW5mbzsKK30KKworQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVf
QU5JTUFURURfQk9PTEVBTihTVkdQb2x5RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JF
R0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUG9seUVsZW1lbnQpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkocG9pbnRzKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1B
VEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFS
RU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisg
ICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVH
SVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBTVkdQb2x5RWxlbWVudDo6U1ZHUG9seUVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAg
IDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7Cisg
ICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdQb2x5RWxlbWVudCgpOyAgICAKIH0K
IAogYm9vbCBTVkdQb2x5RWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCkBAIC02OCw4ICs5MSw4IEBAIHZvaWQgU1ZHUG9seUVsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmlidXQKICAgICAgICAgaWYgKCFwb2ludHNMaXN0RnJvbVNWR0RhdGEo
bmV3TGlzdCwgdmFsdWUpKQogICAgICAgICAgICAgZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5z
aW9ucygpLT5yZXBvcnRFcnJvcigiUHJvYmxlbSBwYXJzaW5nIHBvaW50cz1cIiIgKyB2YWx1ZSAr
ICJcIiIpOwogCi0gICAgICAgIGlmIChTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZH
UG9pbnRMaXN0PiogbGlzdCA9IG1fYW5pbWF0YWJsZVBvaW50c0xpc3QuZ2V0KCkpCi0gICAgICAg
ICAgICBsaXN0LT5kZXRhY2hMaXN0V3JhcHBlcnMobmV3TGlzdC5zaXplKCkpOworICAgICAgICBp
ZiAoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSogd3JhcHBlciA9IFNWR0FuaW1hdGVkUHJvcGVydHk6Omxv
b2t1cFdyYXBwZXI8U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4g
Pih0aGlzLCBwb2ludHNQcm9wZXJ0eUluZm8oKSkpCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxT
VkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0Pio+KHdyYXBwZXIpLT5k
ZXRhY2hMaXN0V3JhcHBlcnMobmV3TGlzdC5zaXplKCkpOwogCiAgICAgICAgIG1fcG9pbnRzLnZh
bHVlID0gbmV3TGlzdDsKICAgICAgICAgcmV0dXJuOwpAQCAtMTE1LDY3ICsxMzgsMzMgQEAgdm9p
ZCBTVkdQb2x5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogfQogCi12b2lkIFNWR1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQordm9pZCBTVkdQb2x5RWxlbWVudDo6c3luY2hy
b25pemVQb2ludHModm9pZCogY29udGV4dEVsZW1lbnQpCiB7Ci0gICAgU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotCi0gICAgaWYg
KGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUG9pbnRzKCk7Ci0gICAgICAg
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOworICAgIEFT
U0VSVChjb250ZXh0RWxlbWVudCk7CisgICAgU1ZHUG9seUVsZW1lbnQqIG93bmVyVHlwZSA9IHN0
YXRpY19jYXN0PFNWR1BvbHlFbGVtZW50Kj4oY29udGV4dEVsZW1lbnQpOworICAgIGlmICghb3du
ZXJUeXBlLT5tX3BvaW50cy5zaG91bGRTeW5jaHJvbml6ZSkKICAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKCk7Ci0gICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0dHIpCi0g
ICAgICAgIHN5bmNocm9uaXplUG9pbnRzKCk7Ci0gICAgZWxzZSBpZiAoU1ZHVGVzdHM6OmlzS25v
d25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9w
ZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKKyAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25p
emVyPHRydWU+OjpzeW5jaHJvbml6ZShvd25lclR5cGUsIHBvaW50c1Byb3BlcnR5SW5mbygpLT5h
dHRyaWJ1dGVOYW1lLCBvd25lclR5cGUtPm1fcG9pbnRzLnZhbHVlLnZhbHVlQXNTdHJpbmcoKSk7
CiB9CiAKLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdQb2x5RWxlbWVudDo6YXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQorUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBT
VkdQb2x5RWxlbWVudDo6bG9va3VwT3JDcmVhdGVQb2ludHNXcmFwcGVyKHZvaWQqIGNvbnRleHRF
bGVtZW50KQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19h
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdQb2x5RWxlbWVudDo6Zmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZp
bGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwb2lu
dHNBdHRyLCBBbmltYXRlZFBvaW50cyk7Ci19Ci0KLXZvaWQgU1ZHUG9seUVsZW1lbnQ6OnN5bmNo
cm9uaXplUG9pbnRzKCkKLXsKLSAgICBpZiAoIW1fcG9pbnRzLnNob3VsZFN5bmNocm9uaXplKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPHRy
dWU+OjpzeW5jaHJvbml6ZSh0aGlzLCBTVkdOYW1lczo6cG9pbnRzQXR0ciwgbV9wb2ludHMudmFs
dWUudmFsdWVBc1N0cmluZygpKTsKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgIFNW
R1BvbHlFbGVtZW50KiBvd25lclR5cGUgPSBzdGF0aWNfY2FzdDxTVkdQb2x5RWxlbWVudCo+KGNv
bnRleHRFbGVtZW50KTsKKyAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JD
cmVhdGVXcmFwcGVyPFNWR1BvbHlFbGVtZW50LCBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJP
ZmY8U1ZHUG9pbnRMaXN0PiwgU1ZHUG9pbnRMaXN0LCB0cnVlPgorICAgICAgICAgICAob3duZXJU
eXBlLCBwb2ludHNQcm9wZXJ0eUluZm8oKSwgb3duZXJUeXBlLT5tX3BvaW50cy52YWx1ZSk7CiB9
CiAKIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiogU1ZHUG9seUVsZW1lbnQ6
OnBvaW50cygpCiB7Ci0gICAgaWYgKCFtX2FuaW1hdGFibGVQb2ludHNMaXN0KSB7Ci0gICAgICAg
IG1fcG9pbnRzLnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKLSAgICAgICAgbV9hbmltYXRhYmxl
UG9pbnRzTGlzdCA9IFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxT
VkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiAsIFNWR1BvaW50TGlz
dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLCBTVkdOYW1lczo6cG9p
bnRzQXR0ciwgU1ZHTmFtZXM6OnBvaW50c0F0dHIubG9jYWxOYW1lKCksIG1fcG9pbnRzLnZhbHVl
KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHTGlzdFByb3BlcnR5VGVhck9m
ZjxTVkdQb2ludExpc3Q+Kj4obV9hbmltYXRhYmxlUG9pbnRzTGlzdC0+YmFzZVZhbCgpKTsKKyAg
ICBtX3BvaW50cy5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0Pio+KHN0YXRpY19wb2ludGVy
X2Nhc3Q8U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4gPihsb29r
dXBPckNyZWF0ZVBvaW50c1dyYXBwZXIodGhpcykpLT5iYXNlVmFsKCkpOwogfQogCiBTVkdMaXN0
UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4qIFNWR1BvbHlFbGVtZW50OjphbmltYXRlZFBv
aW50cygpCiB7Ci0gICAgaWYgKCFtX2FuaW1hdGFibGVQb2ludHNMaXN0KSB7Ci0gICAgICAgIG1f
cG9pbnRzLnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKLSAgICAgICAgbV9hbmltYXRhYmxlUG9p
bnRzTGlzdCA9IFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdB
bmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiAsIFNWR1BvaW50TGlzdD4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLCBTVkdOYW1lczo6cG9pbnRz
QXR0ciwgU1ZHTmFtZXM6OnBvaW50c0F0dHIubG9jYWxOYW1lKCksIG1fcG9pbnRzLnZhbHVlKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHTGlzdFByb3BlcnR5VGVhck9mZjxT
VkdQb2ludExpc3Q+Kj4obV9hbmltYXRhYmxlUG9pbnRzTGlzdC0+YW5pbVZhbCgpKTsKKyAgICBt
X3BvaW50cy5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0Pio+KHN0YXRpY19wb2ludGVyX2Nh
c3Q8U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4gPihsb29rdXBP
ckNyZWF0ZVBvaW50c1dyYXBwZXIodGhpcykpLT5hbmltVmFsKCkpOwogfQogCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEs
OCBAQCBwdWJsaWM6CiAKICAgICBTVkdQb2ludExpc3QmIHBvaW50TGlzdCgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9pbnRzLnZhbHVlOyB9CiAKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZv
KiBwb2ludHNQcm9wZXJ0eUluZm8oKTsKKwogcHJvdGVjdGVkOgogICAgIFNWR1BvbHlFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCkBAIC01MSwyMCArNTMsMjQgQEAg
cHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7
IAogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNYXJrZXJzKCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotCi0gICAgdm9pZCBzeW5jaHJvbml6ZVBv
aW50cygpOworICAgIC8vIEN1c3RvbSAncG9pbnRzJyBwcm9wZXJ0eQorICAgIHN0YXRpYyB2b2lk
IHN5bmNocm9uaXplUG9pbnRzKHZvaWQqIGNvbnRleHRFbGVtZW50KTsKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29rdXBPckNyZWF0ZVBvaW50c1dyYXBwZXIo
dm9pZCogY29udGV4dEVsZW1lbnQpOworCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR1BvbHlFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4o
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAg
ICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpz
eW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVp
cmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3Rl
bUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsg
fQogCiBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSBTVkdTeW5jaHJvbml6YWJsZUFuaW1hdGVkUHJv
cGVydHk8U1ZHUG9pbnRMaXN0PiBtX3BvaW50czsKLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMaXN0
UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4gPiBtX2FuaW1hdGFibGVQb2ludHNMaXN0Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDEyICs0MCwyMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1h
dGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JhZGlh
bEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmN4QXR0ciwgQ3gsIGN4KQotREVGSU5FX0FOSU1B
VEVEX0xFTkdUSChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpjeUF0dHIsIEN5
LCBjeSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBT
VkdOYW1lczo6ckF0dHIsIFIsIHIpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmZ4QXR0ciwgRngsIGZ4KQotREVGSU5FX0FOSU1BVEVE
X0xFTkdUSChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpmeUF0dHIsIEZ5LCBm
eSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVE
X0xFTkdUSChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpjeEF0dHIsIEN4LCBj
eCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwg
U1ZHTmFtZXM6OmN5QXR0ciwgQ3ksIGN5KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6ckF0dHIsIFIsIHIpCisgICAgREVGSU5F
X0FOSU1BVEVEX0xFTkdUSChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpmeEF0
dHIsIEZ4LCBmeCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JhZGlhbEdyYWRpZW50
RWxlbWVudCwgU1ZHTmFtZXM6OmZ5QXR0ciwgRnksIGZ5KQorRU5EX0RFRklORV9BTklNQVRFRF9Q
Uk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGN4
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGN5KQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHIpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkoZngpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZnkpCisg
ICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHR3JhZGllbnRFbGVtZW50
KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudDo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0dyYWRpZW50RWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTU3LDYgKzY3LDcgQEAgaW5saW5lIFNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudDo6U1ZHUmFkaQogewogICAgIC8vIFNwZWM6IElmIHRoZSBjeC9jeS9yIGF0
dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2Yg
IjUwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnJh
ZGlhbEdyYWRpZW50VGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQ+IFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTEyOSw2OSArMTQwLDYgQEAg
dm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYgogICAgICAgICBvYmplY3Qt
PnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCi12b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsK
LSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUN4
KCk7Ci0gICAgICAgIHN5bmNocm9uaXplQ3koKTsKLSAgICAgICAgc3luY2hyb25pemVGeCgpOwot
ICAgICAgICBzeW5jaHJvbml6ZUZ5KCk7Ci0gICAgICAgIHN5bmNocm9uaXplUigpOwotICAgICAg
ICBTVkdHcmFkaWVudEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKLSAgICAgICAgU1ZHR3JhZGllbnRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6Y3hBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplQ3goKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6Y3lBdHRyKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplQ3koKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZnhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
RngoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6ZnlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRnkoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ckF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVSKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1JhZGlh
bEdyYWRpZW50RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKLQotICAgIFNWR0dyYWRpZW50RWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmN4QXR0ciwgQW5pbWF0ZWRMZW5ndGgp
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Y3lBdHRyLCBB
bmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjpyQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6ZnhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpmeUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
LX0KLQogUmVuZGVyT2JqZWN0KiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcg
KGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50KHRoaXMpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAkocmV2aXNpb24g
OTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDIwICs0MiwxOCBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVu
ZGVyU3R5bGUqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkg
Y29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNM
QVJFX0FOSU1BVEVEX0xFTkdUSChDeCwgY3gpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgo
Q3ksIGN5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFIsIHIpCi0gICAgREVDTEFSRV9B
TklNQVRFRF9MRU5HVEgoRngsIGZ4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEZ5LCBm
eSkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeCwgY3gpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN5LCBjeSkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9MRU5HVEgoUiwgcikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoRngsIGZ4
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChGeSwgZnkpCisgICAgRU5EX0RFQ0xB
UkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDE0ICszMiwyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHBy
b3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50
LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RF
bGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNW
R1JlY3RFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0aCwgd2lkdGgpCi1ERUZJTkVf
QU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVp
Z2h0LCBoZWlnaHQpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdO
YW1lczo6cnhBdHRyLCBSeCwgcngpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVt
ZW50LCBTVkdOYW1lczo6cnlBdHRyLCBSeSwgcnkpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihT
VkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorQkVH
SU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RI
KFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCisgICAgREVGSU5FX0FOSU1B
VEVEX0xFTkdUSChTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQorICAgIERF
RklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIs
IFdpZHRoLCB3aWR0aCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50
LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQpCisgICAgREVGSU5FX0FOSU1B
VEVEX0xFTkdUSChTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnJ4QXR0ciwgUngsIHJ4KQorICAg
IERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjpyeUF0dHIs
IFJ5LCByeSkKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdSZWN0RWxlbWVudCwgU1ZH
TmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorRU5EX0RFRklORV9BTklNQVRFRF9Q
Uk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUmVjdEVs
ZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeCkKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1B
VEVEX1BST1BFUlRZKHdpZHRoKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZ
KGhlaWdodCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShyeCkKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShyeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVS
X1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5E
X1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1JlY3RFbGVtZW50OjpT
VkdSZWN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkKQEAgLTUxLDYgKzY0LDcgQEAgaW5saW5lIFNWR1JlY3RFbGVtZW50OjpTVkdSZWN0RWxl
bWVudChjbwogICAgICwgbV9yeShMZW5ndGhNb2RlSGVpZ2h0KQogewogICAgIEFTU0VSVChoYXNU
YWdOYW1lKFNWR05hbWVzOjpyZWN0VGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRp
ZXNGb3JTVkdSZWN0RWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR1JlY3RFbGVtZW50PiBT
VkdSZWN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKQEAgLTE3MCw4OCArMTg0LDYgQEAgdm9pZCBTVkdSZWN0RWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lk
IFNWR1JlY3RFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgc3luY2hy
b25pemVXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAgICBzeW5j
aHJvbml6ZVJ4KCk7Ci0gICAgICAgIHN5bmNocm9uaXplUnkoKTsKLSAgICAgICAgc3luY2hyb25p
emVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9w
ZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikg
ewotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplV2lkdGgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpy
eEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVSeCgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpyeUF0dHIpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVSeSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJO
YW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHUmVjdEVsZW1lbnQ6OmF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7
Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZH
UmVjdEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhp
cy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVk
TGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Omhl
aWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OnJ4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cnlBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci19
Ci0KIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnRvUGF0aERhdGEoUGF0aCYgcGF0aCkgY29uc3QKIHsK
ICAgICBBU1NFUlQocGF0aC5pc0VtcHR5KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1JlY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RF
bGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDI0ICs0NywyNSBAQCBwcml2YXRlOgogICAg
IGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAg
IHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0
dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0OwogCiAgICAg
dmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIAotICAgIC8vIEFu
aW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RI
KFgsIHgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKLSAgICBERUNMQVJFX0FO
SU1BVEVEX0xFTkdUSChXaWR0aCwgd2lkdGgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgo
SGVpZ2h0LCBoZWlnaHQpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUngsIHJ4KQotICAg
IERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFJ5LCByeSkKLQotICAgIC8vIFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUmVjdEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKFgsIHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFks
IHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfTEVOR1RIKFJ4LCByeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoUnksIHJ5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJl
cXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1
aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9u
cyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkg
eyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNw
cAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDE0ICs1NiwyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURf
TEVOR1RIKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKLURFRklORV9BTklN
QVRFRF9MRU5HVEgoU1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQotREVGSU5F
X0FOSU1BVEVEX0xFTkdUSChTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0
aCwgd2lkdGgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVz
OjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdodCkKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNW
R1NWR0VsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKLURFRklO
RV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjpw
cmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3Bl
Y3RSYXRpbykKLURFRklORV9BTklNQVRFRF9SRUNUKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjp2
aWV3Qm94QXR0ciwgVmlld0JveCwgdmlld0JveCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9Q
RVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdTVkdFbGVtZW50LCBTVkdOYW1l
czo6eEF0dHIsIFgsIHgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdTVkdFbGVtZW50
LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdT
VkdFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0aCwgd2lkdGgpCisgICAgREVGSU5F
X0FOSU1BVEVEX0xFTkdUSChTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVp
Z2h0LCBoZWlnaHQpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHU1ZHRWxlbWVudCwg
U1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIERFRklORV9BTklNQVRF
RF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFz
cGVjdFJhdGlvQXR0ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykK
KyAgICBERUZJTkVfQU5JTUFURURfUkVDVChTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6dmlld0Jv
eEF0dHIsIFZpZXdCb3gsIHZpZXdCb3gpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMK
KworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTVkdFbGVtZW50KQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WSh3aWR0aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShoZWlnaHQpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh2aWV3Qm94KQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHByZXNlcnZlQXNwZWN0UmF0aW8pCisg
ICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkTG9jYXRhYmxl
RWxlbWVudCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0
cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdTVkdFbGVt
ZW50OjpTVkdTVkdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2MpCiAgICAgOiBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50KHRhZ05hbWUsIGRvYykKQEAg
LTc3LDYgKzkwLDcgQEAgaW5saW5lIFNWR1NWR0VsZW1lbnQ6OlNWR1NWR0VsZW1lbnQoY29ucwog
ICAgICwgbV9oYXNTZXRDb250YWluZXJTaXplKGZhbHNlKQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKFNWR05hbWVzOjpzdmdUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0Zv
clNWR1NWR0VsZW1lbnQoKTsKICAgICBkb2MtPnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9u
Q2FsbGJhY2tzKHRoaXMpOwogfQogCkBAIC0zNTUsNTUgKzM2OSw2IEBAIHZvaWQgU1ZHU1ZHRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCgKICAgICBTVkdTdHlsZWRFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotdm9pZCBTVkdTVkdFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChh
dHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAg
ICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICBz
eW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHRml0VG9WaWV3Qm94OjpzeW5jaHJvbml6ZVByb3BlcnRp
ZXMoYXR0ck5hbWUpOwotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRo
aXMsIGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9w
ZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICBlbHNl
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIHN5bmNocm9uaXplWSgp
OwotICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAg
IHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aGVpZ2h0QXR0cikKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICBlbHNlIGlmIChT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkK
LSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgZWxz
ZSBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgCi0gICAg
ICAgIFNWR0ZpdFRvVmlld0JveDo6c3luY2hyb25pemVQcm9wZXJ0aWVzKGF0dHJOYW1lKTsKLSAg
ICBlbHNlIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCi0gICAgICAg
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgIGVs
c2UKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFt
ZSk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdTVkdFbGVtZW50OjphdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkp
OwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNW
R1NWR0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhp
cy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgp
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6d2lkdGhBdHRy
LCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgQW5pbWF0ZWRSZWN0KTsKLSAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0
UmF0aW9BdHRyLCBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOwotfQotCiB1bnNpZ25lZCBT
VkdTVkdFbGVtZW50OjpzdXNwZW5kUmVkcmF3KHVuc2lnbmVkIC8qIG1heFdhaXRNaWxsaXNlY29u
ZHMgKi8pCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBtZSAoc2VlIGJ1ZyAxMTI3NSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsMjcg
KzE0NSwyNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50
KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2
ZUxlbmd0aHMoKSBjb25zdDsKIAogICAgIHZvaWQgaW5oZXJpdFZpZXdBdHRyaWJ1dGVzKFNWR1Zp
ZXdFbGVtZW50Kik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVO
R1RIKFksIHkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQotICAg
IERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQotCi0gICAgLy8gU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotCi0gICAg
Ly8gU1ZHRml0VG9WaWV3Qm94Ci0gICAgREVDTEFSRV9BTklNQVRFRF9SRUNUKFZpZXdCb3gsIHZp
ZXdCb3gpCi0gICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZl
QXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCi0gCisgICAgQkVHSU5fREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR1NWR0VsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfTEVOR1RIKFgsIHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1JFQ1QoVmlld0JveCwgdmlld0Jv
eCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZl
QXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVElFUworCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZl
YXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRl
bnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVz
dHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KKwogICAgIHZpcnR1YWwgdm9p
ZCBkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVu
dERpZEJlY29tZUFjdGl2ZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3Jp
cHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMjEgKzI4LDI5IEBACiAjaW5jbHVk
ZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCIKICNpbmNs
dWRlICJTVkdFbGVtZW50SW5zdGFuY2UuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1
ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBB
bmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdT
Y3JpcHRFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKLURFRklORV9B
TklNQVRFRF9CT09MRUFOKFNWR1NjcmlwdEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVG
SU5FX0FOSU1BVEVEX1NUUklORyhTVkdTY3JpcHRFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0
ciwgSHJlZiwgaHJlZikKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdTY3JpcHRFbGVt
ZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FO
SU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhT
VkdTY3JpcHRFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGhy
ZWYpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBT
VkdTY3JpcHRFbGVtZW50OjpTVkdTY3JpcHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCB3YXNJbnNlcnRlZEJ5UGFyc2VyLCBib29s
IGFscmVhZHlTdGFydGVkKQogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAg
ICAsIFNjcmlwdEVsZW1lbnQodGhpcywgd2FzSW5zZXJ0ZWRCeVBhcnNlciwgYWxyZWFkeVN0YXJ0
ZWQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnNjcmlwdFRhZykpOworICAg
IHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHU2NyaXB0RWxlbWVudCgpOwogfQogCiBQ
YXNzUmVmUHRyPFNWR1NjcmlwdEVsZW1lbnQ+IFNWR1NjcmlwdEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgaW5zZXJ0
ZWRCeVBhcnNlcikKQEAgLTEyMCw0NCArMTI4LDYgQEAgdm9pZCBTVkdTY3JpcHRFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNW
R1NjcmlwdEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAg
c3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHN5bmNocm9u
aXplSHJlZigpOwotICAgICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJO
YW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVy
dHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfSAgIAotCi0gICAgaWYgKFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIFNWR1NjcmlwdEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6Zmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotfQot
CiB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsKICAgICBT
VkdFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU2NyaXB0RWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTY3JpcHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDkgKzUxLDYgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFy
c2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0g
MCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5j
aHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0
dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogCkBAIC03NSwxMyArNzIsMTAgQEAgcHJpdmF0
ZToKIAogICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0
ZXNBbmRDaGlsZHJlbigpIGNvbnN0OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFy
YXRpb25zCi0KLSAgICAvLyBTVkdVUklSZWZlcmVuY2UKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NU
UklORyhIcmVmLCBocmVmKQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAot
ICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVElFUyhTVkdTY3JpcHRFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklO
RyhIcmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICBTdHJpbmcgbV90eXBlOwogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MywxNCArMzMsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9w
ZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdTdG9wRWxlbWVudCwg
U1ZHTmFtZXM6Om9mZnNldEF0dHIsIE9mZnNldCwgb2Zmc2V0KQorQkVHSU5fREVGSU5FX0FOSU1B
VEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR1N0b3BFbGVtZW50
LCBTVkdOYW1lczo6b2Zmc2V0QXR0ciwgT2Zmc2V0LCBvZmZzZXQpCitFTkRfREVGSU5FX0FOSU1B
VEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdT
dG9wRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShvZmZzZXQp
CisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkRWxlbWVu
dCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdTdG9wRWxl
bWVudDo6U1ZHU3RvcEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
ICAgICAsIG1fb2Zmc2V0KDApCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN0
b3BUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1N0b3BFbGVtZW50
KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHU3RvcEVsZW1lbnQ+IFNWR1N0b3BFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAt
OTUsNDEgKzEwMiw2IEBAIHZvaWQgU1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdTdG9wRWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBp
ZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZU9mZnNldCgp
OwotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1l
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjpvZmZzZXRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplT2Zmc2V0
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1N0b3BFbGVtZW50OjphdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwot
ICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR1N0
b3BFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMt
PmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRFbGVtZW50Ojpm
aWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6b2Zm
c2V0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotfQotCiBSZW5kZXJPYmplY3QqIFNWR1N0b3BFbGVt
ZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsK
ICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHR3JhZGllbnRTdG9wKHRoaXMpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDE2
ICszOSwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShB
dHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIGlzR3JhZGll
bnRTdG9wKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCBSZW5kZXJPYmpl
Y3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAotICAgIC8v
IEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTlVN
QkVSKE9mZnNldCwgb2Zmc2V0KQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdTdG9wRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoT2Zmc2V0
LCBvZmZzZXQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVt
ZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVk
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDExICs0NCwxNyBAQAogI2luY2x1ZGUg
IlNWR1VzZUVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVf
QU5JTUFURURfU1RSSU5HKFNWR1N0eWxlZEVsZW1lbnQsIEhUTUxOYW1lczo6Y2xhc3NBdHRyLCBD
bGFzc05hbWUsIGNsYXNzTmFtZSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisg
ICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdTdHlsZWRFbGVtZW50LCBIVE1MTmFtZXM6OmNs
YXNzQXR0ciwgQ2xhc3NOYW1lLCBjbGFzc05hbWUpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRFbGVt
ZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGNsYXNzTmFtZSkKK0VO
RF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIHVzaW5nIG5hbWVzcGFjZSBTVkdOYW1l
czsKIApAQCAtNjIsNiArNjgsNyBAQCB2b2lkIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkoSGFz
aE1hcDxBCiBTVkdTdHlsZWRFbGVtZW50OjpTVkdTdHlsZWRFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0VsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCiB7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdT
dHlsZWRFbGVtZW50KCk7CiB9CiAKIFNWR1N0eWxlZEVsZW1lbnQ6On5TVkdTdHlsZWRFbGVtZW50
KCkKQEAgLTIwNSwxMCArMjEyLDExIEBAIGludCBTVkdTdHlsZWRFbGVtZW50Ojpjc3NQcm9wZXJ0
eUlkRm9yU1YKICAgICByZXR1cm4gcHJvcGVydHlOYW1lVG9JZE1hcC0+Z2V0KGF0dHJOYW1lLmxv
Y2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKK3R5cGVkZWYgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBB
bmltYXRlZFByb3BlcnR5VHlwZT4gQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7CiBzdGF0aWMg
aW5saW5lIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBjc3NQcm9wZXJ0eVRvVHlwZU1hcCgp
CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
c19jc3NQcm9wZXJ0eU1hcCwgKCkpOwotICAgIAorCiAgICAgaWYgKCFzX2Nzc1Byb3BlcnR5TWFw
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHNfY3NzUHJvcGVydHlNYXA7CiAKQEAgLTI2OSwx
MiArMjc3LDE1IEBAIHN0YXRpYyBpbmxpbmUgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAKICAg
ICByZXR1cm4gc19jc3NQcm9wZXJ0eU1hcDsKIH0KIAotQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIFNW
R1N0eWxlZEVsZW1lbnQ6OmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQ1NTUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OmFuaW1hdGVk
UHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBW
ZWN0b3I8QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+JiBwcm9wZXJ0eVR5cGVzKQogeworICAgIFNWR0Vs
ZW1lbnQ6OmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGF0dHJOYW1lLCBwcm9wZXJ0
eVR5cGVzKTsKKyAgICBpZiAoIXByb3BlcnR5VHlwZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKICAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgY3NzUHJvcGVydHlUeXBlTWFw
ID0gY3NzUHJvcGVydHlUb1R5cGVNYXAoKTsKICAgICBpZiAoY3NzUHJvcGVydHlUeXBlTWFwLmNv
bnRhaW5zKGF0dHJOYW1lKSkKLSAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5VHlwZU1hcC5nZXQo
YXR0ck5hbWUpOwotICAgIHJldHVybiBBbmltYXRlZFVua25vd247CisgICAgICAgIHByb3BlcnR5
VHlwZXMuYXBwZW5kKGNzc1Byb3BlcnR5VHlwZU1hcC5nZXQoYXR0ck5hbWUpKTsKIH0KIAogYm9v
bCBTVkdTdHlsZWRFbGVtZW50Ojppc0FuaW1hdGFibGVDU1NQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKQEAgLTI4MiwxMSArMjkzLDYgQEAgYm9vbCBTVkdTdHlsZWRFbGVt
ZW50Ojppc0FuaW1hdGFibGVDU1NQcgogICAgIHJldHVybiBjc3NQcm9wZXJ0eVRvVHlwZU1hcCgp
LmNvbnRhaW5zKGF0dHJOYW1lKTsKIH0KIAotdm9pZCBTVkdTdHlsZWRFbGVtZW50OjpmaWxsUGFz
c2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKQotewotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChIVE1MTmFtZXM6OmNsYXNzQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotfQotCiBi
b29sIFNWR1N0eWxlZEVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0CiB7CiAgICAgaWYgKFNW
R1N0eWxlZEVsZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHJOYW1l
KSA+IDApIHsKQEAgLTM1MSwxMiArMzU3LDYgQEAgdm9pZCBTVkdTdHlsZWRFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZwogICAgIH0KIH0KIAotdm9pZCBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChh
dHRyTmFtZSA9PSBhbnlRTmFtZSgpIHx8IGF0dHJOYW1lID09IEhUTUxOYW1lczo6Y2xhc3NBdHRy
KQotICAgICAgICBzeW5jaHJvbml6ZUNsYXNzTmFtZSgpOwotfQotCiB2b2lkIFNWR1N0eWxlZEVs
ZW1lbnQ6OmF0dGFjaCgpCiB7CiAgICAgU1ZHRWxlbWVudDo6YXR0YWNoKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyAr
NTIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQZW5kaW5nUmVzb3VyY2VzKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRIYXNQZW5kaW5nUmVzb3VyY2VzKGJvb2wpOwogCi0gICAgQW5pbWF0ZWRBdHRy
aWJ1dGVUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQ1NTUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgVmVjdG9yPEFuaW1hdGVkUHJvcGVydHlUeXBlPiYp
OwogICAgIHN0YXRpYyBib29sIGlzQW5pbWF0YWJsZUNTU1Byb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKIAogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsQ29vcmRpbmF0ZVNw
YWNlVHJhbnNmb3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2NvcGUpIGNvbnN0OwpAQCAtNjIsMTUgKzYy
LDExIEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOiAKICAgICBTVkdTdHlsZWRFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgYm9v
bCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotCi0gICAgdm9pZCBmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhdHRh
Y2goKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKQEAgLTk0LDgg
KzkwLDkgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hTZXQ8U1ZHU3R5bGVkRWxlbWVudCo+IG1fZWxl
bWVudHNXaXRoUmVsYXRpdmVMZW5ndGhzOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVj
bGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoQ2xhc3NOYW1lLCBjbGFzc05h
bWUpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVsZW1l
bnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKENsYXNzTmFtZSwgY2xhc3NOYW1l
KQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiwxMiArMzIsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRl
ZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LCBTVkdOYW1lczo6dHJhbnNmb3JtQXR0ciwgVHJh
bnNmb3JtLCB0cmFuc2Zvcm0pCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAg
IERFRklORV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudCwgU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIsIFRyYW5zZm9ybSwgdHJhbnNmb3JtKQorRU5E
X0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkodHJhbnNmb3JtKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklN
QVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQpCitFTkRfUkVHSVNURVJf
QU5JTUFURURfUFJPUEVSVElFUwogCiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6U1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkKIHsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KCk7CiB9CiAKIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50Ojp+U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQoKQpAQCAtMTE5LDI3ICsxMjYs
NiBAQCB2b2lkIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzdmdBCiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0g
ICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVUcmFu
c2Zvcm0oKTsKLSAgICAgICAgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6c3luY2hyb25pemVQ
cm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlz
U3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRMb2NhdGFi
bGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dHJhbnNmb3JtQXR0cikg
ewotICAgICAgICBzeW5jaHJvbml6ZVRyYW5zZm9ybSgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KIFNWR0VsZW1lbnQqIFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50OjpuZWFyZXN0Vmlld3BvcnRFbGVtZW50KCkgY29uc3QKIHsK
ICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtYWJsZTo6bmVhcmVzdFZpZXdwb3J0RWxlbWVudCh0aGlz
KTsKQEAgLTE2MSwxMyArMTQ3LDYgQEAgUmVuZGVyT2JqZWN0KiBTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbQogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdQYXRoKHRoaXMpOwogfQog
Ci12b2lkIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKQotewotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAg
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp0cmFuc2Zvcm1B
dHRyLCBBbmltYXRlZFRyYW5zZm9ybUxpc3QpOwotfQotCiB2b2lkIFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50Ojp0b0NsaXBQYXRoKFBhdGgmIHBhdGgpIGNvbnN0CiB7CiAgICAgdG9QYXRo
RGF0YShwYXRoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
OCwxMSArNTgsMTAgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZvaWQgZmlsbFBhc3NlZEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJik7CiAKLSAgICAvLyBB
bmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1RSQU5T
Rk9STV9MSVNUKFRyYW5zZm9ybSwgdHJhbnNmb3JtKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChUcmFuc2Zvcm0sIHRyYW5zZm9ybSkKKyAgICBF
TkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBi
b29sIGlzU3R5bGVkVHJhbnNmb3JtYWJsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCwxMyArMjgsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRl
ZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHU3dpdGNo
RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorQkVHSU5fREVG
SU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdT
d2l0Y2hFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRf
REVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJP
UEVSVElFUyhTVkdTd2l0Y2hFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FO
SU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAgUkVH
SVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJf
QU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHU3dpdGNoRWxlbWVudDo6U1ZHU3dpdGNo
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CiAgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
IHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6c3dpdGNoVGFnKSk7CisgICAgcmVn
aXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdTd2l0Y2hFbGVtZW50KCk7CiB9CiAKIFBhc3NS
ZWZQdHI8U1ZHU3dpdGNoRWxlbWVudD4gU1ZHU3dpdGNoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTY1LDMzICs3Myw2
IEBAIFJlbmRlck9iamVjdCogU1ZHU3dpdGNoRWxlbWVudDo6Y3JlYXRlUmUKICAgICByZXR1cm4g
bmV3IChhcmVuYSkgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcih0aGlzKTsKIH0KIAot
dm9pZCBTVkdTd2l0Y2hFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQotewotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpz
eW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLQotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlR
TmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgp
OwotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1l
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKLSAgICAgICAgc3luY2hyb25p
emVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgZWxzZSBpZiAoU1ZHVGVzdHM6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQ
cm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIFNWR1N3aXRjaEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHU3dpdGNoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6
ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkpOwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDE1ICs0
NiwxNSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRl
cmVyKE5vZGUqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgICAKLSAgICB2aXJ0dWFs
IHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAot
ICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucworICAgIEJFR0lOX0RFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdTd2l0Y2hFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKLSAgICAv
LyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09M
RUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQp
CisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZl
YXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9
CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdU
ZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXpl
U3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSwxNSArMjksMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmlt
YXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHU3lt
Ym9sRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotREVGSU5F
X0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oU1ZHU3ltYm9sRWxlbWVudCwgU1ZHTmFtZXM6
OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFz
cGVjdFJhdGlvKSAKLURFRklORV9BTklNQVRFRF9SRUNUKFNWR1N5bWJvbEVsZW1lbnQsIFNWR05h
bWVzOjp2aWV3Qm94QXR0ciwgVmlld0JveCwgdmlld0JveCkKK0JFR0lOX0RFRklORV9BTklNQVRF
RF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHU3ltYm9sRWxlbWVu
dCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIERFRklORV9BTklN
QVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR1N5bWJvbEVsZW1lbnQsIFNWR05hbWVzOjpwcmVz
ZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RS
YXRpbykgCisgICAgREVGSU5FX0FOSU1BVEVEX1JFQ1QoU1ZHU3ltYm9sRWxlbWVudCwgU1ZHTmFt
ZXM6OnZpZXdCb3hBdHRyLCBWaWV3Qm94LCB2aWV3Qm94KQorQkVHSU5fREVGSU5FX0FOSU1BVEVE
X1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTeW1i
b2xFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
dmlld0JveCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShwcmVzZXJ2ZUFz
cGVjdFJhdGlvKSAKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdT
dHlsZWRFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5l
IFNWR1N5bWJvbEVsZW1lbnQ6OlNWR1N5bWJvbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6c3ltYm9s
VGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdTeW1ib2xFbGVtZW50
KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHU3ltYm9sRWxlbWVudD4gU1ZHU3ltYm9sRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
QEAgLTg3LDQ4ICs5Niw2IEBAIHZvaWQgU1ZHU3ltYm9sRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmcKICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKIH0KIAotdm9p
ZCBTVkdTeW1ib2xFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBTVkdG
aXRUb1ZpZXdCb3g6OnN5bmNocm9uaXplUHJvcGVydGllcyhhdHRyTmFtZSk7Ci0gICAgICAgIFNW
R1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFt
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hy
b25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewotICAgICAgICBTVkdGaXRUb1ZpZXdCb3g6OnN5bmNocm9uaXplUHJvcGVydGllcyhhdHRyTmFt
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1N5bWJvbEVsZW1lbnQ6OmF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7
Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZH
U3ltYm9sRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0
aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHU3R5bGVkRWxlbWVu
dDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OnZpZXdCb3hBdHRyLCBBbmltYXRlZFJlY3QpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIEFuaW1hdGVkUHJlc2Vy
dmVBc3BlY3RSYXRpbyk7Ci19Ci0KIGJvb2wgU1ZHU3ltYm9sRWxlbWVudDo6c2VsZkhhc1JlbGF0
aXZlTGVuZ3RocygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShTVkdOYW1lczo6
dmlld0JveEF0dHIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCShy
ZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDIxICs0NywxNSBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAg
IHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0
JikgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVM
ZW5ndGhzKCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMK
LQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1B
VEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCkKLSAKLSAgICAvLyBTVkdGaXRUb1ZpZXdCb3gKLSAgICBERUNMQVJFX0FOSU1BVEVE
X1JFQ1QoVmlld0JveCwgdmlld0JveCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQ
RUNUUkFUSU8oUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykgCisgICAg
QkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N5bWJvbEVsZW1lbnQpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1JFQ1Qo
Vmlld0JveCwgdmlld0JveCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVD
VFJBVElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pIAorICAgIEVO
RF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNywxMyArMzcsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmlt
YXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdUUmVm
RWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCitCRUdJTl9ERUZJTkVf
QU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHVFJlZkVs
ZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQorRU5EX0RFRklORV9BTklN
QVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZH
VFJlZkVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikK
KyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNW
R1RSZWZFbGVtZW50OjpTVkdUUmVmRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjp0cmVm
VGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdUUmVmRWxlbWVudCgp
OwogfQogCiBQYXNzUmVmUHRyPFNWR1RSZWZFbGVtZW50PiBTVkdUUmVmRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTE2
NCw0MSArMTcxLDYgQEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR1RSZWZFbGVtZW50OjpzeW5j
aHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlm
IChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwot
ICAgICAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsK
LSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IFNWR1RSZWZFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwOwotfQotCi12b2lkIFNWR1RSZWZFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0K
LSAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcp
OwotfQotCiBSZW5kZXJPYmplY3QqIFNWR1RSZWZFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkg
UmVuZGVyU1ZHSW5saW5lKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50
LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQyLDYgQEAgcHJpdmF0ZToKICAgICBib29sIGlz
U3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAog
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJl
bmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIo
Tm9kZSopIGNvbnN0OwpAQCAtNTYsMTAgKzUzLDkgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwg
dm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZSgpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkg
ZGVjbGFyYXRpb25zCi0KLSAgICAvLyBTVkdVUklSZWZlcmVuY2UKLSAgICBERUNMQVJFX0FOSU1B
VEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdUUmVmRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJl
ZiwgaHJlZikKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICBSZWZQ
dHI8U3VidHJlZU1vZGlmaWNhdGlvbkV2ZW50TGlzdGVuZXI+IG1fZXZlbnRMaXN0ZW5lcjsKIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcAkocmV2aXNpb24gOTA0
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzQsMTkgKzc0LDYgQEAgYm9vbCBTVkdUU3BhbkVsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQoYwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIFNWR1RTcGFuRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdUU3BhbkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCi17ICAgICAgICAKLSAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKSk7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCi0KLS8vIHZpbTp0
cz00Om5vZXQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmgJKHJldmlzaW9u
IDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw5ICszNiw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5kZXJPYmpl
Y3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0
dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsK
LQotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAg
ICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGVzdHMuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
ZXN0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDQ5IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorLy8gRGVmaW5lIGN1c3RvbSBub24tYW5pbWF0ZWQgcHJvcGVydHkgJ3JlcXVp
cmVkRmVhdHVyZXMnLgorY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBTVkdUZXN0czo6cmVxdWlyZWRG
ZWF0dXJlc1Byb3BlcnR5SW5mbygpCit7CisgICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5m
byogc19wcm9wZXJ0eUluZm8gPSAwOworICAgIGlmICghc19wcm9wZXJ0eUluZm8pIHsKKyAgICAg
ICAgc19wcm9wZXJ0eUluZm8gPSBuZXcgU1ZHUHJvcGVydHlJbmZvKEFuaW1hdGVkVW5rbm93biwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpy
ZXF1aXJlZEZlYXR1cmVzQXR0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNWR05hbWVzOjpyZXF1aXJlZEZlYXR1cmVzQXR0ci5sb2NhbE5hbWUoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTVkdFbGVtZW50Ojpz
eW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwKTsKKyAgICB9CisgICAgcmV0dXJuIHNfcHJvcGVydHlJbmZvOwor
fQorCisKKy8vIERlZmluZSBjdXN0b20gbm9uLWFuaW1hdGVkIHByb3BlcnR5ICdyZXF1aXJlZEV4
dGVuc2lvbnMnLgorY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBTVkdUZXN0czo6cmVxdWlyZWRFeHRl
bnNpb25zUHJvcGVydHlJbmZvKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZv
KiBzX3Byb3BlcnR5SW5mbyA9IDA7CisgICAgaWYgKCFzX3Byb3BlcnR5SW5mbykgeworICAgICAg
ICBzX3Byb3BlcnR5SW5mbyA9IG5ldyBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRVbmtub3duLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6OnJl
cXVpcmVkRXh0ZW5zaW9uc0F0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTVkdOYW1lczo6cmVxdWlyZWRFeHRlbnNpb25zQXR0ci5sb2NhbE5hbWUoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTVkdFbGVtZW50
OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDApOworICAgIH0KKyAgICByZXR1cm4gc19wcm9wZXJ0eUlu
Zm87Cit9CisKKy8vIERlZmluZSBjdXN0b20gbm9uLWFuaW1hdGVkIHByb3BlcnR5ICdzeXN0ZW1M
YW5ndWFnZScuCitjb25zdCBTVkdQcm9wZXJ0eUluZm8qIFNWR1Rlc3RzOjpzeXN0ZW1MYW5ndWFn
ZVByb3BlcnR5SW5mbygpCit7CisgICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogc19w
cm9wZXJ0eUluZm8gPSAwOworICAgIGlmICghc19wcm9wZXJ0eUluZm8pIHsKKyAgICAgICAgc19w
cm9wZXJ0eUluZm8gPSBuZXcgU1ZHUHJvcGVydHlJbmZvKEFuaW1hdGVkVW5rbm93biwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpzeXN0ZW1M
YW5ndWFnZUF0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTVkdOYW1lczo6c3lzdGVtTGFuZ3VhZ2VBdHRyLmxvY2FsTmFtZSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNWR0VsZW1lbnQ6OnN5bmNocm9uaXpl
U3lzdGVtTGFuZ3VhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwKTsKKyAgICB9CisgICAgcmV0dXJuIHNfcHJvcGVydHlJbmZvOworfQorCiBTVkdUZXN0
czo6U1ZHVGVzdHMoKQogICAgIDogbV9yZXF1aXJlZEZlYXR1cmVzKFNWR05hbWVzOjpyZXF1aXJl
ZEZlYXR1cmVzQXR0cikKICAgICAsIG1fcmVxdWlyZWRFeHRlbnNpb25zKFNWR05hbWVzOjpyZXF1
aXJlZEV4dGVuc2lvbnNBdHRyKQpAQCAtMzksNiArODIsMTcgQEAgU1ZHVGVzdHM6OlNWR1Rlc3Rz
KCkKIHsKIH0KIAorU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgU1ZHVGVzdHM6OmF0dHJpYnV0
ZVRvUHJvcGVydHlNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU1ZHQXR0cmlidXRl
VG9Qcm9wZXJ0eU1hcCwgbWFwLCAoKSk7CisgICAgaWYgKCFtYXAuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gbWFwOworICAgIG1hcC5hZGRQcm9wZXJ0eShyZXF1aXJlZEZlYXR1cmVzUHJvcGVy
dHlJbmZvKCkpOworICAgIG1hcC5hZGRQcm9wZXJ0eShyZXF1aXJlZEV4dGVuc2lvbnNQcm9wZXJ0
eUluZm8oKSk7CisgICAgbWFwLmFkZFByb3BlcnR5KHN5c3RlbUxhbmd1YWdlUHJvcGVydHlJbmZv
KCkpOworICAgIHJldHVybiBtYXA7Cit9CisKIGJvb2wgU1ZHVGVzdHM6Omhhc0V4dGVuc2lvbihj
b25zdCBTdHJpbmcmKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbWUhCkBAIC0x
MTUsNDUgKzE2OSwzMSBAQCB2b2lkIFNWR1Rlc3RzOjphZGRTdXBwb3J0ZWRBdHRyaWJ1dGVzKEhh
CiAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5hZGQoU1ZHTmFtZXM6OnN5c3RlbUxhbmd1YWdlQXR0
cik7CiB9CiAKLXZvaWQgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyhTVkdFbGVtZW50
KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAg
aWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVSZXF1aXJl
ZEZlYXR1cmVzKGNvbnRleHRFbGVtZW50KTsKLSAgICAgICAgc3luY2hyb25pemVSZXF1aXJlZEV4
dGVuc2lvbnMoY29udGV4dEVsZW1lbnQpOwotICAgICAgICBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1
YWdlKGNvbnRleHRFbGVtZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6cmVxdWlyZWRGZWF0dXJlc0F0dHIpCi0gICAgICAgIHN5bmNo
cm9uaXplUmVxdWlyZWRGZWF0dXJlcyhjb250ZXh0RWxlbWVudCk7Ci0gICAgZWxzZSBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OnJlcXVpcmVkRXh0ZW5zaW9uc0F0dHIpCi0gICAgICAgIHN5bmNo
cm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKGNvbnRleHRFbGVtZW50KTsKLSAgICBlbHNlIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6c3lzdGVtTGFuZ3VhZ2VBdHRyKQotICAgICAgICBzeW5jaHJv
bml6ZVN5c3RlbUxhbmd1YWdlKGNvbnRleHRFbGVtZW50KTsKLX0KLQogdm9pZCBTVkdUZXN0czo6
c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQog
eworICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7CiAgICAgaWYgKCFtX3JlcXVpcmVkRmVhdHVy
ZXMuc2hvdWxkU3luY2hyb25pemUpCiAgICAgICAgIHJldHVybjsKICAgICBBdG9taWNTdHJpbmcg
dmFsdWUobV9yZXF1aXJlZEZlYXR1cmVzLnZhbHVlLnZhbHVlQXNTdHJpbmcoKSk7Ci0gICAgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUoY29udGV4dEVs
ZW1lbnQsIFNWR05hbWVzOjpyZXF1aXJlZEZlYXR1cmVzQXR0ciwgdmFsdWUpOworICAgIFNWR0Fu
aW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5bmNocm9uaXplKGNvbnRleHRFbGVt
ZW50LCByZXF1aXJlZEZlYXR1cmVzUHJvcGVydHlJbmZvKCktPmF0dHJpYnV0ZU5hbWUsIHZhbHVl
KTsKIH0KIAogdm9pZCBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoU1ZH
RWxlbWVudCogY29udGV4dEVsZW1lbnQpCiB7CisgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsK
ICAgICBpZiAoIW1fcmVxdWlyZWRFeHRlbnNpb25zLnNob3VsZFN5bmNocm9uaXplKQogICAgICAg
ICByZXR1cm47CiAgICAgQXRvbWljU3RyaW5nIHZhbHVlKG1fcmVxdWlyZWRFeHRlbnNpb25zLnZh
bHVlLnZhbHVlQXNTdHJpbmcoKSk7Ci0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXpl
cjx0cnVlPjo6c3luY2hyb25pemUoY29udGV4dEVsZW1lbnQsIFNWR05hbWVzOjpyZXF1aXJlZEV4
dGVuc2lvbnNBdHRyLCB2YWx1ZSk7CisgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXpl
cjx0cnVlPjo6c3luY2hyb25pemUoY29udGV4dEVsZW1lbnQsIHJlcXVpcmVkRXh0ZW5zaW9uc1By
b3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgU1ZHVGVzdHM6
OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiB7
CisgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKICAgICBpZiAoIW1fc3lzdGVtTGFuZ3VhZ2Uu
c2hvdWxkU3luY2hyb25pemUpCiAgICAgICAgIHJldHVybjsKICAgICBBdG9taWNTdHJpbmcgdmFs
dWUobV9zeXN0ZW1MYW5ndWFnZS52YWx1ZS52YWx1ZUFzU3RyaW5nKCkpOwotICAgIFNWR0FuaW1h
dGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5bmNocm9uaXplKGNvbnRleHRFbGVtZW50
LCBTVkdOYW1lczo6c3lzdGVtTGFuZ3VhZ2VBdHRyLCB2YWx1ZSk7CisgICAgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUoY29udGV4dEVsZW1lbnQsIHN5
c3RlbUxhbmd1YWdlUHJvcGVydHlJbmZvKCktPmF0dHJpYnV0ZU5hbWUsIHZhbHVlKTsKIH0KIAog
U1ZHU3RyaW5nTGlzdCYgU1ZHVGVzdHM6OnJlcXVpcmVkRmVhdHVyZXMoKQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1Rlc3RzLmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
c3RzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZpbmUgU1ZHVGVzdHNf
aAogCiAjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5LmgiCiAj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oIgogI2luY2x1ZGUgIlNWR1N0cmlu
Z0xpc3QuaCIKIApAQCAtNDUsMTggKzQ2LDI3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkU3Vw
cG9ydGVkQXR0cmlidXRlcyhIYXNoU2V0PFF1YWxpZmllZE5hbWU+Jik7CiAgICAgYm9vbCBoYW5k
bGVBdHRyaWJ1dGVDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKLSAgICB2b2lkIHN5bmNocm9uaXplUHJvcGVydGllcyhTVkdFbGVtZW50KiwgY29uc3QgUXVh
bGlmaWVkTmFtZSYpOworCisgICAgc3RhdGljIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAmIGF0
dHJpYnV0ZVRvUHJvcGVydHlNYXAoKTsKIAogcHJvdGVjdGVkOgogICAgIFNWR1Rlc3RzKCk7CiAK
LXByaXZhdGU6Ci0gICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoU1ZHRWxlbWVu
dCopOwotICAgIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoU1ZHRWxlbWVudCop
OwotICAgIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZShTVkdFbGVtZW50Kik7CisgICAg
dm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1l
bnQpOworICAgIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoU1ZHRWxlbWVudCog
Y29udGV4dEVsZW1lbnQpOworICAgIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZShTVkdF
bGVtZW50KiBjb250ZXh0RWxlbWVudCk7CiAKK3ByaXZhdGU6CisgICAgLy8gQ3VzdG9tICdyZXF1
aXJlZEZlYXR1cmVzJyBwcm9wZXJ0eQorICAgIHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8q
IHJlcXVpcmVkRmVhdHVyZXNQcm9wZXJ0eUluZm8oKTsKICAgICBTVkdTeW5jaHJvbml6YWJsZUFu
aW1hdGVkUHJvcGVydHk8U1ZHU3RyaW5nTGlzdD4gbV9yZXF1aXJlZEZlYXR1cmVzOworCisgICAg
Ly8gQ3VzdG9tICdyZXF1aXJlZEV4dGVuc2lvbnMnIHByb3BlcnR5CisgICAgc3RhdGljIGNvbnN0
IFNWR1Byb3BlcnR5SW5mbyogcmVxdWlyZWRFeHRlbnNpb25zUHJvcGVydHlJbmZvKCk7CiAgICAg
U1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5PFNWR1N0cmluZ0xpc3Q+IG1fcmVxdWly
ZWRFeHRlbnNpb25zOworCisgICAgLy8gQ3VzdG9tICdzeXN0ZW1MYW5ndWFnZScgcHJvcGVydHkK
KyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBzeXN0ZW1MYW5ndWFnZVByb3BlcnR5
SW5mbygpOwogICAgIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdTdHJpbmdM
aXN0PiBtX3N5c3RlbUxhbmd1YWdlOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RleHRDb250ZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDI0ICszOCw1OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3Bl
cnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHVGV4dENvbnRl
bnRFbGVtZW50LCBTVkdOYW1lczo6bGVuZ3RoQWRqdXN0QXR0ciwgTGVuZ3RoQWRqdXN0LCBsZW5n
dGhBZGp1c3QsIFNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHTGVuZ3RoQWRqdXN0VHlwZSkKLURF
RklORV9BTklNQVRFRF9CT09MRUFOKFNWR1RleHRDb250ZW50RWxlbWVudCwgU1ZHTmFtZXM6OmV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorLy8gRGVmaW5lIGN1c3RvbSBhbmltYXRlZCBwcm9w
ZXJ0eSAndGV4dExlbmd0aCcuCitjb25zdCBTVkdQcm9wZXJ0eUluZm8qIFNWR1RleHRDb250ZW50
RWxlbWVudDo6dGV4dExlbmd0aFByb3BlcnR5SW5mbygpCit7CisgICAgc3RhdGljIGNvbnN0IFNW
R1Byb3BlcnR5SW5mbyogc19wcm9wZXJ0eUluZm8gPSAwOworICAgIGlmICghc19wcm9wZXJ0eUlu
Zm8pIHsKKyAgICAgICAgc19wcm9wZXJ0eUluZm8gPSBuZXcgU1ZHUHJvcGVydHlJbmZvKEFuaW1h
dGVkTGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyLmxvY2FsTmFtZSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNWR1RleHRDb250ZW50
RWxlbWVudDo6c3luY2hyb25pemVUZXh0TGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJlNWR1RleHRDb250ZW50RWxlbWVudDo6bG9va3VwT3JDcmVh
dGVUZXh0TGVuZ3RoV3JhcHBlcik7CisgICAgfQorICAgIHJldHVybiBzX3Byb3BlcnR5SW5mbzsK
K30KKworQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFU
RURfRU5VTUVSQVRJT04oU1ZHVGV4dENvbnRlbnRFbGVtZW50LCBTVkdOYW1lczo6bGVuZ3RoQWRq
dXN0QXR0ciwgTGVuZ3RoQWRqdXN0LCBsZW5ndGhBZGp1c3QsIExlbmd0aEFkanVzdFR5cGUpCisg
ICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHVGV4dENvbnRlbnRFbGVtZW50LCBTVkdOYW1l
czo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0Q29udGVu
dEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkodGV4dExlbmd0
aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShsZW5ndGhBZGp1c3QpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRF
bGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3Rz
KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogU1ZHVGV4dENvbnRlbnRFbGVt
ZW50OjpTVkdUZXh0Q29udGVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkKLSAgICAsIG1fc3BlY2lmaWVkVGV4dExlbmd0aChMZW5ndGhNb2RlT3RoZXIpCiAgICAg
LCBtX3RleHRMZW5ndGgoTGVuZ3RoTW9kZU90aGVyKQotICAgICwgbV9sZW5ndGhBZGp1c3QoTEVO
R1RIQURKVVNUX1NQQUNJTkcpCisgICAgLCBtX3NwZWNpZmllZFRleHRMZW5ndGgoTGVuZ3RoTW9k
ZU90aGVyKQorICAgICwgbV9sZW5ndGhBZGp1c3QoTGVuZ3RoQWRqdXN0U3BhY2luZykKIHsKKyAg
ICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1RleHRDb250ZW50RWxlbWVudCgpOwog
fQogCi12b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6c3luY2hyb25pemVUZXh0TGVuZ3RoKCkK
K3ZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzeW5jaHJvbml6ZVRleHRMZW5ndGgodm9pZCog
Y29udGV4dEVsZW1lbnQpCiB7Ci0gICAgaWYgKCFtX3RleHRMZW5ndGguc2hvdWxkU3luY2hyb25p
emUpCisgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICBTVkdUZXh0Q29udGVudEVsZW1l
bnQqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR1RleHRDb250ZW50RWxlbWVudCo+KGNvbnRl
eHRFbGVtZW50KTsKKyAgICBpZiAoIW93bmVyVHlwZS0+bV90ZXh0TGVuZ3RoLnNob3VsZFN5bmNo
cm9uaXplKQogICAgICAgICByZXR1cm47Ci0gICAgQXRvbWljU3RyaW5nIHZhbHVlKFNWR1Byb3Bl
cnR5VHJhaXRzPFNWR0xlbmd0aD46OnRvU3RyaW5nKG1fc3BlY2lmaWVkVGV4dExlbmd0aCkpOwot
ICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5bmNocm9uaXplKHRo
aXMsIFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0ciwgdmFsdWUpOworICAgIEF0b21pY1N0cmluZyB2
YWx1ZShTVkdQcm9wZXJ0eVRyYWl0czxTVkdMZW5ndGg+Ojp0b1N0cmluZyhvd25lclR5cGUtPm1f
c3BlY2lmaWVkVGV4dExlbmd0aCkpOworICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6
ZXI8dHJ1ZT46OnN5bmNocm9uaXplKG93bmVyVHlwZSwgdGV4dExlbmd0aFByb3BlcnR5SW5mbygp
LT5hdHRyaWJ1dGVOYW1lLCB2YWx1ZSk7Cit9CisKK1Bhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eT4gU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojpsb29rdXBPckNyZWF0ZVRleHRMZW5ndGhXcmFw
cGVyKHZvaWQqIGNvbnRleHRFbGVtZW50KQoreworICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7
CisgICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50KiBvd25lclR5cGUgPSBzdGF0aWNfY2FzdDxTVkdU
ZXh0Q29udGVudEVsZW1lbnQqPihjb250ZXh0RWxlbWVudCk7CisgICAgcmV0dXJuIFNWR0FuaW1h
dGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdUZXh0Q29udGVudEVsZW1lbnQs
IFNWR0FuaW1hdGVkTGVuZ3RoLCBTVkdMZW5ndGgsIHRydWU+CisgICAgICAgICAgIChvd25lclR5
cGUsIHRleHRMZW5ndGhQcm9wZXJ0eUluZm8oKSwgb3duZXJUeXBlLT5tX3RleHRMZW5ndGgudmFs
dWUpOwogfQogCiBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiBTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6OnRleHRMZW5ndGhBbmltYXRlZCgpCkBAIC02OCw3ICsxMDIsOCBAQCBQYXNzUmVmUHRy
PFNWR0FuaW1hdGVkTGVuZ3RoPiBTVkdUZXh0Q29uCiAgICAgfQogCiAgICAgbV90ZXh0TGVuZ3Ro
LnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKLSAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0
eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR0FuaW1hdGVkTGVuZ3RoLCBTVkdMZW5ndGg+KHRo
aXMsIFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0ciwgU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyLmxv
Y2FsTmFtZSgpLCBtX3RleHRMZW5ndGgudmFsdWUpOworICAgIHJldHVybiBzdGF0aWNfcG9pbnRl
cl9jYXN0PFNWR0FuaW1hdGVkTGVuZ3RoPihsb29rdXBPckNyZWF0ZVRleHRMZW5ndGhXcmFwcGVy
KHRoaXMpKTsKKwogfQogCiB1bnNpZ25lZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmdldE51bWJl
ck9mQ2hhcnMoKSBjb25zdApAQCAtMjAyLDcgKzIzNyw3IEBAIHZvaWQgU1ZHVGV4dENvbnRlbnRF
bGVtZW50OjpwYXJzZU1hcHBlZEEKICAgICB9CiAKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjpsZW5ndGhBZGp1c3RBdHRyKSB7Ci0gICAgICAgIFNWR0xlbmd0aEFkanVzdFR5cGUg
cHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aEFkanVzdFR5cGU+Ojpm
cm9tU3RyaW5nKGF0dHItPnZhbHVlKCkpOworICAgICAgICBMZW5ndGhBZGp1c3RUeXBlIHByb3Bl
cnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxMZW5ndGhBZGp1c3RUeXBlPjo6ZnJvbVN0cmlu
ZyhhdHRyLT52YWx1ZSgpKTsKICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQogICAgICAg
ICAgICAgc2V0TGVuZ3RoQWRqdXN0QmFzZVZhbHVlKHByb3BlcnR5VmFsdWUpOwogICAgICAgICBy
ZXR1cm47CkBAIC0yMzYsNDUgKzI3MSw2IEBAIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojpw
YXJzZU1hcHBlZEEKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdUZXh0
Q29udGVudEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAg
c3luY2hyb25pemVMZW5ndGhBZGp1c3QoKTsKLSAgICAgICAgc3luY2hyb25pemVUZXh0TGVuZ3Ro
KCk7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAg
ICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAg
ICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0
dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6bGVuZ3RoQWRqdXN0QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUxlbmd0
aEFkanVzdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVRleHRMZW5n
dGgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5j
aHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAg
ICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQog
dm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKQEAgLTI5NCwxNCArMjkwLDYgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZQogICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91
dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyKTsKIH0KIAotdm9pZCBTVkdU
ZXh0Q29udGVudEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApCi17
Ci0gICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLQotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6dGV4dExlbmd0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Omxlbmd0aEFkanVz
dEF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotfQotCiBib29sIFNWR1RleHRDb250ZW50RWxl
bWVudDo6c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0CiB7CiAgICAgLy8gQW55IGVsZW1l
bnQgb2YgdGhlIDx0ZXh0PiBzdWJ0cmVlIGlzIGFkdmVydGl6ZWQgYXMgdXNpbmcgcmVsYXRpdmUg
bGVuZ3Rocy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50
LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNSArMzIsNTEgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitlbnVtIExlbmd0aEFkanVzdFR5cGUgeworICAgIExlbmd0aEFkanVzdFVu
a25vd24sCisgICAgTGVuZ3RoQWRqdXN0U3BhY2luZywKKyAgICBMZW5ndGhBZGp1c3RTcGFjaW5n
QW5kR2x5cGhzCit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8TGVu
Z3RoQWRqdXN0VHlwZT4geworICAgIHN0YXRpYyBMZW5ndGhBZGp1c3RUeXBlIGhpZ2hlc3RFbnVt
VmFsdWUoKSB7IHJldHVybiBMZW5ndGhBZGp1c3RTcGFjaW5nQW5kR2x5cGhzOyB9CisKKyAgICBz
dGF0aWMgU3RyaW5nIHRvU3RyaW5nKExlbmd0aEFkanVzdFR5cGUgdHlwZSkKKyAgICB7CisgICAg
ICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIExlbmd0aEFkanVzdFVua25vd246Cisg
ICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgY2FzZSBMZW5ndGhBZGp1
c3RTcGFjaW5nOgorICAgICAgICAgICAgcmV0dXJuICJzcGFjaW5nIjsKKyAgICAgICAgY2FzZSBM
ZW5ndGhBZGp1c3RTcGFjaW5nQW5kR2x5cGhzOgorICAgICAgICAgICAgcmV0dXJuICJzcGFjaW5n
QW5kR2x5cGhzIjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgTGVuZ3Ro
QWRqdXN0VHlwZSBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCisgICAgeworICAgICAg
ICBpZiAodmFsdWUgPT0gInNwYWNpbmdBbmRHbHlwaHMiKQorICAgICAgICAgICAgcmV0dXJuIExl
bmd0aEFkanVzdFNwYWNpbmdBbmRHbHlwaHM7CisgICAgICAgIGlmICh2YWx1ZSA9PSAic3BhY2lu
ZyIpCisgICAgICAgICAgICByZXR1cm4gTGVuZ3RoQWRqdXN0U3BhY2luZzsKKyAgICAgICAgcmV0
dXJuIExlbmd0aEFkanVzdFVua25vd247CisgICAgfQorfTsKKwogY2xhc3MgU1ZHVGV4dENvbnRl
bnRFbGVtZW50IDogcHVibGljIFNWR1N0eWxlZEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdWJsaWMgU1ZHTGFuZ1NwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVi
bGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgewogcHVibGljOgotICAgIGVudW0gU1ZH
TGVuZ3RoQWRqdXN0VHlwZSB7Ci0gICAgICAgIExFTkdUSEFESlVTVF9VTktOT1dOICAgICAgICAg
ICAgPSAwLAotICAgICAgICBMRU5HVEhBREpVU1RfU1BBQ0lORyAgICAgICAgICAgID0gMSwKLSAg
ICAgICAgTEVOR1RIQURKVVNUX1NQQUNJTkdBTkRHTFlQSFMgICA9IDIKKyAgICAvLyBGb3J3YXJk
IGRlY2xhcmUgdGhlc2UgZW51bXMgaW4gdGhlIHczYyBuYW1pbmcgc2NoZW1lLCBmb3IgSURMIGdl
bmVyYXRpb24KKyAgICBlbnVtIHsKKyAgICAgICAgTEVOR1RIQURKVVNUX1VOS05PV04gPSBMZW5n
dGhBZGp1c3RVbmtub3duLAorICAgICAgICBMRU5HVEhBREpVU1RfU1BBQ0lORyA9IExlbmd0aEFk
anVzdFNwYWNpbmcsCisgICAgICAgIExFTkdUSEFESlVTVF9TUEFDSU5HQU5ER0xZUEhTID0gTGVu
Z3RoQWRqdXN0U3BhY2luZ0FuZEdseXBocwogICAgIH07CiAKICAgICB1bnNpZ25lZCBnZXROdW1i
ZXJPZkNoYXJzKCkgY29uc3Q7CkBAIC01OSw2ICs5NSw3IEBAIHB1YmxpYzoKICAgICAvLyBhcyBp
dHMgZ2V0dGVyIG5lZWRzIHNwZWNpYWwgaGFuZGxpbmcgKHJldHVybiBnZXRDb21wdXRlZFRleHRM
ZW5ndGgoKSwgaW5zdGVhZCBvZiBtX3RleHRMZW5ndGgpLgogICAgIFNWR0xlbmd0aCYgc3BlY2lm
aWVkVGV4dExlbmd0aCgpIHsgcmV0dXJuIG1fc3BlY2lmaWVkVGV4dExlbmd0aDsgfQogICAgIFBh
c3NSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHRleHRMZW5ndGhBbmltYXRlZCgpOworICAgIHN0
YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIHRleHRMZW5ndGhQcm9wZXJ0eUluZm8oKTsKIAog
cHJvdGVjdGVkOgogICAgIFNWR1RleHRDb250ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKQEAgLTY4LDggKzEwNSw2IEBAIHByb3RlY3RlZDoKICAgICBib29sIGlz
U3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2b2lkIGZp
bGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYpOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25z
dDsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2Vy
ID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwg
aW50IGNoaWxkQ291bnREZWx0YSA9IDApOwpAQCAtNzcsNDMgKzExMiwyMSBAQCBwcm90ZWN0ZWQ6
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRDb250ZW50KCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAg
dm9pZCBzeW5jaHJvbml6ZVRleHRMZW5ndGgoKTsKLSAgICBTVkdMZW5ndGggbV9zcGVjaWZpZWRU
ZXh0TGVuZ3RoOworICAgIC8vIEN1c3RvbSAndGV4dExlbmd0aCcgcHJvcGVydHkKKyAgICBzdGF0
aWMgdm9pZCBzeW5jaHJvbml6ZVRleHRMZW5ndGgodm9pZCogY29udGV4dEVsZW1lbnQpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlVGV4
dExlbmd0aFdyYXBwZXIodm9pZCogY29udGV4dEVsZW1lbnQpOwogICAgIG11dGFibGUgU1ZHU3lu
Y2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5PFNWR0xlbmd0aD4gbV90ZXh0TGVuZ3RoOwotICAg
IERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oTGVuZ3RoQWRqdXN0LCBsZW5ndGhBZGp1c3Qs
IFNWR0xlbmd0aEFkanVzdFR5cGUpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpIAotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0
IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHTGVuZ3RoQWRqdXN0
VHlwZT4gewotICAgIHN0YXRpYyBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OlNWR0xlbmd0aEFkanVz
dFR5cGUgaGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJuIFNWR1RleHRDb250ZW50RWxlbWVudDo6
TEVOR1RIQURKVVNUX1NQQUNJTkdBTkRHTFlQSFM7IH0KLQotICAgIHN0YXRpYyBTdHJpbmcgdG9T
dHJpbmcoU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpTVkdMZW5ndGhBZGp1c3RUeXBlIHR5cGUpCi0g
ICAgewotICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBTVkdUZXh0Q29udGVu
dEVsZW1lbnQ6OkxFTkdUSEFESlVTVF9VTktOT1dOOgotICAgICAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7Ci0gICAgICAgIGNhc2UgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpMRU5HVEhBREpV
U1RfU1BBQ0lORzoKLSAgICAgICAgICAgIHJldHVybiAic3BhY2luZyI7Ci0gICAgICAgIGNhc2Ug
U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpMRU5HVEhBREpVU1RfU1BBQ0lOR0FOREdMWVBIUzoKLSAg
ICAgICAgICAgIHJldHVybiAic3BhY2luZ0FuZEdseXBocyI7Ci0gICAgICAgIH0KLQotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0g
ICAgfQorICAgIFNWR0xlbmd0aCBtX3NwZWNpZmllZFRleHRMZW5ndGg7CiAKLSAgICBzdGF0aWMg
U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpTVkdMZW5ndGhBZGp1c3RUeXBlIGZyb21TdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmICh2YWx1ZSA9PSAic3BhY2luZ0Fu
ZEdseXBocyIpCi0gICAgICAgICAgICByZXR1cm4gU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpMRU5H
VEhBREpVU1RfU1BBQ0lOR0FOREdMWVBIUzsKLSAgICAgICAgaWYgKHZhbHVlID09ICJzcGFjaW5n
IikKLSAgICAgICAgICAgIHJldHVybiBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OkxFTkdUSEFESlVT
VF9TUEFDSU5HOwotICAgICAgICByZXR1cm4gU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpMRU5HVEhB
REpVU1RfVU5LTk9XTjsKLSAgICB9CisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR1RleHRDb250ZW50RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVN
RVJBVElPTihMZW5ndGhBZGp1c3QsIGxlbmd0aEFkanVzdCwgTGVuZ3RoQWRqdXN0VHlwZSkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpIAorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJl
cyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9u
cygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKHRoaXMpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSB7IFNWR1Rlc3RzOjpz
eW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAJKHJldmlzaW9u
IDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsMTMgKzM1LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8g
QW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9UUkFOU0ZPUk1f
TElTVChTVkdUZXh0RWxlbWVudCwgU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIsIFRyYW5zZm9ybSwg
dHJhbnNmb3JtKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVf
QU5JTUFURURfVFJBTlNGT1JNX0xJU1QoU1ZHVGV4dEVsZW1lbnQsIFNWR05hbWVzOjp0cmFuc2Zv
cm1BdHRyLCBUcmFuc2Zvcm0sIHRyYW5zZm9ybSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9Q
RVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGV4dEVsZW1l
bnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkodHJhbnNmb3JtKQorICAg
IFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1RleHRQb3NpdGlvbmluZ0Vs
ZW1lbnQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHVGV4
dEVsZW1lbnQ6OlNWR1RleHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2MpCiAgICAgOiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KHRhZ05hbWUsIGRv
YykKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6dGV4dFRhZykpOworICAgIHJl
Z2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVGV4dEVsZW1lbnQoKTsKIH0KIAogUGFzc1Jl
ZlB0cjxTVkdUZXh0RWxlbWVudD4gU1ZHVGV4dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xNjAsNDEgKzE2Nyw2IEBA
IHZvaWQgU1ZHVGV4dEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdUZXh0RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0g
YW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVRyYW5zZm9ybSgpOwotICAgICAgICBT
VkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN5bmNocm9u
aXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplVHJhbnNmb3JtKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1RleHRFbGVt
ZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQot
Ci12b2lkIFNWR1RleHRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQot
ewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6dHJhbnNmb3JtQXR0ciwgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KTsK
LX0KLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
ZXh0RWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
ZXh0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxMiArNTYsMTAgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7
CiAgICAgICAgICAgICAKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChUcmFu
c2Zvcm0sIHRyYW5zZm9ybSkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHVGV4dEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfVFJBTlNGT1JNX0xJU1Qo
VHJhbnNmb3JtLCB0cmFuc2Zvcm0pCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElF
UwogCiAgICAgLy8gVXNlZCBieSA8YW5pbWF0ZU1vdGlvbj4KICAgICBPd25QdHI8QWZmaW5lVHJh
bnNmb3JtPiBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxOSAr
MzEsMjkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBk
ZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdUZXh0UGF0aEVsZW1lbnQsIFNW
R05hbWVzOjpzdGFydE9mZnNldEF0dHIsIFN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCkKLURFRklO
RV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdUZXh0UGF0aEVsZW1lbnQsIFNWR05hbWVzOjptZXRo
b2RBdHRyLCBNZXRob2QsIG1ldGhvZCwgU1ZHVGV4dFBhdGhNZXRob2RUeXBlKQotREVGSU5FX0FO
SU1BVEVEX0VOVU1FUkFUSU9OKFNWR1RleHRQYXRoRWxlbWVudCwgU1ZHTmFtZXM6OnNwYWNpbmdB
dHRyLCBTcGFjaW5nLCBzcGFjaW5nLCBTVkdUZXh0UGF0aFNwYWNpbmdUeXBlKQotREVGSU5FX0FO
SU1BVEVEX1NUUklORyhTVkdUZXh0UGF0aEVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBI
cmVmLCBocmVmKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVf
QU5JTUFURURfTEVOR1RIKFNWR1RleHRQYXRoRWxlbWVudCwgU1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0
QXR0ciwgU3RhcnRPZmZzZXQsIHN0YXJ0T2Zmc2V0KQorICAgIERFRklORV9BTklNQVRFRF9FTlVN
RVJBVElPTihTVkdUZXh0UGF0aEVsZW1lbnQsIFNWR05hbWVzOjptZXRob2RBdHRyLCBNZXRob2Qs
IG1ldGhvZCwgU1ZHVGV4dFBhdGhNZXRob2RUeXBlKQorICAgIERFRklORV9BTklNQVRFRF9FTlVN
RVJBVElPTihTVkdUZXh0UGF0aEVsZW1lbnQsIFNWR05hbWVzOjpzcGFjaW5nQXR0ciwgU3BhY2lu
Zywgc3BhY2luZywgU1ZHVGV4dFBhdGhTcGFjaW5nVHlwZSkKKyAgICBERUZJTkVfQU5JTUFURURf
U1RSSU5HKFNWR1RleHRQYXRoRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhy
ZWYpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdUZXh0UGF0aEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoc3RhcnRPZmZzZXQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkobWV0aG9kKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZ
KHNwYWNpbmcpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAg
ICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0Q29udGVudEVsZW1l
bnQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHVGV4dFBh
dGhFbGVtZW50OjpTVkdUZXh0UGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHVGV4dENvbnRlbnRFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQogICAgICwgbV9zdGFydE9mZnNldChMZW5ndGhNb2RlT3RoZXIpCi0gICAg
LCBtX21ldGhvZChTVkdfVEVYVFBBVEhfTUVUSE9EVFlQRV9BTElHTikKLSAgICAsIG1fc3BhY2lu
ZyhTVkdfVEVYVFBBVEhfU1BBQ0lOR1RZUEVfRVhBQ1QpCisgICAgLCBtX21ldGhvZChUZXh0UGF0
aE1ldGhvZEFsaWduKQorICAgICwgbV9zcGFjaW5nKFRleHRQYXRoU3BhY2luZ0V4YWN0KQogewog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjp0ZXh0UGF0aFRhZykpOworICAgIHJlZ2lz
dGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVGV4dFBhdGhFbGVtZW50KCk7CiB9CiAKIFBhc3NS
ZWZQdHI8U1ZHVGV4dFBhdGhFbGVtZW50PiBTVkdUZXh0UGF0aEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xMTIsNjIg
KzEyMiw2IEBAIHZvaWQgU1ZHVGV4dFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGEKICAgICAg
ICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFs
aWRhdGlvbihvYmplY3QpOwogfQogCi12b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6c3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0
ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVN0YXJ0T2Zmc2V0KCk7
Ci0gICAgICAgIHN5bmNocm9uaXplTWV0aG9kKCk7Ci0gICAgICAgIHN5bmNocm9uaXplU3BhY2lu
ZygpOwotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgU1ZHVGV4dENvbnRlbnRF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAg
ICAgIFNWR1RleHRDb250ZW50RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnN0YXJ0T2Zmc2V0QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVN0YXJ0T2Zmc2V0KCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
OjptZXRob2RBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplTWV0aG9kKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpzcGFjaW5n
QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVNwYWNpbmcoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICAKLSAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgU1ZHVGV4dFBhdGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6Zmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpmaWxsUGFzc2Vk
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwot
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6c3RhcnRPZmZzZXRB
dHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjptZXRob2RBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNwYWNpbmdBdHRyLCBBbmltYXRlZEVu
dW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1l
czo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQogUmVuZGVyT2JqZWN0KiBTVkdUZXh0
UGF0aEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5
bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdUZXh0UGF0aCh0aGlzKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgJKHJldmlzaW9uIDkw
NDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw3MSArMjgsMjkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBT
VkdUZXh0UGF0aE1ldGhvZFR5cGUgewotICAgIFNWR19URVhUUEFUSF9NRVRIT0RUWVBFX1VOS05P
V04gPSAwLAotICAgIFNWR19URVhUUEFUSF9NRVRIT0RUWVBFX0FMSUdOID0gMSwKLSAgICBTVkdf
VEVYVFBBVEhfTUVUSE9EVFlQRV9TVFJFVENIID0gMgorICAgIFRleHRQYXRoTWV0aG9kVW5rbm93
biA9IDAsCisgICAgVGV4dFBhdGhNZXRob2RBbGlnbiA9IDEsCisgICAgVGV4dFBhdGhNZXRob2RT
dHJldGNoID0gMgogfTsKIAogZW51bSBTVkdUZXh0UGF0aFNwYWNpbmdUeXBlIHsKLSAgICBTVkdf
VEVYVFBBVEhfU1BBQ0lOR1RZUEVfVU5LTk9XTiA9IDAsCi0gICAgU1ZHX1RFWFRQQVRIX1NQQUNJ
TkdUWVBFX0FVVE8gPSAxLAotICAgIFNWR19URVhUUEFUSF9TUEFDSU5HVFlQRV9FWEFDVCA9IDIK
LX07Ci0KLWNsYXNzIFNWR1RleHRQYXRoRWxlbWVudCA6IHB1YmxpYyBTVkdUZXh0Q29udGVudEVs
ZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNl
IHsKLXB1YmxpYzoKLSAgICAvLyBGb3J3YXJkIGRlY2xhcmUgdGhlc2UgZW51bXMgaW4gdGhlIHcz
YyBuYW1pbmcgc2NoZW1lLCBmb3IgSURMIGdlbmVyYXRpb24KLSAgICBlbnVtIHsKLSAgICAgICAg
VEVYVFBBVEhfTUVUSE9EVFlQRV9VTktOT1dOID0gU1ZHX1RFWFRQQVRIX01FVEhPRFRZUEVfVU5L
Tk9XTiwKLSAgICAgICAgVEVYVFBBVEhfTUVUSE9EVFlQRV9BTElHTiA9IFNWR19URVhUUEFUSF9N
RVRIT0RUWVBFX0FMSUdOLAotICAgICAgICBURVhUUEFUSF9NRVRIT0RUWVBFX1NUUkVUQ0ggPSBT
VkdfVEVYVFBBVEhfTUVUSE9EVFlQRV9TVFJFVENILAotICAgICAgICBURVhUUEFUSF9TUEFDSU5H
VFlQRV9VTktOT1dOID0gU1ZHX1RFWFRQQVRIX1NQQUNJTkdUWVBFX1VOS05PV04sCi0gICAgICAg
IFRFWFRQQVRIX1NQQUNJTkdUWVBFX0FVVE8gPSBTVkdfVEVYVFBBVEhfU1BBQ0lOR1RZUEVfQVVU
TywKLSAgICAgICAgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfRVhBQ1QgPSBTVkdfVEVYVFBBVEhfU1BB
Q0lOR1RZUEVfRVhBQ1QKLSAgICB9OwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHVGV4dFBh
dGhFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0gCi1w
cml2YXRlOgotICAgIFNWR1RleHRQYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQqKTsKLQotICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwotCi0g
ICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwotICAgIHZpcnR1
YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0g
ICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZp
cnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7Ci0KLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqLCBSZW5kZXJTdHlsZSopOwotICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0
ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwotCi0gICAgdmlydHVhbCBib29sIHNlbGZI
YXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKLQotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRl
Y2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFN0YXJ0T2Zmc2V0LCBzdGFy
dE9mZnNldCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKE1ldGhvZCwgbWV0aG9k
LCBTVkdUZXh0UGF0aE1ldGhvZFR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElP
TihTcGFjaW5nLCBzcGFjaW5nLCBTVkdUZXh0UGF0aFNwYWNpbmdUeXBlKQotCi0gICAgLy8gU1ZH
VVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKKyAg
ICBUZXh0UGF0aFNwYWNpbmdVbmtub3duID0gMCwKKyAgICBUZXh0UGF0aFNwYWNpbmdBdXRvID0g
MSwKKyAgICBUZXh0UGF0aFNwYWNpbmdFeGFjdCA9IDIKIH07CiAKIHRlbXBsYXRlPD4KIHN0cnVj
dCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdUZXh0UGF0aE1ldGhvZFR5cGU+IHsKLSAgICBzdGF0aWMg
U1ZHVGV4dFBhdGhNZXRob2RUeXBlIGhpZ2hlc3RFbnVtVmFsdWUoKSB7IHJldHVybiBTVkdfVEVY
VFBBVEhfTUVUSE9EVFlQRV9TVFJFVENIOyB9CisgICAgc3RhdGljIFNWR1RleHRQYXRoTWV0aG9k
VHlwZSBoaWdoZXN0RW51bVZhbHVlKCkgeyByZXR1cm4gVGV4dFBhdGhNZXRob2RTdHJldGNoOyB9
CiAKICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFNWR1RleHRQYXRoTWV0aG9kVHlwZSB0eXBl
KQogICAgIHsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgU1ZHX1RFWFRQ
QVRIX01FVEhPRFRZUEVfVU5LTk9XTjoKKyAgICAgICAgY2FzZSBUZXh0UGF0aE1ldGhvZFVua25v
d246CiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICAgICAgY2FzZSBTVkdf
VEVYVFBBVEhfTUVUSE9EVFlQRV9BTElHTjoKKyAgICAgICAgY2FzZSBUZXh0UGF0aE1ldGhvZEFs
aWduOgogICAgICAgICAgICAgcmV0dXJuICJhbGlnbiI7Ci0gICAgICAgIGNhc2UgU1ZHX1RFWFRQ
QVRIX01FVEhPRFRZUEVfU1RSRVRDSDoKKyAgICAgICAgY2FzZSBUZXh0UGF0aE1ldGhvZFN0cmV0
Y2g6CiAgICAgICAgICAgICByZXR1cm4gInN0cmV0Y2giOwogICAgICAgICB9CiAgICAgCkBAIC0x
MDMsMjUgKzYxLDI1IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdUZXh0UGF0aE1ldGgK
ICAgICBzdGF0aWMgU1ZHVGV4dFBhdGhNZXRob2RUeXBlIGZyb21TdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICh2YWx1ZSA9PSAiYWxpZ24iKQotICAgICAgICAg
ICAgcmV0dXJuIFNWR19URVhUUEFUSF9NRVRIT0RUWVBFX0FMSUdOOworICAgICAgICAgICAgcmV0
dXJuIFRleHRQYXRoTWV0aG9kQWxpZ247CiAgICAgICAgIGlmICh2YWx1ZSA9PSAic3RyZXRjaCIp
Ci0gICAgICAgICAgICByZXR1cm4gU1ZHX1RFWFRQQVRIX01FVEhPRFRZUEVfU1RSRVRDSDsKLSAg
ICAgICAgcmV0dXJuIFNWR19URVhUUEFUSF9NRVRIT0RUWVBFX1VOS05PV047CisgICAgICAgICAg
ICByZXR1cm4gVGV4dFBhdGhNZXRob2RTdHJldGNoOworICAgICAgICByZXR1cm4gVGV4dFBhdGhN
ZXRob2RVbmtub3duOwogICAgIH0KIH07CiAKIHRlbXBsYXRlPD4KIHN0cnVjdCBTVkdQcm9wZXJ0
eVRyYWl0czxTVkdUZXh0UGF0aFNwYWNpbmdUeXBlPiB7Ci0gICAgc3RhdGljIFNWR1RleHRQYXRo
U3BhY2luZ1R5cGUgaGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJuIFNWR19URVhUUEFUSF9TUEFD
SU5HVFlQRV9FWEFDVDsgfQorICAgIHN0YXRpYyBTVkdUZXh0UGF0aFNwYWNpbmdUeXBlIGhpZ2hl
c3RFbnVtVmFsdWUoKSB7IHJldHVybiBUZXh0UGF0aFNwYWNpbmdFeGFjdDsgfQogCiAgICAgc3Rh
dGljIFN0cmluZyB0b1N0cmluZyhTVkdUZXh0UGF0aFNwYWNpbmdUeXBlIHR5cGUpCiAgICAgewog
ICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBTVkdfVEVYVFBBVEhfU1BBQ0lO
R1RZUEVfVU5LTk9XTjoKKyAgICAgICAgY2FzZSBUZXh0UGF0aFNwYWNpbmdVbmtub3duOgogICAg
ICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAgICAgIGNhc2UgU1ZHX1RFWFRQQVRI
X1NQQUNJTkdUWVBFX0FVVE86CisgICAgICAgIGNhc2UgVGV4dFBhdGhTcGFjaW5nQXV0bzoKICAg
ICAgICAgICAgIHJldHVybiAiYXV0byI7Ci0gICAgICAgIGNhc2UgU1ZHX1RFWFRQQVRIX1NQQUNJ
TkdUWVBFX0VYQUNUOgorICAgICAgICBjYXNlIFRleHRQYXRoU3BhY2luZ0V4YWN0OgogICAgICAg
ICAgICAgcmV0dXJuICJleGFjdCI7CiAgICAgICAgIH0KIApAQCAtMTMyLDEzICs5MCw1MSBAQCBz
dHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVGV4dFBhdGhTcGFjCiAgICAgc3RhdGljIFNWR1Rl
eHRQYXRoU3BhY2luZ1R5cGUgZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHsK
ICAgICAgICAgaWYgKHZhbHVlID09ICJhdXRvIikKLSAgICAgICAgICAgIHJldHVybiBTVkdfVEVY
VFBBVEhfU1BBQ0lOR1RZUEVfQVVUTzsKKyAgICAgICAgICAgIHJldHVybiBUZXh0UGF0aFNwYWNp
bmdBdXRvOwogICAgICAgICBpZiAodmFsdWUgPT0gImV4YWN0IikKLSAgICAgICAgICAgIHJldHVy
biBTVkdfVEVYVFBBVEhfU1BBQ0lOR1RZUEVfRVhBQ1Q7Ci0gICAgICAgIHJldHVybiBTVkdfVEVY
VFBBVEhfU1BBQ0lOR1RZUEVfVU5LTk9XTjsKKyAgICAgICAgICAgIHJldHVybiBUZXh0UGF0aFNw
YWNpbmdFeGFjdDsKKyAgICAgICAgcmV0dXJuIFRleHRQYXRoU3BhY2luZ1Vua25vd247CiAgICAg
fQogfTsKIAorY2xhc3MgU1ZHVGV4dFBhdGhFbGVtZW50IDogcHVibGljIFNWR1RleHRDb250ZW50
RWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVu
Y2UgeworcHVibGljOgorICAgIC8vIEZvcndhcmQgZGVjbGFyZSB0aGVzZSBlbnVtcyBpbiB0aGUg
dzNjIG5hbWluZyBzY2hlbWUsIGZvciBJREwgZ2VuZXJhdGlvbgorICAgIGVudW0geworICAgICAg
ICBURVhUUEFUSF9NRVRIT0RUWVBFX1VOS05PV04gPSBUZXh0UGF0aE1ldGhvZFVua25vd24sCisg
ICAgICAgIFRFWFRQQVRIX01FVEhPRFRZUEVfQUxJR04gPSBUZXh0UGF0aE1ldGhvZEFsaWduLAor
ICAgICAgICBURVhUUEFUSF9NRVRIT0RUWVBFX1NUUkVUQ0ggPSBUZXh0UGF0aE1ldGhvZFN0cmV0
Y2gsCisgICAgICAgIFRFWFRQQVRIX1NQQUNJTkdUWVBFX1VOS05PV04gPSBUZXh0UGF0aFNwYWNp
bmdVbmtub3duLAorICAgICAgICBURVhUUEFUSF9TUEFDSU5HVFlQRV9BVVRPID0gVGV4dFBhdGhT
cGFjaW5nQXV0bywKKyAgICAgICAgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfRVhBQ1QgPSBUZXh0UGF0
aFNwYWNpbmdFeGFjdAorICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdUZXh0UGF0
aEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAKK3By
aXZhdGU6CisgICAgU1ZHVGV4dFBhdGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOworCisgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CisKKyAg
ICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CisgICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworCisgICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVy
U3R5bGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2Rl
KikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJl
bmRlcmluZ0NvbnRleHQmKTsKKworICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5n
dGhzKCkgY29uc3Q7CisKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZH
VGV4dFBhdGhFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChTdGFydE9m
ZnNldCwgc3RhcnRPZmZzZXQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04o
TWV0aG9kLCBtZXRob2QsIFNWR1RleHRQYXRoTWV0aG9kVHlwZSkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9FTlVNRVJBVElPTihTcGFjaW5nLCBzcGFjaW5nLCBTVkdUZXh0UGF0aFNwYWNpbmdU
eXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgIEVO
RF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzMsMTYgKzMzLDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5p
bWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9MRU5HVEhfTElTVChT
VkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCi1ERUZJTkVf
QU5JTUFURURfTEVOR1RIX0xJU1QoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTmFtZXM6
OnlBdHRyLCBZLCB5KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSF9MSVNUKFNWR1RleHRQb3NpdGlv
bmluZ0VsZW1lbnQsIFNWR05hbWVzOjpkeEF0dHIsIER4LCBkeCkKLURFRklORV9BTklNQVRFRF9M
RU5HVEhfTElTVChTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdOYW1lczo6ZHlBdHRyLCBE
eSwgZHkpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSX0xJU1QoU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudCwgU1ZHTmFtZXM6OnJvdGF0ZUF0dHIsIFJvdGF0ZSwgcm90YXRlKQorQkVHSU5fREVGSU5F
X0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIX0xJU1QoU1ZH
VGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQorICAgIERFRklO
RV9BTklNQVRFRF9MRU5HVEhfTElTVChTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdOYW1l
czo6eUF0dHIsIFksIHkpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSF9MSVNUKFNWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQsIFNWR05hbWVzOjpkeEF0dHIsIER4LCBkeCkKKyAgICBERUZJTkVf
QU5JTUFURURfTEVOR1RIX0xJU1QoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTmFtZXM6
OmR5QXR0ciwgRHksIGR5KQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVJfTElTVChTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50LCBTVkdOYW1lczo6cm90YXRlQXR0ciwgUm90YXRlLCByb3RhdGUp
CitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShkeCkKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShkeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWShyb3RhdGUpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHVGV4dENvbnRlbnRFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BS
T1BFUlRJRVMKIAogU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6U1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CiAgICAgOiBTVkdUZXh0Q29udGVudEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CisgICAg
cmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KCk7
CiB9CiAKIGJvb2wgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBAIC0xMzksNjIgKzE1MCw2IEBAIHZv
aWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6c3ZnQXR0cmkKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAotdm9pZCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRy
TmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBz
eW5jaHJvbml6ZVkoKTsKLSAgICAgICAgc3luY2hyb25pemVEeCgpOwotICAgICAgICBzeW5jaHJv
bml6ZUR5KCk7Ci0gICAgICAgIHN5bmNocm9uaXplUm90YXRlKCk7Ci0gICAgICAgIFNWR1RleHRD
b250ZW50RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewotICAgICAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0
ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjp4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmR4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUR4KCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmR5
QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUR5KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJvdGF0ZUF0dHIpIHsKLSAgICAgICAg
c3luY2hyb25pemVSb3RhdGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmZp
bGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApCi17Ci0gICAgU1ZHVGV4dENvbnRlbnRF
bGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXApOwotCi0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGhMaXN0KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aExpc3QpOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZHhBdHRyLCBBbmltYXRl
ZExlbmd0aExpc3QpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6ZHlBdHRyLCBBbmltYXRlZExlbmd0aExpc3QpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChTVkdOYW1lczo6cm90YXRlQXR0ciwgQW5pbWF0ZWROdW1iZXJMaXN0KTsKLX0K
LQogU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCogU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6
ZWxlbWVudEZyb21SZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIGlmICgh
cmVuZGVyZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTUgKzM4LDE0IEBA
IHByb3RlY3RlZDoKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
Kik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKLSAgICB2b2lkIGZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEhfTElTVChYLCB4KQot
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIX0xJU1QoWSwgeSkKLSAgICBERUNMQVJFX0FOSU1B
VEVEX0xFTkdUSF9MSVNUKER4LCBkeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSF9MSVNU
KER5LCBkeSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUl9MSVNUKFJvdGF0ZSwgcm90YXRl
KQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSF9MSVNUKFgsIHgpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIX0xJU1QoWSwgeSkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEhfTElTVChEeCwgZHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIX0xJU1QoRHksIGR5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUl9MSVNU
KFJvdGF0ZSwgcm90YXRlKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
aXRsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRs
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
aXRsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxOCArNjAsNiBAQCB2b2lkIFNW
R1RpdGxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvCiAgICAgICAgIGRvY3VtZW50KCktPnNl
dFRpdGxlRWxlbWVudChTdHJpbmdXaXRoRGlyZWN0aW9uKHRleHRDb250ZW50KCksIExUUiksIHRo
aXMpOwogfQogCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHVGl0bGVFbGVtZW50Ojph
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
KCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwogfQogCi12b2lk
IFNWR1RpdGxlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsgICAg
ICAgIAotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpKTsKLX0KLQotfQotCi0vLyB2aW06
dHM9NDpub2V0CiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUaXRsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGl0bGVFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RpdGxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0MCw2IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9
IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGlu
dCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KLQotICAg
IHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0
dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1VzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEzICs1NSwyNSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1E
RUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1VzZUVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwg
eCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRy
LCBZLCB5KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdVc2VFbGVtZW50LCBTVkdOYW1lczo6
d2lkdGhBdHRyLCBXaWR0aCwgd2lkdGgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1VzZUVs
ZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdodCkKLURFRklORV9BTklN
QVRFRF9TVFJJTkcoU1ZHVXNlRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhy
ZWYpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdVc2VFbGVtZW50LCBTVkdOYW1lczo6ZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElF
UworICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6OnhB
dHRyLCBYLCB4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHVXNlRWxlbWVudCwgU1ZH
TmFtZXM6OnlBdHRyLCBZLCB5KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHVXNlRWxl
bWVudCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgV2lkdGgsIHdpZHRoKQorICAgIERFRklORV9BTklN
QVRFRF9MRU5HVEgoU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhlaWdodCwg
aGVpZ2h0KQorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHVXNlRWxlbWVudCwgWExpbmtO
YW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4o
U1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorRU5E
X0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHVXNlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWSh4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHkpCisgICAgUkVH
SVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkod2lkdGgpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoaGVpZ2h0KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKGhyZWYpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9QQVJFTlRf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9Q
RVJUSUVTCiAKIGlubGluZSBTVkdVc2VFbGVtZW50OjpTVkdVc2VFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQpAQCAtNzMsNiArODUsNyBAQCBp
bmxpbmUgU1ZHVXNlRWxlbWVudDo6U1ZHVXNlRWxlbWVudChjb25zCiAgICAgLCBtX25lZWRzU2hh
ZG93VHJlZVJlY3JlYXRpb24oZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OnVzZVRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVXNlRWxl
bWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR1VzZUVsZW1lbnQ+IFNWR1VzZUVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBA
IC0yNDMsODEgKzI1Niw2IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZCgKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdVc2VFbGVtZW50Ojpz
eW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAg
IGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwot
ICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAg
ICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIFNW
R1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFt
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmli
dXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6
c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplWCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjp5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikgewotICAgICAgICBzeW5jaHJv
bml6ZUhlaWdodCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdVc2VFbGVtZW50OjphdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAg
IHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR1VzZUVs
ZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3Ro
KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
WExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQogc3RhdGljIHZvaWQg
dXBkYXRlQ29udGFpbmVyU2l6ZShTVkdFbGVtZW50SW5zdGFuY2UqIHRhcmdldEluc3RhbmNlKQog
ewogICAgIC8vIERlcHRoLWZpcnN0IHVzZWQgdG8gd3JpdGUgdGhlIG1ldGhvZCBpbiBlYXJseSBl
eGl0IHN0eWxlLCBubyBwYXJ0aWN1bGFyIG90aGVyIHJlYXNvbi4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VzZUVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw5ICs2Myw2IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAg
IHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgPSBO
b0NoYW5nZSk7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKQEAgLTEwNiwxNyArMTAzLDE5IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB1cGRhdGVDb250YWluZXJPZmZzZXRzKCk7CiAgICAgdm9pZCB1cGRhdGVDb250YWlu
ZXJTaXplcygpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAg
REVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdU
SChZLCB5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKLQotICAgIC8vIFNWR1VSSVJl
ZmVyZW5jZQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCi0KLSAgICAv
LyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09M
RUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQp
CisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1VzZUVsZW1lbnQpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfTEVOR1RIKFksIHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRo
LCB3aWR0aCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMK
KworICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRG
ZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZH
VGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiAKICAgICBib29sIG1fdXBkYXRlc0Jsb2NrZWQ7CiAg
ICAgYm9vbCBtX25lZWRzU2hhZG93VHJlZVJlY3JlYXRpb247CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdWaWV3RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDI1IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlv
bnMKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1ZpZXdFbGVtZW50LCBTVkdOYW1lczo6ZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi1ERUZJTkVfQU5JTUFURURfUkVDVChTVkdWaWV3RWxl
bWVudCwgU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBWaWV3Qm94LCB2aWV3Qm94KQotREVGSU5FX0FO
SU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oU1ZHVmlld0VsZW1lbnQsIFNWR05hbWVzOjpwcmVz
ZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RS
YXRpbykKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1B
VEVEX0JPT0xFQU4oU1ZHVmlld0VsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCkKKyAgICBERUZJTkVfQU5JTUFURURfUkVDVChTVkdWaWV3RWxlbWVudCwgU1ZHTmFt
ZXM6OnZpZXdCb3hBdHRyLCBWaWV3Qm94LCB2aWV3Qm94KQorICAgIERFRklORV9BTklNQVRFRF9Q
UkVTRVJWRUFTUEVDVFJBVElPKFNWR1ZpZXdFbGVtZW50LCBTVkdOYW1lczo6cHJlc2VydmVBc3Bl
Y3RSYXRpb0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCitF
TkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdWaWV3RWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKHZpZXdCb3gpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkocHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdTdHlsZWRFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BF
UlRJRVMKIAogaW5saW5lIFNWR1ZpZXdFbGVtZW50OjpTVkdWaWV3RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV92aWV3VGFyZ2V0KFNWR05hbWVzOjp2
aWV3VGFyZ2V0QXR0cikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6dmlld1Rh
ZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVmlld0VsZW1lbnQoKTsK
IH0KIAogUGFzc1JlZlB0cjxTVkdWaWV3RWxlbWVudD4gU1ZHVmlld0VsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC04Miw1
MSArOTEsNiBAQCB2b2lkIFNWR1ZpZXdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHVmlld0VsZW1lbnQ6OnN5bmNocm9u
aXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0
dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR0ZpdFRvVmlld0JveDo6c3luY2hyb25pemVQcm9w
ZXJ0aWVzKGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQ
cm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlz
U3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRFbGVtZW50
OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dmlld1RhcmdldEF0dHIpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3du
QXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdGaXRU
b1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpdFRv
Vmlld0JveDo6c3luY2hyb25pemVQcm9wZXJ0aWVzKGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgU1ZHVmlld0VsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHVmlld0VsZW1lbnQ6OmZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgQW5pbWF0ZWRS
ZWN0KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNl
cnZlQXNwZWN0UmF0aW9BdHRyLCBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOwotfQotCiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Zp
ZXdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVt
ZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDIwICs0OCwxNCBAQCBwcml2YXRlOgogICAgIC8v
IEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFuZ2VkIG1pc3NpbmcuCiAgICAgYm9vbCBpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1
cm4gZmFsc2U7IH0KIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotCi0g
ICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURf
Qk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQotIAotICAgIC8vIFNWR0ZpdFRvVmlld0JveAotICAgIERFQ0xBUkVfQU5JTUFURURfUkVD
VChWaWV3Qm94LCB2aWV3Qm94KQotICAgIERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RS
QVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgIEJFR0lO
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdWaWV3RWxlbWVudCkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUkVDVChWaWV3Qm94
LCB2aWV3Qm94KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8o
UHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICBFTkRfREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICBTVkdTdHJpbmdMaXN0IG1fdmlld1RhcmdldDsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAJKHJldmlzaW9uIDkwNDU0KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsMTMgKzMwLDIxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJv
cGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9SRUNUKFNWR1ZpZXdTcGVjLCBTVkdO
YW1lczo6dmlld0JveEF0dHIsIFZpZXdCb3gsIHZpZXdCb3gpCi1ERUZJTkVfQU5JTUFURURfUFJF
U0VSVkVBU1BFQ1RSQVRJTyhTVkdWaWV3U3BlYywgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0
aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorQkVHSU5f
REVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfUkVDVChTVkdW
aWV3U3BlYywgU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBWaWV3Qm94LCB2aWV3Qm94KQorICAgIERF
RklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR1ZpZXdTcGVjLCBTVkdOYW1lczo6
cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNw
ZWN0UmF0aW8pCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNU
RVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdWaWV3U3BlYykKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWSh2aWV3Qm94KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKHByZXNlcnZlQXNwZWN0UmF0aW8pCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVS
VElFUwogCiBTVkdWaWV3U3BlYzo6U1ZHVmlld1NwZWMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1l
bnQpCiAgICAgOiBtX2NvbnRleHRFbGVtZW50KGNvbnRleHRFbGVtZW50KQogeworICAgIEFTU0VS
VChtX2NvbnRleHRFbGVtZW50KTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNW
R1ZpZXdTcGVjKCk7CiB9CiAKIHZvaWQgU1ZHVmlld1NwZWM6OnNldFRyYW5zZm9ybShjb25zdCBT
dHJpbmcmIHRyYW5zZm9ybSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5oCShyZXZpc2lv
biA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NSwxMSArNTUsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdFbGVtZW50
KiBtX2NvbnRleHRFbGVtZW50OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRp
b25zCi0KLSAgICAvLyBTVkdGaXRUb1ZpZXdCb3gKLSAgICBERUNMQVJFX0FOSU1BVEVEX1JFQ1Qo
Vmlld0JveCwgdmlld0JveCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFU
SU8oUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICBCRUdJTl9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVmlld1NwZWMpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfUkVDVChWaWV3Qm94LCB2aWV3Qm94KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X1BSRVNFUlZFQVNQRUNUUkFUSU8oUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RS
YXRpbykKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICBTVkdUcmFu
c2Zvcm1MaXN0IG1fdHJhbnNmb3JtOwogICAgIFN0cmluZyBtX3ZpZXdUYXJnZXRTdHJpbmc7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZEVudW1lcmF0aW9u
UHJvcGVydHlUZWFyT2ZmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZi5oCShyZXZpc2lvbiA5
MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRW51bWVy
YXRpb25Qcm9wZXJ0eVRlYXJPZmYuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsOCBAQCBw
dWJsaWM6CiAgICAgICAgIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmPGludD46OnNl
dEJhc2VWYWwocHJvcGVydHksIGVjKTsKICAgICB9CiAKKyAgICBFbnVtVHlwZSYgcmF3QW5pbWF0
ZWRWYWx1ZSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RW51bVR5cGUmPihTVkdBbmltYXRl
ZFN0YXRpY1Byb3BlcnR5VGVhck9mZjxpbnQ+OjpyYXdBbmltYXRlZFZhbHVlKCkpOyB9CisKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9m
Zi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkTGlzdFByb3BlcnR5VGVhck9mZi5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Miw2ICs4MiwxMCBAQCBwdWJsaWM6CiAgICAgUHJvcGVydHlUeXBlJiB2
YWx1ZXMoKSB7IHJldHVybiBtX3ZhbHVlczsgfQogICAgIExpc3RXcmFwcGVyQ2FjaGUmIHdyYXBw
ZXJzKCkgeyByZXR1cm4gbV93cmFwcGVyczsgfQogCisgICAgLy8gRklYTUU6IGFuaW1WYWwgc3Vw
cG9ydC4KKyAgICBib29sIGlzQW5pbWF0aW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBQcm9wZXJ0eVR5cGUmIHJhd0FuaW1hdGVkVmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlczsgfQor
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eS5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTUgKzIxLDE0IEBA
CiAjZGVmaW5lIFNWR0FuaW1hdGVkUHJvcGVydHlfaAogCiAjaWYgRU5BQkxFKFNWRykKLSNpbmNs
dWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2Ny
aXB0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR1Byb3BlcnR5
SW5mby5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgU1ZHRWxlbWVudDsKLWNsYXNzIFNWR1Byb3BlcnR5OwogCiBjbGFzcyBTVkdB
bmltYXRlZFByb3BlcnR5IDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4g
ewogcHVibGljOgpAQCAtNDQsNiArNDMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVh
bCBib29sIGlzQW5pbWF0ZWRMaXN0VGVhck9mZigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1WYWwodm9pZCopIHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KIAogICAgIC8vIENhY2hpbmcgZmFjaWxpdGllcy4KICAgICB0eXBlZGVmIEhhc2hNYXA8
U1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLCBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0
eT4sIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbkhhc2gsIFNWR0FuaW1hdGVkUHJvcGVy
dHlEZXNjcmlwdGlvbkhhc2hUcmFpdHM+IENhY2hlOwpAQCAtNjEsMjMgKzYxLDQ0IEBAIHB1Ymxp
YzoKICAgICAgICAgfQogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRlYXJPZmZUeXBl
LCB0eXBlbmFtZSBQcm9wZXJ0eVR5cGUsIGJvb2wgaXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ+Cisg
ICAgc3RydWN0IEhlbHBlcjsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRlYXJPZmZUeXBlLCB0
eXBlbmFtZSBQcm9wZXJ0eVR5cGU+Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGVhck9mZlR5cGU+
IGxvb2t1cE9yQ3JlYXRlV3JhcHBlcihTVkdFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZUlkZW50
aWZpZXIsIFByb3BlcnR5VHlwZSYgcHJvcGVydHkpCi0gICAgewotICAgICAgICBTVkdBbmltYXRl
ZFByb3BlcnR5RGVzY3JpcHRpb24ga2V5KGVsZW1lbnQsIGF0dHJpYnV0ZUlkZW50aWZpZXIpOwot
ICAgICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gd3JhcHBlciA9IGFuaW1hdGVkUHJv
cGVydHlDYWNoZSgpLT5nZXQoa2V5KTsKLSAgICAgICAgaWYgKCF3cmFwcGVyKSB7Ci0gICAgICAg
ICAgICB3cmFwcGVyID0gVGVhck9mZlR5cGU6OmNyZWF0ZShlbGVtZW50LCBhdHRyaWJ1dGVOYW1l
LCBwcm9wZXJ0eSk7Ci0gICAgICAgICAgICBhbmltYXRlZFByb3BlcnR5Q2FjaGUoKS0+c2V0KGtl
eSwgd3JhcHBlcik7CisgICAgc3RydWN0IEhlbHBlcjxUZWFyT2ZmVHlwZSwgUHJvcGVydHlUeXBl
LCBmYWxzZT4geworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZWFyT2ZmVHlwZT4gbG9va3Vw
T3JDcmVhdGVXcmFwcGVyKHZvaWQqLCBjb25zdCBTVkdQcm9wZXJ0eUluZm8qLCBQcm9wZXJ0eVR5
cGUmKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIHJldHVybiBQYXNzUmVmUHRyPFRlYXJPZmZUeXBlPigpOwogICAgICAgICB9CisgICAg
fTsKIAotICAgICAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxUZWFyT2ZmVHlwZT4od3Jh
cHBlcikucmVsZWFzZSgpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRlYXJPZmZUeXBlLCB0eXBl
bmFtZSBQcm9wZXJ0eVR5cGU+CisgICAgc3RydWN0IEhlbHBlcjxUZWFyT2ZmVHlwZSwgUHJvcGVy
dHlUeXBlLCB0cnVlPiB7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRlYXJPZmZUeXBlPiBs
b29rdXBPckNyZWF0ZVdyYXBwZXIoU1ZHRWxlbWVudCogZWxlbWVudCwgY29uc3QgU1ZHUHJvcGVy
dHlJbmZvKiBpbmZvLCBQcm9wZXJ0eVR5cGUmIHByb3BlcnR5KQorICAgICAgICB7CisgICAgICAg
ICAgICBBU1NFUlQoaW5mbyk7CisgICAgICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3Jp
cHRpb24ga2V5KGVsZW1lbnQsIGluZm8tPnByb3BlcnR5SWRlbnRpZmllcik7CisgICAgICAgICAg
ICBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gd3JhcHBlciA9IGFuaW1hdGVkUHJvcGVydHlD
YWNoZSgpLT5nZXQoa2V5KTsKKyAgICAgICAgICAgIGlmICghd3JhcHBlcikgeworICAgICAgICAg
ICAgICAgIHdyYXBwZXIgPSBUZWFyT2ZmVHlwZTo6Y3JlYXRlKGVsZW1lbnQsIGluZm8tPmF0dHJp
YnV0ZU5hbWUsIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBhbmltYXRlZFByb3BlcnR5Q2Fj
aGUoKS0+c2V0KGtleSwgd3JhcHBlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxUZWFyT2ZmVHlwZT4od3JhcHBlcikucmVsZWFzZSgpOwor
ICAgICAgICB9CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgdHlw
ZW5hbWUgVGVhck9mZlR5cGUsIHR5cGVuYW1lIFByb3BlcnR5VHlwZSwgYm9vbCBpc0Rlcml2ZWRG
cm9tU1ZHRWxlbWVudD4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZWFyT2ZmVHlwZT4gbG9va3Vw
T3JDcmVhdGVXcmFwcGVyKE93bmVyVHlwZSogZWxlbWVudCwgY29uc3QgU1ZHUHJvcGVydHlJbmZv
KiBpbmZvLCBQcm9wZXJ0eVR5cGUmIHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEhl
bHBlcjxUZWFyT2ZmVHlwZSwgUHJvcGVydHlUeXBlLCBpc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudD46
Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcihlbGVtZW50LCBpbmZvLCBwcm9wZXJ0eSk7CiAgICAgfQog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVGVhck9mZlR5cGU+Ci0gICAgc3RhdGljIFRlYXJPZmZU
eXBlKiBsb29rdXBXcmFwcGVyKFNWR0VsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXR0cmlidXRlSWRlbnRpZmllcikKKyAgICBzdGF0aWMgVGVhck9mZlR5cGUqIGxvb2t1cFdy
YXBwZXIoU1ZHRWxlbWVudCogZWxlbWVudCwgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBpbmZvKQog
ICAgIHsKLSAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uIGtleShlbGVtZW50
LCBhdHRyaWJ1dGVJZGVudGlmaWVyKTsKKyAgICAgICAgQVNTRVJUKGluZm8pOworICAgICAgICBT
VkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24ga2V5KGVsZW1lbnQsIGluZm8tPnByb3BlcnR5
SWRlbnRpZmllcik7CiAgICAgICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PFRlYXJPZmZU
eXBlPihhbmltYXRlZFByb3BlcnR5Q2FjaGUoKS0+Z2V0KGtleSkpLmdldCgpOwogICAgIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eU1h
Y3Jvcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkUHJvcGVydHlNYWNyb3MuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5
cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAt
MjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsNyAr
MjMsNyBAQAogI2RlZmluZSBTVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zX2gKIAogI2lmIEVOQUJM
RShTVkcpCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oIgorI2lu
Y2x1ZGUgIlNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCIKICNpbmNsdWRlICJTVkdQcm9wZXJ0
eVRyYWl0cy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NCwxNCArNTQsMjQgQEAgc3Ry
dWN0IEdldE93bmVyRWxlbWVudEZvclR5cGU8T3duZXJUeXBlLAogdGVtcGxhdGU8dHlwZW5hbWUg
T3duZXJUeXBlPgogc3RydWN0IElzRGVyaXZlZEZyb21TVkdFbGVtZW50IHsKICAgICBzdGF0aWMg
Y29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7CisgICAgdHlwZWRlZiBPd25lclR5cGUgRm9yd2FyZGVk
T3duZXJUeXBlOwogfTsKIAogY2xhc3MgU1ZHVmlld1NwZWM7CiB0ZW1wbGF0ZTw+CiBzdHJ1Y3Qg
SXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8U1ZHVmlld1NwZWM+IHsKICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCB2YWx1ZSA9IGZhbHNlOworICAgIHR5cGVkZWYgU1ZHRWxlbWVudCBGb3J3YXJkZWRPd25l
clR5cGU7CiB9OwogCitjbGFzcyBTVkdUZXN0czsKK3RlbXBsYXRlPD4KK3N0cnVjdCBJc0Rlcml2
ZWRGcm9tU1ZHRWxlbWVudDxTVkdUZXN0cz4geworICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVl
ID0gZmFsc2U7CisgICAgdHlwZWRlZiBTVkdFbGVtZW50IEZvcndhcmRlZE93bmVyVHlwZTsKK307
CisKKwogLy8gU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5IGltcGxlbWVudGF0aW9u
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+CiBzdHJ1Y3QgU1ZHU3luY2hyb25pemFi
bGVBbmltYXRlZFByb3BlcnR5IHsKQEAgLTg5LDYwICs5OSwxMjEgQEAgc3RydWN0IFNWR1N5bmNo
cm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eQogICAgIGJvb2wgc2hvdWxkU3luY2hyb25pemUgOiAx
OwogfTsKIAotI2RlZmluZSBERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01B
dHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFRlYXJPZmZUeXBlLCBQcm9wZXJ0
eVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLXZvaWQgT3duZXJUeXBlOjpz
eW5jaHJvbml6ZSMjVXBwZXJQcm9wZXJ0eSgpIFwKKy8vIFByb3BlcnR5IHJlZ2lzdHJhdGlvbiBo
ZWxwZXJzCisjZGVmaW5lIEJFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoT3duZXJU
eXBlKSBcCitTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBPd25lclR5cGU6OmF0dHJpYnV0ZVRv
UHJvcGVydHlNYXAoKSBcCiB7IFwKLSAgICBpZiAoIW1fIyNMb3dlclByb3BlcnR5LnNob3VsZFN5
bmNocm9uaXplKSBcCi0gICAgICAgICByZXR1cm47IFwKLSAgICBBdG9taWNTdHJpbmcgdmFsdWUo
U1ZHUHJvcGVydHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6dG9TdHJpbmcoTG93ZXJQcm9wZXJ0eSMj
QmFzZVZhbHVlKCkpKTsgXAotICAgIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50ID0gR2V0T3du
ZXJFbGVtZW50Rm9yVHlwZTxPd25lclR5cGUsIElzRGVyaXZlZEZyb21TVkdFbGVtZW50PE93bmVy
VHlwZT46OnZhbHVlPjo6b3duZXJFbGVtZW50KHRoaXMpOyBcCi0gICAgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVN5bmNocm9uaXplcjxJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5cGU+Ojp2YWx1
ZT46OnN5bmNocm9uaXplKGNvbnRleHRFbGVtZW50LCBET01BdHRyaWJ1dGUsIHZhbHVlKTsgXAor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCwgc19hdHRy
aWJ1dGVUb1Byb3BlcnR5TWFwLCAoKSk7IFwKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5TWFwOyBcCiB9IFwKIFwKLVBhc3NSZWZQdHI8VGVhck9mZlR5cGU+IE93bmVyVHlwZTo6TG93
ZXJQcm9wZXJ0eSMjQW5pbWF0ZWQoKSBcCitzdGF0aWMgdm9pZCByZWdpc3RlckFuaW1hdGVkUHJv
cGVydGllc0ZvciMjT3duZXJUeXBlKCkgXAogeyBcCi0gICAgbV8jI0xvd2VyUHJvcGVydHkuc2hv
dWxkU3luY2hyb25pemUgPSB0cnVlOyBcCi0gICAgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQg
PSBHZXRPd25lckVsZW1lbnRGb3JUeXBlPE93bmVyVHlwZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1l
bnQ8T3duZXJUeXBlPjo6dmFsdWU+Ojpvd25lckVsZW1lbnQodGhpcyk7IFwKLSAgICByZXR1cm4g
U1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFRlYXJPZmZUeXBlLCBQ
cm9wZXJ0eVR5cGU+KGNvbnRleHRFbGVtZW50LCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0
ZUlkZW50aWZpZXIsIG1fIyNMb3dlclByb3BlcnR5LnZhbHVlKTsgXAotfQorICAgIFNWR0F0dHJp
YnV0ZVRvUHJvcGVydHlNYXAmIG1hcCA9IE93bmVyVHlwZTo6YXR0cmlidXRlVG9Qcm9wZXJ0eU1h
cCgpOyBcCisgICAgaWYgKCFtYXAuaXNFbXB0eSgpKSBcCisgICAgICAgIHJldHVybjsgXAorICAg
IHR5cGVkZWYgT3duZXJUeXBlIFVzZU93bmVyVHlwZTsKKworI2RlZmluZSBSRUdJU1RFUl9MT0NB
TF9BTklNQVRFRF9QUk9QRVJUWShMb3dlclByb3BlcnR5KSBcCisgICAgIG1hcC5hZGRQcm9wZXJ0
eShVc2VPd25lclR5cGU6Okxvd2VyUHJvcGVydHkjI1Byb3BlcnR5SW5mbygpKTsKKworI2RlZmlu
ZSBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhDbGFzc05hbWUpIFwKKyAgICAg
bWFwLmFkZFByb3BlcnRpZXMoQ2xhc3NOYW1lOjphdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCkpOyBc
CisKKyNkZWZpbmUgRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMgfQorCisvLyBQcm9w
ZXJ0eSBkZWZpbml0aW9uIGhlbHBlcnMgKHVzZWQgaW4gU1ZHKi5jcHAgZmlsZXMpCisjZGVmaW5l
IEJFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyNkZWZpbmUgREVGSU5FX0FOSU1B
VEVEX1BST1BFUlRZKEFuaW1hdGVkUHJvcGVydHlUeXBlRW51bSwgT3duZXJUeXBlLCBET01BdHRy
aWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFVwcGVyUHJvcGVydHksIExvd2VyUHJv
cGVydHkpIFwKK2NvbnN0IFNWR1Byb3BlcnR5SW5mbyogT3duZXJUeXBlOjpMb3dlclByb3BlcnR5
IyNQcm9wZXJ0eUluZm8oKSB7IFwKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBz
X3Byb3BlcnR5SW5mbyA9IDA7IFwKKyAgICBpZiAoIXNfcHJvcGVydHlJbmZvKSBcCisgICAgICAg
IHNfcHJvcGVydHlJbmZvID0gbmV3IFNWR1Byb3BlcnR5SW5mbyhBbmltYXRlZFByb3BlcnR5VHlw
ZUVudW0sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERP
TUF0dHJpYnV0ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJk93bmVyVHlwZTo6c3luY2hyb25pemUjI1VwcGVyUHJvcGVy
dHksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZPd25l
clR5cGU6Omxvb2t1cE9yQ3JlYXRlIyNVcHBlclByb3BlcnR5IyNXcmFwcGVyKTsgXAorICAgIFwK
KyAgICByZXR1cm4gc19wcm9wZXJ0eUluZm87IFwKK30gCisKKyNkZWZpbmUgRU5EX0RFRklORV9B
TklNQVRFRF9QUk9QRVJUSUVTCisKKy8vIFByb3BlcnR5IGRlY2xhcmF0aW9uIGhlbHBlcnMgKHVz
ZWQgaW4gU1ZHKi5oIGZpbGVzKQorI2RlZmluZSBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRJRVMoT3duZXJUeXBlKSBcCitwdWJsaWM6IFwKKyAgICBzdGF0aWMgU1ZHQXR0cmlidXRlVG9Q
cm9wZXJ0eU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpOyBcCisgICAgdmlydHVhbCBTVkdB
dHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBsb2NhbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKSBcCisg
ICAgeyBcCisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCk7IFwKKyAgICB9
XAorICAgIHR5cGVkZWYgT3duZXJUeXBlIFVzZU93bmVyVHlwZTsKIAogI2RlZmluZSBERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRZKFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJvcGVy
dHksIExvd2VyUHJvcGVydHkpIFwKIHB1YmxpYzogXAotUHJvcGVydHlUeXBlJiBMb3dlclByb3Bl
cnR5KCkgY29uc3QgXAoteyBcCi0gICAgcmV0dXJuIG1fIyNMb3dlclByb3BlcnR5LnZhbHVlOyBc
Ci19IFwKLVwKLVByb3BlcnR5VHlwZSYgTG93ZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKCkgY29uc3Qg
XAoteyBcCi0gICAgcmV0dXJuIG1fIyNMb3dlclByb3BlcnR5LnZhbHVlOyBcCi19IFwKLVwKLXZv
aWQgc2V0IyNVcHBlclByb3BlcnR5IyNCYXNlVmFsdWUoY29uc3QgUHJvcGVydHlUeXBlJiB0eXBl
KSBcCi17IFwKLSAgICBtXyMjTG93ZXJQcm9wZXJ0eS52YWx1ZSA9IHR5cGU7IFwKLX0gXAotXAot
UGFzc1JlZlB0cjxUZWFyT2ZmVHlwZT4gTG93ZXJQcm9wZXJ0eSMjQW5pbWF0ZWQoKTsgXAotXAor
ICAgIHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIExvd2VyUHJvcGVydHkjI1Byb3BlcnR5
SW5mbygpOyBcCisgICAgUHJvcGVydHlUeXBlJiBMb3dlclByb3BlcnR5KCkgY29uc3QgXAorICAg
IHsgXAorICAgICAgICBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCA9IEdldE93bmVyRWxlbWVu
dEZvclR5cGU8VXNlT3duZXJUeXBlLCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxVc2VPd25lclR5
cGU+Ojp2YWx1ZT46Om93bmVyRWxlbWVudChjb25zdF9jYXN0PFVzZU93bmVyVHlwZSo+KHRoaXMp
KTsgXAorICAgICAgICBpZiAoVGVhck9mZlR5cGUqIHdyYXBwZXIgPSBTVkdBbmltYXRlZFByb3Bl
cnR5Ojpsb29rdXBXcmFwcGVyPFRlYXJPZmZUeXBlPihjb250ZXh0RWxlbWVudCwgTG93ZXJQcm9w
ZXJ0eSMjUHJvcGVydHlJbmZvKCkpKSB7IFwKKyAgICAgICAgICAgIGlmICh3cmFwcGVyLT5pc0Fu
aW1hdGluZygpKSBcCisgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXItPnJhd0FuaW1hdGVk
VmFsdWUoKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgcmV0dXJuIG1fIyNMb3dlclByb3BlcnR5
LnZhbHVlOyBcCisgICAgfSBcCisgICAgXAorICAgIFByb3BlcnR5VHlwZSYgTG93ZXJQcm9wZXJ0
eSMjQmFzZVZhbHVlKCkgY29uc3QgXAorICAgIHsgXAorICAgICAgICByZXR1cm4gbV8jI0xvd2Vy
UHJvcGVydHkudmFsdWU7IFwKKyAgICB9IFwKKyAgICBcCisgICAgdm9pZCBzZXQjI1VwcGVyUHJv
cGVydHkjI0Jhc2VWYWx1ZShjb25zdCBQcm9wZXJ0eVR5cGUmIHR5cGUpIFwKKyAgICB7IFwKKyAg
ICAgICAgbV8jI0xvd2VyUHJvcGVydHkudmFsdWUgPSB0eXBlOyBcCisgICAgfSBcCisgICAgXAor
ICAgIFBhc3NSZWZQdHI8VGVhck9mZlR5cGU+IExvd2VyUHJvcGVydHkjI0FuaW1hdGVkKCkgXAor
ICAgIHsgXAorICAgICAgICBtXyMjTG93ZXJQcm9wZXJ0eS5zaG91bGRTeW5jaHJvbml6ZSA9IHRy
dWU7IFwKKyAgICAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8VGVhck9mZlR5cGU+KGxv
b2t1cE9yQ3JlYXRlIyNVcHBlclByb3BlcnR5IyNXcmFwcGVyKHRoaXMpKTsgXAorICAgIH0gXAor
ICAgIFwKIHByaXZhdGU6IFwKLSAgICB2b2lkIHN5bmNocm9uaXplIyNVcHBlclByb3BlcnR5KCk7
IFwKLVwKKyAgICB2b2lkIHN5bmNocm9uaXplIyNVcHBlclByb3BlcnR5KCkgXAorICAgIHsgXAor
ICAgICAgICBpZiAoIW1fIyNMb3dlclByb3BlcnR5LnNob3VsZFN5bmNocm9uaXplKSBcCisgICAg
ICAgICAgICByZXR1cm47IFwKKyAgICAgICAgQXRvbWljU3RyaW5nIHZhbHVlKFNWR1Byb3BlcnR5
VHJhaXRzPFByb3BlcnR5VHlwZT46OnRvU3RyaW5nKG1fIyNMb3dlclByb3BlcnR5LnZhbHVlKSk7
IFwKKyAgICAgICAgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQgPSBHZXRPd25lckVsZW1lbnRG
b3JUeXBlPFVzZU93bmVyVHlwZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8VXNlT3duZXJUeXBl
Pjo6dmFsdWU+Ojpvd25lckVsZW1lbnQodGhpcyk7IFwKKyAgICAgICAgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVN5bmNocm9uaXplcjxJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxVc2VPd25lclR5cGU+Ojp2
YWx1ZT46OnN5bmNocm9uaXplKGNvbnRleHRFbGVtZW50LCBMb3dlclByb3BlcnR5IyNQcm9wZXJ0
eUluZm8oKS0+YXR0cmlidXRlTmFtZSwgdmFsdWUpOyBcCisgICAgfSBcCisgICAgXAorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlIyNVcHBl
clByb3BlcnR5IyNXcmFwcGVyKHZvaWQqIG1hc2tlZE93bmVyVHlwZSkgXAorICAgIHsgXAorICAg
ICAgICBBU1NFUlQobWFza2VkT3duZXJUeXBlKTsgXAorICAgICAgICBVc2VPd25lclR5cGUqIG93
bmVyVHlwZSA9IHN0YXRpY19jYXN0PFVzZU93bmVyVHlwZSo+KG1hc2tlZE93bmVyVHlwZSk7IFwK
KyAgICAgICAgcmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBl
cjxVc2VPd25lclR5cGUsIFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIElzRGVyaXZlZEZyb21T
VkdFbGVtZW50PFVzZU93bmVyVHlwZT46OnZhbHVlPihvd25lclR5cGUsIExvd2VyUHJvcGVydHkj
I1Byb3BlcnR5SW5mbygpLCBvd25lclR5cGUtPm1fIyNMb3dlclByb3BlcnR5LnZhbHVlKTsgXAor
ICAgIH0gXAorICAgIFwKKyAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZSMjVXBwZXJQcm9wZXJ0
eSh2b2lkKiBtYXNrZWRPd25lclR5cGUpIFwKKyAgICB7IFwKKyAgICAgICAgQVNTRVJUKG1hc2tl
ZE93bmVyVHlwZSk7IFwKKyAgICAgICAgVXNlT3duZXJUeXBlKiBvd25lclR5cGUgPSBzdGF0aWNf
Y2FzdDxVc2VPd25lclR5cGUqPihtYXNrZWRPd25lclR5cGUpOyBcCisgICAgICAgIG93bmVyVHlw
ZS0+c3luY2hyb25pemUjI1VwcGVyUHJvcGVydHkoKTsgXAorICAgIH0gXAorICAgIFwKICAgICBt
dXRhYmxlIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IG1f
IyNMb3dlclByb3BlcnR5OwogCisjZGVmaW5lIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJ
RVMgCisKKy8vIExpc3Qgc3BlY2lmaWMgZGVmaW5pdGlvbi9kZWNsYXJhdGlvbiBoZWxwZXJzCiAj
ZGVmaW5lIERFQ0xBUkVfQU5JTUFURURfTElTVF9QUk9QRVJUWShUZWFyT2ZmVHlwZSwgUHJvcGVy
dHlUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCiBERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRZKFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2Vy
UHJvcGVydHkpIFwKLXZvaWQgZGV0YWNoQW5pbWF0ZWQjI1VwcGVyUHJvcGVydHkjI0xpc3RXcmFw
cGVycyh1bnNpZ25lZCBuZXdMaXN0U2l6ZSk7Ci0KLSNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX0xJ
U1RfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50
aWZpZXIsIFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJv
cGVydHkpIFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0
ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgVGVhck9mZlR5cGUsIFByb3BlcnR5VHlwZSwg
VXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotdm9pZCBPd25lclR5cGU6OmRldGFjaEFu
aW1hdGVkIyNVcHBlclByb3BlcnR5IyNMaXN0V3JhcHBlcnModW5zaWduZWQgbmV3TGlzdFNpemUp
IFwKK3ZvaWQgZGV0YWNoQW5pbWF0ZWQjI1VwcGVyUHJvcGVydHkjI0xpc3RXcmFwcGVycyh1bnNp
Z25lZCBuZXdMaXN0U2l6ZSkgXAogeyBcCi0gICAgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQg
PSBHZXRPd25lckVsZW1lbnRGb3JUeXBlPE93bmVyVHlwZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1l
bnQ8T3duZXJUeXBlPjo6dmFsdWU+Ojpvd25lckVsZW1lbnQodGhpcyk7IFwKLSAgICBTVkdBbmlt
YXRlZFByb3BlcnR5KiB3cmFwcGVyID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwV3JhcHBl
cjxUZWFyT2ZmVHlwZT4oY29udGV4dEVsZW1lbnQsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSk7
IFwKLSAgICBpZiAoIXdyYXBwZXIpIFwKLSAgICAgICAgcmV0dXJuOyBcCi0gICAgc3RhdGljX2Nh
c3Q8VGVhck9mZlR5cGUqPih3cmFwcGVyKS0+ZGV0YWNoTGlzdFdyYXBwZXJzKG5ld0xpc3RTaXpl
KTsgXAorICAgIGlmIChTVkdBbmltYXRlZFByb3BlcnR5KiB3cmFwcGVyID0gU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eTo6bG9va3VwV3JhcHBlcjxUZWFyT2ZmVHlwZT4odGhpcywgTG93ZXJQcm9wZXJ0eSMj
UHJvcGVydHlJbmZvKCkpKSBcCisgICAgICAgIHN0YXRpY19jYXN0PFRlYXJPZmZUeXBlKj4od3Jh
cHBlciktPmRldGFjaExpc3RXcmFwcGVycyhuZXdMaXN0U2l6ZSk7IFwKIH0KIAogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5VGVhck9mZi5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDYgKzQzLDI3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fYW5pbVZhbC5nZXQo
KTsKICAgICB9CiAKKyAgICBib29sIGlzQW5pbWF0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fu
aW1hdGluZzsgfQorCisgICAgUHJvcGVydHlUeXBlJiByYXdBbmltYXRlZFZhbHVlKCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX2FuaW1WYWwpOworICAgICAgICBBU1NFUlQobV9pc0FuaW1hdGlu
Zyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdQcm9wZXJ0eVRlYXJPZmY8UHJvcGVy
dHlUeXBlPio+KG1fYW5pbVZhbC5nZXQoKSktPnByb3BlcnR5UmVmZXJlbmNlKCk7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1WYWwodm9pZCogdmFsdWUpCisgICAgeworICAg
ICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFNWR1Byb3BlcnR5VGVh
ck9mZjxQcm9wZXJ0eVR5cGU+Kj4oYW5pbVZhbCgpKS0+dXBkYXRlQW5pbVZhbChyZWludGVycHJl
dF9jYXN0PFByb3BlcnR5VHlwZSo+KHZhbHVlKSk7CisgICAgICAgICAgICBtX2lzQW5pbWF0aW5n
ID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRp
Y19jYXN0PFNWR1Byb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVR5cGU+Kj4oYW5pbVZhbCgpKS0+dXBk
YXRlQW5pbVZhbCgmbV9wcm9wZXJ0eSk7CisgICAgICAgIG1faXNBbmltYXRpbmcgPSBmYWxzZTsK
KyAgICB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHk7
CiAKQEAgLTU1LDExICs3NiwxMyBAQCBwcml2YXRlOgogICAgIFNWR0FuaW1hdGVkUHJvcGVydHlU
ZWFyT2ZmKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lLCBQcm9wZXJ0eVR5cGUmIHByb3BlcnR5KQogICAgICAgICA6IFNWR0FuaW1h
dGVkUHJvcGVydHkoY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUpCiAgICAgICAgICwgbV9w
cm9wZXJ0eShwcm9wZXJ0eSkKKyAgICAgICAgLCBtX2lzQW5pbWF0aW5nKGZhbHNlKQogICAgIHsK
ICAgICB9CiAKIHByaXZhdGU6CiAgICAgUHJvcGVydHlUeXBlJiBtX3Byb3BlcnR5OworICAgIGJv
b2wgbV9pc0FuaW1hdGluZyA6IDE7CiAKICAgICBSZWZQdHI8U1ZHUHJvcGVydHk+IG1fYmFzZVZh
bDsKICAgICBSZWZQdHI8U1ZHUHJvcGVydHk+IG1fYW5pbVZhbDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRTdGF0
aWNQcm9wZXJ0eVRlYXJPZmYuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNW
R0FuaW1hdGVkUHJvcGVydHkuaCIKKyNpbmNsdWRlICJTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFw
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsOCArNDYsOSBAQCBwdWJsaWM6CiAg
ICAgICAgIGNvbW1pdENoYW5nZSgpOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBObyBhbmltVmFs
IHN1cHBvcnQuCi0gICAgdm9pZCBzZXRBbmltVmFsKGNvbnN0IFByb3BlcnR5VHlwZSYpIHsgfQor
ICAgIC8vIEZJWE1FOiBhbmltVmFsIHN1cHBvcnQuCisgICAgYm9vbCBpc0FuaW1hdGluZygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgUHJvcGVydHlUeXBlJiByYXdBbmltYXRlZFZhbHVl
KCkgeyByZXR1cm4gbV9wcm9wZXJ0eTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNz
IFNWR0FuaW1hdGVkUHJvcGVydHk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJv
cGVydHlNYXAuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNW
R0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCIKKworI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVy
dHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFNWR0F0dHJpYnV0ZVRvUHJvcGVy
dHlNYXA6OmFuaW1hdGVkUHJvcGVydGllc0ZvckF0dHJpYnV0ZShTVkdFbGVtZW50KiBvd25lclR5
cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFZlY3RvcjxSZWZQdHI8U1ZH
QW5pbWF0ZWRQcm9wZXJ0eT4gPiYgcHJvcGVydGllcykKK3sKKyAgICBBU1NFUlQob3duZXJUeXBl
KTsKKyAgICBQcm9wZXJ0aWVzVmVjdG9yKiB2ZWN0b3IgPSBtX21hcC5nZXQoYXR0cmlidXRlTmFt
ZSk7CisgICAgaWYgKCF2ZWN0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIFByb3BlcnRpZXNW
ZWN0b3I6Oml0ZXJhdG9yIHZlY3RvckVuZCA9IHZlY3Rvci0+ZW5kKCk7CisgICAgZm9yIChQcm9w
ZXJ0aWVzVmVjdG9yOjppdGVyYXRvciB2ZWN0b3JJdCA9IHZlY3Rvci0+YmVnaW4oKTsgdmVjdG9y
SXQgIT0gdmVjdG9yRW5kOyArK3ZlY3Rvckl0KQorICAgICAgICBwcm9wZXJ0aWVzLmFwcGVuZChh
bmltYXRlZFByb3BlcnR5KG93bmVyVHlwZSwgYXR0cmlidXRlTmFtZSwgKnZlY3Rvckl0KSk7Cit9
CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
dHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRl
ZiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwX2gKKyNkZWZpbmUgU1ZHQXR0cmlidXRlVG9Qcm9w
ZXJ0eU1hcF9oCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIK
KyNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmgiCisjaW5jbHVkZSAi
U1ZHUHJvcGVydHlJbmZvLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5OworY2xhc3MgU1ZHRWxlbWVu
dDsKKworY2xhc3MgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCB7CitwdWJsaWM6CisgICAgU1ZH
QXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpIHsgfQorICAgIH5TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5
TWFwKCkgeyBkZWxldGVBbGxWYWx1ZXMobV9tYXApOyB9CisKKyAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiBtX21hcC5pc0VtcHR5KCk7IH0KKworICAgIHZvaWQgYWRkUHJvcGVydGll
cyhTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBtYXApCisgICAgeworICAgICAgICBBdHRyaWJ1
dGVUb1Byb3BlcnRpZXNNYXA6Oml0ZXJhdG9yIGVuZCA9IG1hcC5tX21hcC5lbmQoKTsKKyAgICAg
ICAgZm9yIChBdHRyaWJ1dGVUb1Byb3BlcnRpZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLm1fbWFw
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgUHJvcGVydGllc1ZlY3Rv
ciogdmVjdG9yID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIEFTU0VSVCh2ZWN0b3IpOworCisg
ICAgICAgICAgICBQcm9wZXJ0aWVzVmVjdG9yOjppdGVyYXRvciB2ZWN0b3JFbmQgPSB2ZWN0b3It
PmVuZCgpOworICAgICAgICAgICAgZm9yIChQcm9wZXJ0aWVzVmVjdG9yOjppdGVyYXRvciB2ZWN0
b3JJdCA9IHZlY3Rvci0+YmVnaW4oKTsgdmVjdG9ySXQgIT0gdmVjdG9yRW5kOyArK3ZlY3Rvckl0
KQorICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5KCp2ZWN0b3JJdCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB2b2lkIGFkZFByb3BlcnR5KGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogaW5mbykK
KyAgICB7CisgICAgICAgIEFTU0VSVChpbmZvKTsKKyAgICAgICAgQVNTRVJUKGluZm8tPmF0dHJp
YnV0ZU5hbWUgIT0gYW55UU5hbWUoKSk7CisgICAgICAgIGlmIChQcm9wZXJ0aWVzVmVjdG9yKiB2
ZWN0b3IgPSBtX21hcC5nZXQoaW5mby0+YXR0cmlidXRlTmFtZSkpIHsKKyAgICAgICAgICAgIHZl
Y3Rvci0+YXBwZW5kKGluZm8pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIFByb3BlcnRpZXNWZWN0b3IqIHZlY3RvciA9IG5ldyBQcm9wZXJ0aWVzVmVjdG9yOworICAg
ICAgICB2ZWN0b3ItPmFwcGVuZChpbmZvKTsKKyAgICAgICAgbV9tYXAuc2V0KGluZm8tPmF0dHJp
YnV0ZU5hbWUsIHZlY3Rvcik7CisgICAgfQorCisgICAgdm9pZCBhbmltYXRlZFByb3BlcnRpZXNG
b3JBdHRyaWJ1dGUoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIFZlY3RvcjxSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gPiYg
cHJvcGVydGllcyk7CisKKyAgICB2b2lkIGFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFZlY3RvcjxBbmltYXRlZFByb3Bl
cnR5VHlwZT4mIHByb3BlcnR5VHlwZXMpCisgICAgeworICAgICAgICBQcm9wZXJ0aWVzVmVjdG9y
KiB2ZWN0b3IgPSBtX21hcC5nZXQoYXR0cmlidXRlTmFtZSk7CisgICAgICAgIGlmICghdmVjdG9y
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFByb3BlcnRpZXNWZWN0b3I6Oml0ZXJh
dG9yIHZlY3RvckVuZCA9IHZlY3Rvci0+ZW5kKCk7CisgICAgICAgIGZvciAoUHJvcGVydGllc1Zl
Y3Rvcjo6aXRlcmF0b3IgdmVjdG9ySXQgPSB2ZWN0b3ItPmJlZ2luKCk7IHZlY3Rvckl0ICE9IHZl
Y3RvckVuZDsgKyt2ZWN0b3JJdCkKKyAgICAgICAgICAgIHByb3BlcnR5VHlwZXMuYXBwZW5kKCgq
dmVjdG9ySXQpLT5hbmltYXRlZFByb3BlcnR5VHlwZSk7CisgICAgfQorCisgICAgdm9pZCBzeW5j
aHJvbml6ZVByb3BlcnRpZXMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCisgICAgeworICAg
ICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgICAgICBBdHRyaWJ1dGVUb1Byb3BlcnRp
ZXNNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fbWFwLmVuZCgpOworICAgICAgICBmb3IgKEF0dHJpYnV0
ZVRvUHJvcGVydGllc01hcDo6aXRlcmF0b3IgaXQgPSBtX21hcC5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKKyAgICAgICAgICAgIFByb3BlcnRpZXNWZWN0b3IqIHZlY3RvciA9IGl0LT5zZWNv
bmQ7CisgICAgICAgICAgICBBU1NFUlQodmVjdG9yKTsKKworICAgICAgICAgICAgUHJvcGVydGll
c1ZlY3Rvcjo6aXRlcmF0b3IgdmVjdG9yRW5kID0gdmVjdG9yLT5lbmQoKTsKKyAgICAgICAgICAg
IGZvciAoUHJvcGVydGllc1ZlY3Rvcjo6aXRlcmF0b3IgdmVjdG9ySXQgPSB2ZWN0b3ItPmJlZ2lu
KCk7IHZlY3Rvckl0ICE9IHZlY3RvckVuZDsgKyt2ZWN0b3JJdCkKKyAgICAgICAgICAgICAgICBz
eW5jaHJvbml6ZVByb3BlcnR5KGNvbnRleHRFbGVtZW50LCBpdC0+Zmlyc3QsICp2ZWN0b3JJdCk7
CisgICAgICAgIH0gCisgICAgfQorCisgICAgYm9vbCBzeW5jaHJvbml6ZVByb3BlcnR5KFNWR0Vs
ZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICAgICAgUHJvcGVy
dGllc1ZlY3RvciogdmVjdG9yID0gbV9tYXAuZ2V0KGF0dHJpYnV0ZU5hbWUpOworICAgICAgICBp
ZiAoIXZlY3RvcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBQcm9wZXJ0
aWVzVmVjdG9yOjppdGVyYXRvciB2ZWN0b3JFbmQgPSB2ZWN0b3ItPmVuZCgpOworICAgICAgICBm
b3IgKFByb3BlcnRpZXNWZWN0b3I6Oml0ZXJhdG9yIHZlY3Rvckl0ID0gdmVjdG9yLT5iZWdpbigp
OyB2ZWN0b3JJdCAhPSB2ZWN0b3JFbmQ7ICsrdmVjdG9ySXQpCisgICAgICAgICAgICBzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCAqdmVjdG9ySXQpOwor
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogaW5mbykKKyAgICB7
CisgICAgICAgIEFTU0VSVChpbmZvKTsKKyAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZU5hbWUgPT0g
aW5mby0+YXR0cmlidXRlTmFtZSk7CisgICAgICAgIEFTU0VSVChpbmZvLT5zeW5jaHJvbml6ZVBy
b3BlcnR5KTsKKyAgICAgICAgKCppbmZvLT5zeW5jaHJvbml6ZVByb3BlcnR5KShjb250ZXh0RWxl
bWVudCk7CisgICAgfQorCisgICAgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBhbmlt
YXRlZFByb3BlcnR5KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIGluZm8pCisgICAgewor
ICAgICAgICBBU1NFUlQoaW5mbyk7CisgICAgICAgIEFTU0VSVChhdHRyaWJ1dGVOYW1lID09IGlu
Zm8tPmF0dHJpYnV0ZU5hbWUpOworICAgICAgICBBU1NFUlQoaW5mby0+bG9va3VwT3JDcmVhdGVX
cmFwcGVyRm9yQW5pbWF0ZWRQcm9wZXJ0eSk7CisgICAgICAgIHJldHVybiAoKmluZm8tPmxvb2t1
cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVydHkpKGNvbnRleHRFbGVtZW50KTsKKyAg
ICB9CisKKyAgICB0eXBlZGVmIFZlY3Rvcjxjb25zdCBTVkdQcm9wZXJ0eUluZm8qPiBQcm9wZXJ0
aWVzVmVjdG9yOworICAgIHR5cGVkZWYgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBQcm9wZXJ0aWVz
VmVjdG9yKj4gQXR0cmlidXRlVG9Qcm9wZXJ0aWVzTWFwOworICAgIEF0dHJpYnV0ZVRvUHJvcGVy
dGllc01hcCBtX21hcDsKK307CisKK30KKworI2VuZGlmCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5SW5mby5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5SW5mby5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgU1ZH
UHJvcGVydHlJbmZvX2gKKyNkZWZpbmUgU1ZHUHJvcGVydHlJbmZvX2gKKworI2lmIEVOQUJMRShT
VkcpCisjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTsK
KworZW51bSBBbmltYXRlZFByb3BlcnR5VHlwZSB7CisgICAgQW5pbWF0ZWRBbmdsZSwKKyAgICBB
bmltYXRlZEJvb2xlYW4sCisgICAgQW5pbWF0ZWRDb2xvciwKKyAgICBBbmltYXRlZEVudW1lcmF0
aW9uLAorICAgIEFuaW1hdGVkSW50ZWdlciwKKyAgICBBbmltYXRlZExlbmd0aCwKKyAgICBBbmlt
YXRlZExlbmd0aExpc3QsCisgICAgQW5pbWF0ZWROdW1iZXIsCisgICAgQW5pbWF0ZWROdW1iZXJM
aXN0LAorICAgIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIsCisgICAgQW5pbWF0ZWRQYXRo
LAorICAgIEFuaW1hdGVkUG9pbnRzLAorICAgIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbywK
KyAgICBBbmltYXRlZFJlY3QsCisgICAgQW5pbWF0ZWRTdHJpbmcsCisgICAgQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0LAorICAgIEFuaW1hdGVkVW5rbm93bgorfTsKKworc3RydWN0IFNWR1Byb3BlcnR5
SW5mbyB7CisgICAgdHlwZWRlZiB2b2lkICgqU3luY2hyb25pemVQcm9wZXJ0eSkodm9pZCopOwor
ICAgIHR5cGVkZWYgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiAoKkxvb2t1cE9yQ3Jl
YXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVydHkpKHZvaWQqKTsKKworICAgIFNWR1Byb3BlcnR5
SW5mbyhBbmltYXRlZFByb3BlcnR5VHlwZSBuZXdUeXBlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBu
ZXdBdHRyaWJ1dGVOYW1lLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IG5ld1Byb3BlcnR5SWRlbnRpZmllciwgU3luY2hyb25pemVQcm9wZXJ0eSBuZXdTeW5jaHJvbml6
ZVByb3BlcnR5LAorICAgICAgICAgICAgICAgICAgICBMb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JB
bmltYXRlZFByb3BlcnR5IG5ld0xvb2t1cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVy
dHkpCisgICAgICAgIDogYW5pbWF0ZWRQcm9wZXJ0eVR5cGUobmV3VHlwZSkKKyAgICAgICAgLCBh
dHRyaWJ1dGVOYW1lKG5ld0F0dHJpYnV0ZU5hbWUpCisgICAgICAgICwgcHJvcGVydHlJZGVudGlm
aWVyKG5ld1Byb3BlcnR5SWRlbnRpZmllcikKKyAgICAgICAgLCBzeW5jaHJvbml6ZVByb3BlcnR5
KG5ld1N5bmNocm9uaXplUHJvcGVydHkpCisgICAgICAgICwgbG9va3VwT3JDcmVhdGVXcmFwcGVy
Rm9yQW5pbWF0ZWRQcm9wZXJ0eShuZXdMb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JBbmltYXRlZFBy
b3BlcnR5KQorICAgIHsKKyAgICB9CisKKyAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBhbmltYXRl
ZFByb3BlcnR5VHlwZTsKKyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lOwor
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlJZGVudGlmaWVyOworICAgIFN5bmNocm9u
aXplUHJvcGVydHkgc3luY2hyb25pemVQcm9wZXJ0eTsKKyAgICBMb29rdXBPckNyZWF0ZVdyYXBw
ZXJGb3JBbmltYXRlZFByb3BlcnR5IGxvb2t1cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVkUHJv
cGVydHk7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKQorI2VuZGlmIC8vIFNWR1By
b3BlcnR5SW5mb19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9w
ZXJ0eVRlYXJPZmYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdQcm9wZXJ0eVRlYXJPZmYuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRlYXJPZmYuaAkod29ya2luZyBjb3B5KQpAQCAt
OTMsNiArOTMsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTVkdQcm9wZXJ0eVJvbGUgcm9s
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9sZTsgfQogCisgICAgdm9pZCB1cGRhdGVBbmltVmFsKFBy
b3BlcnR5VHlwZSogdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fdmFsdWVJc0NvcHkp
OworICAgICAgICBBU1NFUlQobV9yb2xlID09IEFuaW1WYWxSb2xlKTsKKyAgICAgICAgbV92YWx1
ZSA9IHZhbHVlOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIFNWR1Byb3BlcnR5VGVhck9mZihT
VkdBbmltYXRlZFByb3BlcnR5KiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9s
ZSwgUHJvcGVydHlUeXBlJiB2YWx1ZSkKICAgICAgICAgOiBtX2FuaW1hdGVkUHJvcGVydHkoYW5p
bWF0ZWRQcm9wZXJ0eSkK
</data>
<flag name="review"
          id="94409"
          type_id="1"
          status="-"
          setter="rwlbuis"
    />
    <flag name="commit-queue"
          id="94413"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99986</attachid>
            <date>2011-07-07 08:33:55 -0700</date>
            <delta_ts>2011-07-08 05:59:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>AnimValPrep-v4.diff</filename>
            <type>text/plain</type>
            <size>446203</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwNTYwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIwIEBACisyMDExLTA3LTA3ICBOaWtvbGFz
IFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIEFkZCBhIHBvc3Np
YmlsaXR5IHRvIHJldHJpZXZlIHRoZSBhc3NvY2lhdGVkIFNWR0FuaW1hdGVkUHJvcGVydHkgb2Jq
ZWN0IGZvciBhIGNlcnRhaW4gWE1MIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM3OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbiBvcmRlciB0byBwcmVwYXJlIGFuaW1WYWwgc3VwcG9y
dCB3ZSBuZWVkIGEgd2F5IHRvIG1hcCBhIGdpdmVuIFNWRyBET00gYXR0cmlidXRlIHRvIGEgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eS4KKyAgICAgICAgZWcuIFNWR05hbWVzOjp4QXR0ciAtPiBTVkdSZWN0
RWxlbWVudDo6eEFuaW1hdGVkKCksIGV0Yy4gVGhpcyB3aWxsIGJlIG5lZWRlZCB0byB1cGRhdGUg
dGhlIGFuaW1WYWwgb2YgdGhlCisgICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHksIGlmIGFuIGFu
aW1hdGlvbiBpcyBydW5uaW5nLiBJdCB3b3VsZCByZXF1aXJlZCBhZGRpbmcgYSBuZXcgbWV0aG9k
IHRvIGFsbCBTVkcqIGNsYXNzZXMKKyAgICAgICAgdGhhdCBkZWZpbmUgYW5pbWF0ZWQgcHJvcGVy
dGllcy4gVW5mb3J0dW5hdGVseSB3ZSBhbHJlYWR5IGhhdmUgbG90cyBvZiByZXBlYXRlZCBjb2Rl
IGluIG1ldGhvZHMgbGlrZQorICAgICAgICBzeW5jaHJvbml6ZVByb3BlcnR5IC8gZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLiBMb29rIGF0IFNWR1JlY3RFbGVtZW50IGZvciBleGFtcGxl
OgorCisgICAgICAgIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChh
dHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7CisgICAgICAgICAgICAgICAgc3luY2hyb25pemVYKCk7
CisgICAgICAgICAgICAgICAgc3luY2hyb25pemVZKCk7CisgICAgICAgICAgICAgICAgIC4uLgor
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
eEF0dHIpIHsKKyAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZVgoKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6eUF0dHIpIHsKKyAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZVkoKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAuLi4KKyAgICAg
ICAgfQorCisgICAgICAgIG9yCisKKyAgICAgICAgdm9pZCBTVkdSZWN0RWxlbWVudDo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKKyAgICAgICAgeworICAgICAgICAgICAgQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAgICAgCisgICAgICAgICAgICBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKKyAgICAgICAgICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
KyAgICAgICAgICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICAgICAgICAgIC4uLgorICAgICAgICB9CisKKyAgICAg
ICAgVGhlc2UgbG9va3VwcyBhcmUgYWxsIHBlcmZvcm1lZCBkeW5hbWljYWxseS4gRWFjaCBzeW5j
aHJvbml6ZVByb3BlcnR5KCkgY2FsbCBkb2VzIGEgbG90IG9mIGNvbXBhcmlzb25zLgorICAgICAg
ICBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKSBpc24ndCB0aGF0IGJhZCBhcyB0aGUg
cmVzdWx0IGlzIGNhY2hlZCBpbiBhIHN0YXRpYyBIYXNoTWFwIHBlci1TVkdSZWN0RWxlbWVudC4K
KyAgICAgICAgVGhlcmUncyBubyByZWFzb24gdG8gZG8gdGhlc2UgdGhpbmdzIGR5bmFtaWNhbGx5
IQorCisgICAgICAgIEluc3BpcmVkIGJ5IEpTQywgSSdtIGFkZGluZyBhICJzdGF0aWMgY29uc3Qg
U1ZHUHJvcGVydHlJbmZvIHNfZm9vUHJvcGVydHlJbmZvIiBvYmplY3QgZm9yIGVhY2ggYW5pbWF0
ZWQgU1ZHIHByb3BlcnR5LgorICAgICAgICBGb3IgZXhhbXBsZSwgZm9yIFNWR1JlY3RFbGVtZW50
cyBTVkdBbmltYXRlZExlbmd0aCB4IHByb3BlcnR5IHdlJ3JlIHN0b3Jpbmc6CisgICAgICAgIC0g
IkFuaW1hdGVkUHJvcGVydHlUeXBlIHR5cGUiIChBbmltYXRlZExlbmd0aCAtLSBub3RlIHRoZSBl
bnVtIHdhcyBuYW1lZCBBbmltYXRlZEF0dHJpYnV0ZVR5cGUsIEkgcmVuYW1lZCBpdCB0byBBbmlt
YXRlZFByb3BlcnR5VHlwZSBmb3IgY2xhcml0eSkKKyAgICAgICAgLSAiY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSIgKFNWR05hbWVzOjp4QXR0cikKKyAgICAgICAgLSAiY29uc3Qg
QXRvbWljU3RyaW5nJiBwcm9wZXJ0eUlkZW50aWZpZXIiIChTVkdOYW1lczo6eEF0dHIubG9jYWxO
YW1lKCkgLS0gb25seSBkaWZmZXJlbnQgaWYgTi13cmFwcGVycyBtYXAgdG8gYSBzaW5nbGUgWE1M
IERPTSBhdHRyaWJ1dGUsIGVnLiBvcmllbnRBdHRyKQorICAgICAgICAtICJTeW5jaHJvbml6ZVBy
b3BlcnR5IHN5bmNocm9uaXplUHJvcGVydHkiIChjYWxsYmFjayB0byBTVkdSZWN0RWxlbWVudDo6
c3luY2hyb25pemVYKQorICAgICAgICAtICJMb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JBbmltYXRl
ZFByb3BlcnR5IGxvb2t1cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVydHkiIChjYWxs
YmFjayB0byBTVkdSZWN0RWxlbWVudDo6eEFuaW1hdGVkKQorCisgICAgICAgIFVzaW5nIHRoaXMg
aW5mb3JtYXRpb24sIHdlIGNhbiByZXBsYWNlIGFsbCB0aGUgdmFyaW91cyBzeW5jaHJvbml6ZVBy
b3BlcnR5L2ZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwIGltcGxlbWVudGF0aW9ucywgd2l0aCBh
IHNpbmdsZSBvbmUgaW4gU1ZHRWxlbWVudC4KKyAgICAgICAgQWxsIHRoZXNlIGFyZSBhdXRvLWdl
bmVyYXRlZCwgdXNpbmcgdGhlIHN0YW5kYXJkIG1hY3JvcyB1c2VkIHRvIGRlZmluZS9kZWNsYXJl
IFNWRyBhbmltYXRlZCBwcm9wZXJ0aWVzLiBUaGlzIHJlcXVpcmVkIHNldmVyYWwgY2hhbmdlcyB0
byB0aGUgbWFjcm9zLgorICAgICAgICBIZXJlJ3MgYSBzdW1tYXJ5OgorICAgIAorICAgICAgICAj
MSkgSW4gYWxsIGhlYWRlcnMsIHdyYXAgREVDTEFSRV9BTklNQVRFRF8qIGNhbGxzLCBpbiBCRUdJ
Tl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoQ2xhc3NOYW1lKSAvIEVORF9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMgYmxvY2tzLgorICAgICAgICAKKyAgICAgICAgICAgIFNhbXBsZSBj
aGFuZ2UgZm9yIFNWR1JlY3RFbGVtZW50OgorICAgICAgICAgICAgLSAgICBERUNMQVJFX0FOSU1B
VEVEX0xFTkdUSChYLCB4KQorICAgICAgICAgICAgLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdU
SChZLCB5KQorICAgICAgICAgICAgLSAgICAuLi4KKworICAgICAgICAgICAgKyAgICBCRUdJTl9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUmVjdEVsZW1lbnQpCisgICAgICAgICAgICAr
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQorICAgICAgICAgICAgKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKKyAgICAgICAgICAgICsgICAgICAgICAu
Li4KKyAgICAgICAgICAgICsgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisg
ICAgICAgICMyKSBJbiBhbGwgY3BwIGZpbGVzLCB3cmFwIERFRklORV9BTklNQVRFRF8qIGNhbGxz
LCBpbiBCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUyAvIEVORF9ERUZJTkVfQU5JTUFU
RURfUFJPUEVSVElFUyBibG9ja3MuCisgICAgCisgICAgICAgICAgICBTYW1wbGUgY2hhbmdlIGZv
ciBTVkdSZWN0RWxlbWVudDoKKyAgICAgICAgICAgIC1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNW
R1JlY3RFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCisgICAgICAgICAgICAtREVGSU5F
X0FOSU1BVEVEX0xFTkdUSChTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQor
ICAgICAgICAgICAgLS4uLgorCisgICAgICAgICAgICArQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BS
T1BFUlRJRVMKKyAgICAgICAgICAgICsgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdSZWN0
RWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQorICAgICAgICAgICAgKyAgICBERUZJTkVf
QU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCisg
ICAgICAgICAgICArICAgIC4uLgorICAgICAgICAgICAgK0VORF9ERUZJTkVfQU5JTUFURURfUFJP
UEVSVElFUworCisgICAgICAgIAorICAgICAgICAgICAgVGhpcyBub3cgZ2VuZXJhdGVzIHRoZSAi
c3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyIgb2JqZWN0cyBmb3IgZWFjaCBhbmltYXRlZCBT
VkcgcHJvcGVydHkuCisKKyAgICAgICAgIzMpIEluIGFsbCBjcHAgZmlsZXMsIGFkZCBhIG5ldyBz
ZWN0aW9uIHdyYXBwZWQgaW4gQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhDbGFz
c05hbWUgLyBFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyBibG9ja3M6CisgICAgICAg
IAorICAgICAgICAgICAgU2FtcGxlIGNoYW5nZSBmb3IgU1ZHUmVjdEVsZW1lbnQ6CisgICAgICAg
ICAgICArQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdSZWN0RWxlbWVudCkK
KyAgICAgICAgICAgICsgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeCkKKyAg
ICAgICAgICAgICsgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeSkKKyAgICAg
ICAgICAgICsgICAgLi4uCisgICAgICAgICAgICArICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KQorICAgICAgICAgICAg
KyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKKyAgICAg
ICAgICAgICtFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUworCisgICAgICAgICAgICBU
aGlzIGlzIHRoZSBtYWluIHBpZWNlIG9mIHRoZSBsb2dpYyB0aGF0IHJlcGxhY2VzIHRoZSBtYW51
YWwgc3luY2hyb25pemVQcm9wZXJ0eS9maWxsQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCBpbXBsZW1l
bnRhdGlvbi4gSXQgZXhwYW5kcyB0byBmb2xsb3dpbmc6CisKKyAgICAgICAgICAgIFNWR0F0dHJp
YnV0ZVRvUHJvcGVydHlNYXAmIFNWR1JlY3RFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5TWFw
KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNW
R0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCwgKCkpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckFuaW1hdGVk
UHJvcGVydGllc0ZvclNWR1JlY3RFbGVtZW50KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBtYXAgPSBTVkdSZWN0RWxlbWVudDo6YXR0
cmlidXRlVG9Qcm9wZXJ0eU1hcCgpOworICAgICAgICAgICAgICAgIGlmICghbWFwLmlzRW1wdHko
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIG1hcC5hZGRQ
cm9wZXJ0eShTVkdSZWN0RWxlbWVudDo6eFByb3BlcnR5SW5mbygpKTsKKyAgICAgICAgICAgICAg
ICBtYXAuYWRkUHJvcGVydHkoU1ZHUmVjdEVsZW1lbnQ6OnlQcm9wZXJ0eUluZm8oKSk7CisgICAg
ICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgbWFwLmFkZFByb3BlcnRpZXMoU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKSk7CisgICAg
ICAgICAgICAgICAgbWFwLmFkZFByb3BlcnRpZXMoU1ZHVGVzdHM6OmF0dHJpYnV0ZVRvUHJvcGVy
dHlNYXAoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEEgc2luZ2xlLWluc3RhbmNl
IG9mIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAgaXMgY3JlYXRlZCBmb3IgZWFjaCBTVkcqRWxl
bWVudC4gVGhlIGNvbnN0cnVjdG9yIG9mIFNWR1JlY3RFbGVtZW50IGlzIHN1cHBvc2VkIHRvIGNh
bGwKKyAgICAgICAgICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHUmVjdEVsZW1l
bnQoKSwgd2hpY2ggY29sbGVjdHMgYWxsIHByb3BlcnRpZXMgb2YgU1ZHUmVjdEVsZW1lbnQgYW5k
IGFsbCBpdHMgcGFyZW50IGNsYXNzZXMgYW5kIHN0b3JlcyB0aGVtCisgICAgICAgICAgICBpbiBh
IFZlY3Rvcjxjb25zdCBTVkdQcm9wZXJ0eUluZm8qPi4gVGhpcyBWZWN0b3IgaXMgc3RvcmVkIGlu
IGEgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBWZWN0b3I8Y29uc3QgU1ZHUHJvcGVydHlJbmZvKj4g
PiB3aGVyZSB0aGUga2V5CisgICAgICAgICAgICBpcyB0aGUgYXR0cmlidXRlIG5hbWUgKGVnLiBT
VkdOYW1lczo6eEF0dHIgLT4gU1ZHUmVjdEVsZW1lbnQ6OnhQcm9wZXJ0eUluZm8pLiBUaGlzIGlz
IG9ubHkgZG9uZSBfb25jZV8gcGVyIFNWR1JlY3RFbGVtZW50LgorCisgICAgICAgICAgICBTVkdF
bGVtZW50IGNvbnRhaW5zIGEgInZpcnR1YWwgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgbG9j
YWxBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCkiIG1ldGhvZCwgYW5kIFNWR1JlY3RFbGVtZW50IG92
ZXJyaWRlcyBpdAorICAgICAgICAgICAgYW5kIHJldHVybnMgU1ZHUmVjdEVsZW1lbnQ6OmF0dHJp
YnV0ZVRvUHJvcGVydHlNYXAoKSAod2hpY2ggaXMgc3RhdGljISkgLS0gdGhpcyBpcyBoaWRkZW4g
YWdhaW4gaW4gdGhlIG1hY3Jvcywgbm8gbmVlZCB0byB3cml0ZSBhbnkgY29kZS4KKworICAgICAg
ICAgICAgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCBwcm92aWRlcyBmb2xsb3dpbmcgQVBJOgor
ICAgICAgICAgICAgLSBib29sIHN5bmNocm9uaXplUHJvcGVydHkoU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgICAgICAg
ICAtIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0aWVzKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50
KQorICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQSBnZW5lcmljIHdheSB0byBzeW5jaHJv
bml6ZSBhIFNWR0FuaW1hdGVkUHJvcGVydHkgd2l0aCBpdHMgWE1MIERPTSBhdHRyaWJ1dGUuIEFu
eSBTVkcgRE9NIGNoYW5nZSB0byBlZy4gPHJlY3Q+cyB4IHByb3BlcnR5IHdpbGwgbm93IHRyaWdn
ZXIKKyAgICAgICAgICAgICAgICBjb250ZXh0RWxlbWVudC0+bG9jYWxBdHRyaWJ1dGVUb1Byb3Bl
cnR5TWFwKCkuc3luY2hyb25pemVQcm9wZXJ0eSh0aGlzLCBTVkdOYW1lczo6eEF0dHIpCisgICAg
ICAgICAgICAgICAgVGhlIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAgd2lsbCBhc2sgaXRzIEhh
c2hNYXAgZm9yIHRoZSBWZWN0b3IgY29udGFpbmluZyB0aGUgcHJvcGVydGllcyBmb3IgU1ZHTmFt
ZXM6OnhBdHRyIChpbiB0aGF0IGNhc2UsIGp1c3Qgb25lIHhBbmltYXRlZCgpKS4KKworICAgICAg
ICAgICAgLSB2b2lkIGFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFZlY3RvcjxBbmltYXRlZFByb3BlcnR5VHlwZT4mIHBy
b3BlcnR5VHlwZXMpCisKKyAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCByZXBsYWNlcyB0aGUg
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAgaW1wbGVtZW50YXRpb25zIGV2ZXJ5d2hlcmUuCisg
ICAgICAgIAorICAgICAgICAgICAgLSB2b2lkIGFuaW1hdGVkUHJvcGVydGllc0ZvckF0dHJpYnV0
ZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSwgVmVjdG9yPFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiA+JiBwcm9wZXJ0aWVz
KTsKKworICAgICAgICAgICAgICAgIFRoaXMgbWV0aG9kIGlzIG5vdCB1c2VkIHlldCwgYnV0IGFs
bG93cyB1cyB0byBjb2xsZWN0IGFsbCBTVkdBbmltYXRlZFByb3BlcnRpZXMgZm9yIGEgUXVhbGlm
aWVkTmFtZSAtLSB0aGUgaW5pdGlhbCBnb2FsIGZvciB0aGlzIHBhdGNoLgorCisgICAgICAgICM0
KSBJbiBhbGwgY3BwIGZpbGVzLCBhZGQgYSBjYWxsIHRvICJyZWdpc3RlckFuaW1hdGVkUHJvcGVy
dGllc0ZvckNsYXNzTmFtZSgpIiBpbiB0aGUgY29uc3RydWN0b3IuIEZvcmdldHRpbmcgdGhpcyB3
aWxsIHJlc3VsdCBpbiBhIGNvbXBpbGUgZXJyb3IuCisKKyAgICAgICAgRG9lc24ndCBhZmZlY3Qg
YW55IHRlc3RzLCBvbmx5IGdpdmVzIHBlcmZvcm1hbmNlIGJlbmVmaXRzLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6IEFkZCBzdmcvcHJvcGVydGllcy8oU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0
eU1hcC4qfFNWR1Byb3BlcnR5SW5mby5oKSB0byBidWlsZC4KKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5saXN0LmFtOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAg
ICAqIFdlYkNvcmUucHJvOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQUVsZW1lbnQ6OlNWR0FFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHQUVsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVk
RmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1lbnQ6OnN5bmNocm9uaXplUmVx
dWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FFbGVtZW50OjpzeW5jaHJv
bml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FsdEdseXBoRWxlbWVudDo6U1ZHQWx0R2x5cGhFbGVt
ZW50KToKKyAgICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVt
ZW50OjpTVkdBbmltYXRlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxl
bWVudDo6aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGVFbGVtZW50OjpkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6ZGV0ZXJtaW5lUHJvcGVydHlWYWx1ZVR5cGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5k
VG9WYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0
ZUZyb21BbmRCeVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6
cmVzZXRUb0Jhc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6
YXBwbHlSZXN1bHRzVG9UYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1l
bnQ6OmNhbGN1bGF0ZURpc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVt
ZW50OjplbnN1cmVBbmltYXRvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpoYXNWYWxpZEF0dHJpYnV0ZVR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmRldGVy
bWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVU
cmFuc2Zvcm1FbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjphcHBseVJlc3VsdHNUb1Rh
cmdldCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRC
b29sZWFuLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uaDoKKyAgICAg
ICAgKiBzdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVk
TGVuZ3RoLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlZE51bWJlci5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZE51
bWJlckxpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlv
Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUmVjdC5oOgorICAgICAgICAqIHN2Zy9TVkdB
bmltYXRlZFN0cmluZy5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Qu
aDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVkVHlwZTo6U1ZHQW5pbWF0ZWRUeXBlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5p
bWF0ZWRUeXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OnR5cGUpOgor
ICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I6OlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yKToKKyAg
ICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRpb25FbGVtZW50OjpTVkdBbmltYXRpb25FbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmN1cnJlbnRWYWx1ZXNGb3JWYWx1ZXNBbmltYXRpb24p
OgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRpb25FbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4
dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6c3luY2hy
b25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0b3JGYWN0b3J5OjpjcmVhdGUpOgorICAgICAg
ICAqIHN2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NpcmNs
ZUVsZW1lbnQ6OlNWR0NpcmNsZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdDaXJjbGVFbGVt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjpzeW5jaHJvbml6ZVJl
cXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVudDo6c3lu
Y2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xl
RWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR0Ns
aXBQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6
OlNWR0NsaXBQYXRoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVp
cmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50OjpzeW5j
aHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0
aEVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6U1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0N1cnNvckVsZW1lbnQ6OlNWR0N1cnNvckVsZW1lbnQpOgorICAgICAg
ICAqIHN2Zy9TVkdDdXJzb3JFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JF
bGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQ3Vyc29yRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQ3Vyc29yRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6
CisgICAgICAgICogc3ZnL1NWR0RlZnNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0RlZnNFbGVtZW50OjpTVkdEZWZzRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0RlZnNFbGVt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdEZWZzRWxlbWVudDo6c3luY2hyb25pemVSZXF1
aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RlZnNFbGVtZW50OjpzeW5jaHJv
bml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEZWZzRWxlbWVu
dDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6YW5pbWF0ZWRQcm9wZXJ0eVR5cGVG
b3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6dXBkYXRlQW5pbWF0
ZWRTVkdBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6bG9jYWxBdHRy
aWJ1dGVUb1Byb3BlcnR5TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN5bmNo
cm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpz
eW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVt
ZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVy
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4
dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6c3luY2hyb25pemVTeXN0
ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50OjpTVkdFbGxpcHNlRWxlbWVudCk6CisgICAg
ICAgICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGxp
cHNlRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0VsbGlwc2VFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdFbGxpcHNlRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5n
dWFnZSk6CisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50OjpTVkdGRUJsZW5kRWxlbWVudCk6CisgICAgICAgICog
c3ZnL1NWR0ZFQmxlbmRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpT
VkdGRUNvbG9yTWF0cml4RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpTVkdG
RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OlNWR0ZFQ29tcG9z
aXRlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt
ZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudCk6CisgICAgICAg
ICogc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9v
ZEVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdGRUZsb29kRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQpOgorICAg
ICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RkVJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6
OlNWR0ZFSW1hZ2VFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVMaWdodEVsZW1lbnQ6OlNWR0ZFTGlnaHRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZH
RkVMaWdodEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwOgor
ICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU1l
cmdlTm9kZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNZXJnZU5vZGVFbGVt
ZW50OjpTVkdGRU1lcmdlTm9kZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlTm9k
ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpTVkdGRU1vcnBob2xvZ3lF
bGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVP
ZmZzZXRFbGVtZW50OjpTVkdGRU9mZnNldEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRU9m
ZnNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpT
VkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVGlsZUVsZW1lbnQ6OlNWR0ZFVGlsZUVsZW1lbnQpOgor
ICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFVHVy
YnVsZW5jZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxl
bWVudDo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpTVkdGaWx0ZXJFbGVtZW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMuaDoKKyAgICAgICAgKiBzdmcvU1ZHRml0VG9WaWV3Qm94LmNwcDoKKyAgICAgICAgKiBz
dmcvU1ZHRml0VG9WaWV3Qm94Lmg6CisgICAgICAgICogc3ZnL1NWR0ZvbnRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRFbGVtZW50OjpTVkdGb250RWxlbWVudCk6CisgICAg
ICAgICogc3ZnL1NWR0ZvbnRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250RWxl
bWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpT
VkdGb3JlaWduT2JqZWN0RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RF
bGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6c3lu
Y2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFn
ZSk6CisgICAgICAgICogc3ZnL1NWR0dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0dFbGVtZW50OjpTVkdHRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0dFbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdHRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0
ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHRWxlbWVudDo6c3luY2hyb25pemVTeXN0
ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR0dseXBoRWxlbWVudC5jcHA6CisgICAgICAg
ICogc3ZnL1NWR0dseXBoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjpTVkdHcmFkaWVu
dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHR3JhZGllbnRFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZUVsZW1lbnQ6OlNWR0ltYWdlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVp
cmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpzeW5jaHJv
bml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1l
bnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6U1ZHTGluZUVsZW1l
bnQpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGluZUVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZUVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3Vh
Z2UpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHTVBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01QYXRo
RWxlbWVudDo6U1ZHTVBhdGhFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHTVBhdGhFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTWFya2VyRWxlbWVudDo6b3JpZW50VHlwZVByb3BlcnR5SW5mbyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OnNldE9yaWVudFRvQXV0byk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnRUb0FuZ2xlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR01hcmtlckVsZW1lbnQ6OnN5bmNocm9uaXplT3JpZW50VHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50Ojpsb29rdXBPckNyZWF0ZU9yaWVudFR5cGVXcmFwcGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6Om9yaWVudFR5cGVBbmltYXRl
ZCk6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR01hcmtlckVsZW1lbnQ6Om9yaWVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFy
a2VyRWxlbWVudDo6b3JpZW50VHlwZUJhc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdN
YXJrZXJFbGVtZW50OjpzZXRPcmllbnRUeXBlQmFzZVZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZH
TWFza0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6OlNWR01h
c2tFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHTWFza0VsZW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR01hc2tFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3Rl
bUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5jcHA6Cisg
ICAgICAgICogc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
UGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OmRQcm9w
ZXJ0eUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OlNWR1BhdGhFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50Ojpsb29rdXBPckNyZWF0ZURX
cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpzeW5jaHJvbml6ZUQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnBhdGhTZWdMaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjphbmltYXRlZFBhdGhTZWdMaXN0KToKKyAgICAg
ICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVt
ZW50OjpwYXRoQnl0ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6
c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhF
bGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYXRoRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICog
c3ZnL1NWR1BhdGhTZWdXaXRoQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNl
Z1dpdGhDb250ZXh0OjphbmltYXRlZFByb3BlcnR5KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0dGVy
bkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OlNWR1Bh
dHRlcm5FbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVy
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OnN5bmNocm9uaXplUmVx
dWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50Ojpz
eW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHUG9seUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OnBvaW50c1Byb3BlcnR5SW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6U1ZHUG9seUVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVBvaW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6bG9va3VwT3JDcmVhdGVQb2ludHNXcmFw
cGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50Ojpwb2ludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OmFuaW1hdGVkUG9pbnRzKToKKyAgICAgICAgKiBz
dmcvU1ZHUG9seUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50Ojpz
eW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVs
ZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBz
dmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudDo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1JlY3RF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50OjpTVkdSZWN0RWxl
bWVudCk6CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZWN0RWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5n
dWFnZSk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHU1ZHRWxlbWVudDo6U1ZHU1ZHRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1NWR0Vs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnN5bmNocm9uaXplUmVx
dWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzeW5jaHJv
bml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50
OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3JpcHRFbGVtZW50OjpTVkdTY3JpcHRF
bGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdTdG9wRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6
U1ZHU3RvcEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxl
ZEVsZW1lbnQ6OlNWR1N0eWxlZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVy
dHlUb1R5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6YW5pbWF0
ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU3dpdGNoRWxlbWVudDo6U1ZHU3dpdGNoRWxlbWVudCk6CisgICAg
ICAgICogc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N3aXRj
aEVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdTd2l0Y2hFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTd2l0Y2hFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdl
KToKKyAgICAgICAgKiBzdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdTeW1ib2xFbGVtZW50OjpTVkdTeW1ib2xFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZH
U3ltYm9sRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUUmVmRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6U1ZHVFJlZkVsZW1lbnQpOgorICAgICAgICAq
IHN2Zy9TVkdUUmVmRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUU3BhbkVsZW1lbnQuY3Bw
OgorICAgICAgICAqIHN2Zy9TVkdUU3BhbkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGVz
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnJlcXVpcmVkRmVhdHVyZXNQcm9w
ZXJ0eUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnJlcXVpcmVkRXh0ZW5zaW9u
c1Byb3BlcnR5SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6c3lzdGVtTGFuZ3Vh
Z2VQcm9wZXJ0eUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OmF0dHJpYnV0ZVRv
UHJvcGVydHlNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnN5bmNocm9uaXplUmVx
dWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6c3luY2hyb25pemVS
ZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnN5bmNocm9u
aXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdUZXN0cy5oOgorICAgICAgICAq
IHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4
dENvbnRlbnRFbGVtZW50Ojp0ZXh0TGVuZ3RoUHJvcGVydHlJbmZvKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHVGV4dENvbnRlbnRFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6c3luY2hyb25pemVUZXh0TGVuZ3Ro
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6bG9va3VwT3JDcmVh
dGVUZXh0TGVuZ3RoV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6OnRleHRMZW5ndGhBbmltYXRlZCk6CisgICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50
RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzeW5j
aHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRl
bnRFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgor
ICAgICAgICAqIHN2Zy9TVkdUZXh0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
ZXh0RWxlbWVudDo6U1ZHVGV4dEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0RWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpTVkdUZXh0UGF0aEVsZW1lbnQpOgorICAgICAgICAq
IHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9u
aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UG9zaXRpb25pbmdFbGVt
ZW50OjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwOgor
ICAgICAgICAqIHN2Zy9TVkdUaXRsZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rp
dGxlRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6U1ZHVXNlRWxlbWVudCk6
CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Vz
ZUVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdVc2VFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAg
ICAgICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmll
d0VsZW1lbnQ6OlNWR1ZpZXdFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHVmlld1NwZWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Vmlld1NwZWM6OlNWR1ZpZXdTcGVjKToKKyAgICAgICAgKiBzdmcvU1ZHVmlld1NwZWMuaDoKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5Ojp1cGRhdGVBbmltVmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBXcmFwcGVyKToKKyAgICAg
ICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmg6CisgICAgICAg
ICogc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YW5pbWF0ZWRQcm9w
ZXJ0aWVzRm9yQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1
dGVUb1Byb3BlcnR5TWFwLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRl
VG9Qcm9wZXJ0eU1hcDo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwOjp+U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1h
cCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwOjppc0VtcHR5
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA6OmFkZFByb3Bl
cnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YWRk
UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6
YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6c3luY2hyb25pemVQcm9wZXJ0aWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA6OnN5bmNocm9uaXplUHJvcGVydHkp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YW5pbWF0ZWRQ
cm9wZXJ0eSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlJbmZvOjpTVkdQcm9wZXJ0eUluZm8p
OgorCiAyMDExLTA3LTA3ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29t
PgogCiAgICAgICAgIE1vdmUgcmVtYWluaW5nIGVudW1zIG91dCBvZiBTVkcqRWxlbWVudCBjbGFz
c2VzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTgwNiw2ICsxODA2LDcg
QEAgSUYgKEVOQUJMRV9TVkcpCiAgICAgICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1h
Z2UuY3BwCiAgICAgICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKICAgICAg
ICAgc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKKyAgICAgICAgc3Zn
L3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAKICAgICAgICAgc3ZnL3By
b3BlcnRpZXMvU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwCiAgICAgKQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMzM5Myw2ICsz
MzkzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL0xpbmVhckdyYWRpZW50QXR0cmli
dXRlcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvUGF0dGVybkF0dHJpYnV0ZXMuaCBcCisJU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlN
YXAuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvblByb3BlcnR5VGVhck9mZi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oIFwKQEAgLTM0
MDgsNiArMzQxMCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eS5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUluZm8uaCBcCiAJU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFyT2ZmLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCBcCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQkod29ya2luZyBjb3B5KQpAQCAtMTA3Nyw2ICsxMDc3LDcgQEAKICAgICAgICAgICAgICdzdmcv
U1ZHVHJhbnNmb3JtTGlzdC5oJywKICAgICAgICAgICAgICdzdmcvYW5pbWF0aW9uL1NNSUxUaW1l
LmgnLAogICAgICAgICAgICAgJ3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaCcsCisgICAg
ICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oJywKICAg
ICAgICAgICAgICdzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlU
ZWFyT2ZmLmgnLAogICAgICAgICAgICAgJ3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFBy
b3BlcnR5VGVhck9mZi5oJywKICAgICAgICAgICAgICdzdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5LmgnLApAQCAtMTA5MCw2ICsxMDkxLDcgQEAKICAgICAgICAgICAgICdzdmcvcHJv
cGVydGllcy9TVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgnLAogICAgICAgICAgICAgJ3N2Zy9wcm9w
ZXJ0aWVzL1NWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmgnLAogICAgICAgICAgICAgJ3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmgnLAorICAgICAgICAgICAgJ3N2Zy9wcm9wZXJ0aWVz
L1NWR1Byb3BlcnR5SW5mby5oJywKICAgICAgICAgICAgICdzdmcvcHJvcGVydGllcy9TVkdQcm9w
ZXJ0eVRlYXJPZmYuaCcsCiAgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlU
cmFpdHMuaCcsCiAgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHU3RhdGljTGlzdFByb3Bl
cnR5VGVhck9mZi5oJywKQEAgLTYwMDAsNiArNjAwMiw3IEBACiAgICAgICAgICAgICAnc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwJywKICAgICAgICAgICAgICdzdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgnLAorICAgICAgICAgICAgJ3N2Zy9wcm9wZXJ0aWVz
L1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwJywKICAgICAgICAgICAgICdzdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmgnLAogICAgICAgICAg
ICAgJ3N2Zy9wcm9wZXJ0aWVzL1NWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmNwcCcsCiAg
ICAgICAgICAgICAnd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwJywKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJvCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMjk4LDYgKzIyOTgsNyBAQCBIRUFERVJTICs9IFwKICAg
ICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmggXAogICAgIHN2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oIFwKICAgICBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBc
CisgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oIFwKICAgICBz
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmggXAog
ICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIFwKICAg
ICBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmgg
XApAQCAtMjMxMiw2ICsyMzEzLDcgQEAgSEVBREVSUyArPSBcCiAgICAgc3ZnL3Byb3BlcnRpZXMv
U1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oIFwKICAgICBzdmcvcHJvcGVydGllcy9TVkdQYXRoU2Vn
TGlzdFByb3BlcnR5VGVhck9mZi5oIFwKICAgICBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eS5o
IFwKKyAgICBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUluZm8uaCBcCiAgICAgc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJvcGVydHlUZWFyT2ZmLmggXAogICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3Bl
cnR5VHJhaXRzLmggXAogICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR1N0YXRpY0xpc3RQcm9wZXJ0eVRl
YXJPZmYuaCBcCkBAIC0zMjYxLDYgKzMyNjMsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVf
U1ZHPTEpIHsKICAgICAgICAgc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcCBcCiAg
ICAgICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwIFwKICAgICAg
ICAgc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBcCisgICAgICAgIHN2Zy9wcm9wZXJ0aWVzL1NW
R0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwIFwKICAgICAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZH
UGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwCiAKICAgICBsaW51eC1nKysqOkNPTkZJRyhk
ZWJ1ZywgZGVidWd8cmVsZWFzZSk6aXNFcXVhbChRVF9BUkNILGkzODYpIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA5MDQ1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NjQ3Myw2ICs2NjQ3MywxNCBAQAogCQkJCU5hbWU9InByb3BlcnRpZXMi
CiAJCQkJPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXHByb3BlcnRpZXNc
U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJ
PEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdccHJvcGVydGllc1xTVkdBdHRyaWJ1dGVU
b1Byb3BlcnR5TWFwLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxzdmdccHJvcGVydGllc1xTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVy
dHlUZWFyT2ZmLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC02NjUzMyw2ICs2NjU0MSwxMCBA
QAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
c3ZnXHByb3BlcnRpZXNcU1ZHUHJvcGVydHlJbmZvLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdccHJvcGVydGllc1xTVkdQcm9wZXJ0
eVRlYXJPZmYuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDkwNDU0KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBACiAJCTA4MTY2OERBMTI1NjAzRDUwMDZGMjVERSAv
KiBTVkdUZXh0TGF5b3V0RW5naW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwODE2NjhEODEyNTYwM0Q1MDA2RjI1REUgLyogU1ZHVGV4dExheW91dEVu
Z2luZS5oICovOyB9OwogCQkwODFBQThEQTExMTEyMzdFMDAyQUIwNkUgLyogU1ZHRWxlbWVudFJh
cmVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
ODFBQThEOTExMTEyMzdFMDAyQUIwNkUgLyogU1ZHRWxlbWVudFJhcmVEYXRhLmggKi87IH07CiAJ
CTA4MUNERkJGMTI2RUNGRTgwMEQyMTVDQSAvKiBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25p
emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODFD
REZCRTEyNkVDRkU4MDBEMjE1Q0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTA4MURE
NDlDMTNCQTFBNjAwMERDNzYyNyAvKiBTVkdQcm9wZXJ0eUluZm8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MURENDlCMTNCQTFBNjAwMERDNzYyNyAv
KiBTVkdQcm9wZXJ0eUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwODFFQkYzQTBGRDM0RjQxMDBEQTc1NTkgLyogU1ZHRmlsdGVyQnVpbGRl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODFF
QkYzODBGRDM0RjQxMDBEQTc1NTkgLyogU1ZHRmlsdGVyQnVpbGRlci5jcHAgKi87IH07CiAJCTA4
MUVCRjNCMEZEMzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODFFQkYzOTBGRDM0RjQxMDBEQTc1
NTkgLyogU1ZHRmlsdGVyQnVpbGRlci5oICovOyB9OwogCQkwODIzRDE1OTEyN0FENkFDMDAwRUJD
OTUgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwODIzRDE1ODEyN0FENkFDMDAwRUJDOTUgLyogU1ZHQW5pbWF0ZWRJ
bnRlZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTE2OCw2ICsxNjksOCBAQAogCQkwOEYwQkZDNjEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4
dE1ldHJpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA4RjBCRkMxMTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0TWV0cmljcy5oICovOyB9OwogCQkw
OEYyRjAwOTEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEYyRjAwNzEyMTNFNjE3
MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgKi87IH07CiAJCTA4RjJGMDBBMTIx
M0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEYyRjAwODEyMTNFNjE3MDBEQ0VDNDggLyog
UmVuZGVySW1hZ2VSZXNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTA4RkIxN0MxMTNCQzdFOTEwMDA0MDA4NiAvKiBTVkdBdHRyaWJ1dGVU
b1Byb3BlcnR5TWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA4RkIxN0MwMTNCQzdFOTEwMDA0MDA4NiAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5
TWFwLmNwcCAqLzsgfTsKKwkJMDhGQjNGODQxM0JDNzU0QzAwOTlGQzE4IC8qIFNWR0F0dHJpYnV0
ZVRvUHJvcGVydHlNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA4RkIzRjgzMTNCQzc1NEMwMDk5RkMxOCAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5
TWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MDhGRTBCQzUxMjdFMkFDMTAwMEM0RkI1IC8qIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRp
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGRTBC
QzQxMjdFMkFDMTAwMEM0RkI1IC8qIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4RkYxMDIw
MTI5NTBGNUEwMEYwMDI3NiAvKiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEZGMTAxRjEyOTUw
RjU5MDBGMDAyNzYgLyogU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwICovOyB9Owog
CQkwQTQ4NDQ5OTBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBBNDg0NDk4MENBNDRDQjIwMEI3QkQ0
OCAvKiBTb2Z0TGlua2luZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC02NDUxLDYgKzY0NTQsNyBAQAogCQkwODE2NjhEODEyNTYwM0Q1MDA2RjI1
REUgLyogU1ZHVGV4dExheW91dEVuZ2luZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdUZXh0TGF5b3V0RW5naW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA4MUFBOEQ5MTExMTIzN0UwMDJBQjA2RSAvKiBTVkdFbGVtZW50UmFyZURhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHRWxlbWVudFJhcmVEYXRhLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MUNERkJFMTI2RUNGRTgwMEQyMTVDQSAvKiBTVkdBbmlt
YXRlZFByb3BlcnR5U3luY2hyb25pemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMDgxREQ0OUIxM0JBMUE2MDAwREM3NjI3IC8qIFNWR1Byb3BlcnR5SW5mby5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcm9wZXJ0eUluZm8uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgxRUJGMzgwRkQzNEY0MTAwREE3NTU5IC8qIFNW
R0ZpbHRlckJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U1ZHRmlsdGVyQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MUVC
RjM5MEZEMzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ZpbHRlckJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDgyM0QxNTgxMjdBRDZBQzAwMEVCQzk1IC8qIFNWR0FuaW1hdGVkSW50ZWdl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZEludGVnZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY1NDUsNiArNjU0OSw4IEBACiAJCTA4
RjBCRkMxMTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0TWV0cmljcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUZXh0TWV0cmljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwOEYyRjAwNzEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJj
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJJbWFnZVJl
c291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGMkYwMDgxMjEzRTYx
NzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVuZGVySW1hZ2VSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwOEZCMTdDMDEzQkM3RTkxMDAwNDAwODYgLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0
eU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBdHRyaWJ1
dGVUb1Byb3BlcnR5TWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDhGQjNG
ODMxM0JDNzU0QzAwOTlGQzE4IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEZFMEJDNDEyN0UyQUMxMDAwQzRGQjUgLyog
U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwOEZGMTAxRjEyOTUwRjU5MDBGMDAyNzYgLyogU1ZHUGF0aFNlZ0xp
c3RQcm9wZXJ0eVRlYXJPZmYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzQ0LDExICsxMjc1MCwxNCBAQAogCQkJCTA4OEEwREZGMTI2
RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZi5oICovLAogCQkJCTA4
NTI1RTYyMTI3OEMwMDEwMEE4NDc3OCAvKiBTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9m
Zi5oICovLAogCQkJCTA4NUExNTkyMTI4OUE4REQwMDI3MTBFMyAvKiBTVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLywKKwkJCQkwOEZCMTdDMDEzQkM3RTkxMDAwNDAw
ODYgLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAgKi8sCisJCQkJMDhGQjNGODMxM0JD
NzU0QzAwOTlGQzE4IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCAqLywKIAkJCQkwODEw
NzY0MzEyODI4NTU2MDA3QzYzQkEgLyogU1ZHTGlzdFByb3BlcnR5LmggKi8sCiAJCQkJMDg4QTBF
MDAxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJCQkw
OEZGMTAxRjEyOTUwRjU5MDBGMDAyNzYgLyogU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYu
Y3BwICovLAogCQkJCTA4NEEwODI4MTI4RDc4NjcwMDJEQjFGMSAvKiBTVkdQYXRoU2VnTGlzdFBy
b3BlcnR5VGVhck9mZi5oICovLAogCQkJCTA4OEEwRTAxMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQ
cm9wZXJ0eS5oICovLAorCQkJCTA4MURENDlCMTNCQTFBNjAwMERDNzYyNyAvKiBTVkdQcm9wZXJ0
eUluZm8uaCAqLywKIAkJCQkwODhBMEUwMjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlU
ZWFyT2ZmLmggKi8sCiAJCQkJMDg4QTBFMDMxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5
VHJhaXRzLmggKi8sCiAJCQkJMDg4MEY3MEQxMjgyQjQ2RDAwOTQ4NTA1IC8qIFNWR1N0YXRpY0xp
c3RQcm9wZXJ0eVRlYXJPZmYuaCAqLywKQEAgLTIzMDg4LDYgKzIzMDk3LDggQEAKIAkJCQkwODYz
OTUxNjEzQjVGRTU3MDBCQjM0NEQgLyogU1ZHQW5pbWF0ZWRQYXRoLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MzFBMkY5QzEzQjZGMkIwMDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25h
bE51bWJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVBQkI3ODcxM0I5MDRCQzAwRjE5N0UzIC8q
IExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDgxREQ0OUMx
M0JBMUE2MDAwREM3NjI3IC8qIFNWR1Byb3BlcnR5SW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MDhGQjNGODQxM0JDNzU0QzAwOTlGQzE4IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpAQCAtMjU4NTQsNiArMjU4NjUsNyBAQAogCQkJCTQzMUEyRkQ3MTNCNzcw
N0EwMDc3OTFFNCAvKiBTVkdBbmltYXRlZExlbmd0aExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDMxQTMwMjExM0I4OURDQzAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RS
YXRpby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzFBMzA4ODEzQjhGOTc4MDA3NzkxRTQgLyog
U1ZHQW5pbWF0ZWRCb29sZWFuLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA4RkIxN0MxMTNCQzdF
OTEwMDA0MDA4NiAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQzRjZGRDk2MTNCQ0QwQjEwMDIyNDA1MiAvKiBTVkdBbmltYXRlZEludGVnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAJKHJldmlzaW9uIDkw
NDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDgsMTUgKzQ4LDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0
ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHQUVsZW1l
bnQsIFNWR05hbWVzOjp0YXJnZXRBdHRyLCBTVkdUYXJnZXQsIHN2Z1RhcmdldCkKLURFRklORV9B
TklNQVRFRF9TVFJJTkcoU1ZHQUVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBo
cmVmKQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHQUVsZW1lbnQsIFNWR05hbWVzOjpleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVT
CisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdBRWxlbWVudCwgU1ZHTmFtZXM6OnRhcmdl
dEF0dHIsIFNWR1RhcmdldCwgc3ZnVGFyZ2V0KQorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkco
U1ZHQUVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQorICAgIERFRklO
RV9BTklNQVRFRF9CT09MRUFOKFNWR0FFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVH
SVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdBRWxlbWVudCkKKyAgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkoc3ZnVGFyZ2V0KQorICAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShocmVmKQorICAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICAgUkVHSVNU
RVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5J
TUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHQUVsZW1lbnQ6OlNWR0FFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjphVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3Bl
cnRpZXNGb3JTVkdBRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0FFbGVtZW50PiBTVkdB
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCkKQEAgLTEzMiw2MCArMTQyLDYgQEAgdm9pZCBTVkdBRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjbwogICAgIH0KIH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNW
R0FFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
OwotfQotCi12b2lkIFNWR0FFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRhcmdldEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFu
aW1hdGVkU3RyaW5nKTsKLX0KLQotdm9pZCBTVkdBRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0g
YW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVNWR1RhcmdldCgpOwotICAgICAgICBz
eW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywg
YXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRhcmdl
dEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVTVkdUYXJnZXQoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25p
emVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCiBSZW5kZXJPYmplY3QqIFNWR0FFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAg
ICBpZiAoc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KHBhcmVudE5vZGUoKSktPmlzVGV4dENvbnRl
bnQoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwx
MCArNTEsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShB
dHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwotCi0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCkBAIC02Nywx
NyArNjMsMTggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0
ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xh
cmF0aW9ucwotCi0gICAgLy8gVGhpcyBkZWNsYXJhdGlvbiB1c2VkIHRvIGRlZmluZSBhIG5vbi12
aXJ0dWFsICJTdHJpbmcmIHRhcmdldCgpIGNvbnN0IiBtZXRob2QsIHRoYXQgY2xhc2hlcyB3aXRo
ICJ2aXJ0dWFsIFN0cmluZyBFbGVtZW50Ojp0YXJnZXQoKSBjb25zdCIuCi0gICAgLy8gVGhhdCdz
IHdoeSBpdCBoYXMgYmVlbiByZW5hbWVkIHRvICJzdmdUYXJnZXQiLCB0aGUgQ29kZUdlbmVyYXRv
cnMgdGFrZSBjYXJlIG9mIGNhbGxpbmcgc3ZnVGFyZ2V0QW5pbWF0ZWQoKSBpbnN0ZWFkIG9mIHRh
cmdldEFuaW1hdGVkKCksIHNlZSBDb2RlR2VuZXJhdG9yLnBtLgotICAgIERFQ0xBUkVfQU5JTUFU
RURfU1RSSU5HKFNWR1RhcmdldCwgc3ZnVGFyZ2V0KQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNl
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAg
QkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0FFbGVtZW50KQorICAgICAgICAg
IC8vIFRoaXMgZGVjbGFyYXRpb24gdXNlZCB0byBkZWZpbmUgYSBub24tdmlydHVhbCAiU3RyaW5n
JiB0YXJnZXQoKSBjb25zdCIgbWV0aG9kLCB0aGF0IGNsYXNoZXMgd2l0aCAidmlydHVhbCBTdHJp
bmcgRWxlbWVudDo6dGFyZ2V0KCkgY29uc3QiLgorICAgICAgICAgIC8vIFRoYXQncyB3aHkgaXQg
aGFzIGJlZW4gcmVuYW1lZCB0byAic3ZnVGFyZ2V0IiwgdGhlIENvZGVHZW5lcmF0b3JzIHRha2Ug
Y2FyZSBvZiBjYWxsaW5nIHN2Z1RhcmdldEFuaW1hdGVkKCkgaW5zdGVhZCBvZiB0YXJnZXRBbmlt
YXRlZCgpLCBzZWUgQ29kZUdlbmVyYXRvci5wbS4KKyAgICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X1NUUklORyhTVkdUYXJnZXQsIHN2Z1RhcmdldCkKKyAgICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAg
ICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpz
eW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVp
cmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3Rl
bUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsg
fQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FsdEdseXBoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FsdEdseXBoRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEzICsz
MywyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRl
Y2xhcmF0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdBbHRHbHlwaEVsZW1lbnQsIFhM
aW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BS
T1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0FsdEdseXBoRWxlbWVudCwg
WExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BS
T1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdBbHRHbHlw
aEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAg
ICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0Fs
dEdseXBoRWxlbWVudDo6U1ZHQWx0R2x5cGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6
OmFsdEdseXBoVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdBbHRH
bHlwaEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdBbHRHbHlwaEVsZW1lbnQ+IFNWR0Fs
dEdseXBoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKQEAgLTQ3LDI4ICs1NCw2IEBAIFBhc3NSZWZQdHI8U1ZHQWx0R2x5cGhF
bGVtZW50PiBTVkdBbHRHbHkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0FsdEdseXBoRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIFNWR0FsdEdseXBoRWxlbWVudDo6
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAg
ICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1l
KTsKLQotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpIHx8IFNWR1VSSVJlZmVyZW5jZTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwot
fQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHQWx0R2x5cGhFbGVtZW50OjphdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkp
OwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNW
R0FsdEdseXBoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAg
ICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAg
PSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHVGV4dFBvc2l0
aW9uaW5nRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQogdm9pZCBTVkdB
bHRHbHlwaEVsZW1lbnQ6OnNldEdseXBoUmVmKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIGVjID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDE4ICs0NSwxMiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0FsdEdseXBo
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLQotICAgIHZp
cnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFs
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwotCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5k
ZXJlcihOb2RlKikgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlv
bnMKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5H
KEhyZWYsIGhyZWYpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0Fs
dEdseXBoRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJl
ZikKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5j
cHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFNWR0FuaW1hdGVFbGVtZW50OjpTVkdBbmltYXRlRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdBbmltYXRpb25F
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAgICwgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUo
QW5pbWF0ZWRTdHJpbmcpCisgICAgLCBtX2FuaW1hdGVkUHJvcGVydHlUeXBlKEFuaW1hdGVkU3Ry
aW5nKQogICAgICwgbV9mcm9tUHJvcGVydHlWYWx1ZVR5cGUoUmVndWxhclByb3BlcnR5VmFsdWUp
CiAgICAgLCBtX3RvUHJvcGVydHlWYWx1ZVR5cGUoUmVndWxhclByb3BlcnR5VmFsdWUpCiB7CkBA
IC05MywxNSArOTMsMjAgQEAgYm9vbCBTVkdBbmltYXRlRWxlbWVudDo6aGFzVmFsaWRBdHRyaWJ1
dAogICAgIGlmICghdGFyZ2V0RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAot
ICAgIHJldHVybiBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVudCkg
IT0gQW5pbWF0ZWRVbmtub3duOworICAgIHJldHVybiBkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5
VHlwZSh0YXJnZXRFbGVtZW50KSAhPSBBbmltYXRlZFVua25vd247CiB9CiAKLUFuaW1hdGVkQXR0
cmlidXRlVHlwZSBTVkdBbmltYXRlRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVU
eXBlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIGNvbnN0CitBbmltYXRlZFByb3BlcnR5VHlw
ZSBTVkdBbmltYXRlRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUoU1ZHRWxl
bWVudCogdGFyZ2V0RWxlbWVudCkgY29uc3QKIHsKICAgICBBU1NFUlQodGFyZ2V0RWxlbWVudCk7
CiAKLSAgICBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgdHlwZSA9IHRhcmdldEVsZW1lbnQtPmFuaW1h
dGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUoKSk7Ci0gICAgaWYgKHR5
cGUgPT0gQW5pbWF0ZWRVbmtub3duIHx8IChoYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlQ29s
b3JUYWcpICYmIHR5cGUgIT0gQW5pbWF0ZWRDb2xvcikpCisgICAgVmVjdG9yPEFuaW1hdGVkUHJv
cGVydHlUeXBlPiBwcm9wZXJ0eVR5cGVzOworICAgIHRhcmdldEVsZW1lbnQtPmFuaW1hdGVkUHJv
cGVydHlUeXBlRm9yQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUoKSwgcHJvcGVydHlUeXBlcyk7Cisg
ICAgaWYgKHByb3BlcnR5VHlwZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gQW5pbWF0ZWRV
bmtub3duOworCisgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSA9IHByb3BlcnR5VHlwZXNb
MF07CisgICAgaWYgKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVDb2xvclRhZykgJiYgdHlw
ZSAhPSBBbmltYXRlZENvbG9yKQogICAgICAgICByZXR1cm4gQW5pbWF0ZWRVbmtub3duOwogCiAg
ICAgLy8gRklYTUU6IEFuaW1hdG9yIGZvciBBbmltYXRlZEVudW1lcmF0aW9uIG1pc3NpbmcuCkBA
IC0xNjEsOSArMTY2LDkgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0
ZQogICAgICAgICByZXR1cm47CiAgICAgU1ZHQW5pbWF0ZUVsZW1lbnQqIHJlc3VsdHMgPSBzdGF0
aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+KHJlc3VsdEVsZW1lbnQpOwogICAgIC8vIENhbid0
IGFjY3VtdWxhdGUgb3ZlciBhIHN0cmluZyBwcm9wZXJ0eS4KLSAgICBpZiAocmVzdWx0cy0+bV9h
bmltYXRlZEF0dHJpYnV0ZVR5cGUgPT0gQW5pbWF0ZWRTdHJpbmcgJiYgbV9hbmltYXRlZEF0dHJp
YnV0ZVR5cGUgIT0gQW5pbWF0ZWRTdHJpbmcpCisgICAgaWYgKHJlc3VsdHMtPm1fYW5pbWF0ZWRQ
cm9wZXJ0eVR5cGUgPT0gQW5pbWF0ZWRTdHJpbmcgJiYgbV9hbmltYXRlZFByb3BlcnR5VHlwZSAh
PSBBbmltYXRlZFN0cmluZykKICAgICAgICAgcmV0dXJuOwotICAgIHN3aXRjaCAobV9hbmltYXRl
ZEF0dHJpYnV0ZVR5cGUpIHsKKyAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUpIHsK
ICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgY2FzZSBBbmltYXRlZEJvb2xlYW46CiAgICAg
Y2FzZSBBbmltYXRlZENvbG9yOgpAQCAtMjE3LDcgKzIyMiw3IEBAIHZvaWQgU1ZHQW5pbWF0ZUVs
ZW1lbnQ6OmRldGVybWluZVByb3BlcnQKICAgICBpZiAoaW5oZXJpdHNGcm9tUHJvcGVydHkodGFy
Z2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSgpLCB0bykpCiAgICAgICAgIG1fdG9Qcm9wZXJ0eVZh
bHVlVHlwZSA9IEluaGVyaXRWYWx1ZTsKIAotICAgIGlmIChtX2FuaW1hdGVkQXR0cmlidXRlVHlw
ZSAhPSBBbmltYXRlZENvbG9yKQorICAgIGlmIChtX2FuaW1hdGVkUHJvcGVydHlUeXBlICE9IEFu
aW1hdGVkQ29sb3IpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoYXR0cmlidXRlVmFs
dWVJc0N1cnJlbnRDb2xvcihmcm9tKSkKQEAgLTIzMyw4ICsyMzgsOCBAQCBib29sIFNWR0FuaW1h
dGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IC8vIEZJWE1FOiBOZWVkcyBtb3JlIHNvbGlkIHdheSBkZXRlcm1pbmUgdGFyZ2V0IGF0dHJpYnV0
ZSB0eXBlLgotICAgIG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlID0gZGV0ZXJtaW5lQW5pbWF0ZWRB
dHRyaWJ1dGVUeXBlKHRhcmdldEVsZW1lbnQpOwotICAgIHN3aXRjaCAobV9hbmltYXRlZEF0dHJp
YnV0ZVR5cGUpIHsKKyAgICBtX2FuaW1hdGVkUHJvcGVydHlUeXBlID0gZGV0ZXJtaW5lQW5pbWF0
ZWRQcm9wZXJ0eVR5cGUodGFyZ2V0RWxlbWVudCk7CisgICAgc3dpdGNoIChtX2FuaW1hdGVkUHJv
cGVydHlUeXBlKSB7CiAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgogICAgIGNhc2UgQW5pbWF0ZWRC
b29sZWFuOgogICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKQEAgLTI2NSw4ICsyNzAsOCBAQCBib29s
IFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIEFTU0VSVCghaGFzVGFnTmFtZShTVkdOYW1lczo6c2V0VGFnKSk7Ci0gICAgbV9h
bmltYXRlZEF0dHJpYnV0ZVR5cGUgPSBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUodGFy
Z2V0RWxlbWVudCk7Ci0gICAgc3dpdGNoIChtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSkgeworICAg
IG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgPSBkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0
YXJnZXRFbGVtZW50KTsKKyAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUpIHsKICAg
ICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgY2FzZSBBbmltYXRlZEJvb2xlYW46CiAgICAgY2Fz
ZSBBbmltYXRlZENvbG9yOgpAQCAtMjk2LDggKzMwMSw4IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1l
bnQ6OnJlc2V0VG9CYXNlVmFsdWUKIHsKICAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0g
dGhpcy0+dGFyZ2V0RWxlbWVudCgpOwogICAgIEFTU0VSVCh0YXJnZXRFbGVtZW50KTsKLSAgICBt
X2FuaW1hdGVkQXR0cmlidXRlVHlwZSA9IGRldGVybWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZSh0
YXJnZXRFbGVtZW50KTsKLSAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKSB7Cisg
ICAgbV9hbmltYXRlZFByb3BlcnR5VHlwZSA9IGRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBl
KHRhcmdldEVsZW1lbnQpOworICAgIHN3aXRjaCAobV9hbmltYXRlZFByb3BlcnR5VHlwZSkgewog
ICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKICAgICBjYXNlIEFuaW1hdGVkQm9vbGVhbjoKICAgICBj
YXNlIEFuaW1hdGVkQ29sb3I6CkBAIC0zMjcsNyArMzMyLDcgQEAgdm9pZCBTVkdBbmltYXRlRWxl
bWVudDo6cmVzZXRUb0Jhc2VWYWx1ZQogdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6YXBwbHlSZXN1
bHRzVG9UYXJnZXQoKQogewogICAgIFN0cmluZyB2YWx1ZVRvQXBwbHk7Ci0gICAgc3dpdGNoICht
X2FuaW1hdGVkQXR0cmlidXRlVHlwZSkgeworICAgIHN3aXRjaCAobV9hbmltYXRlZFByb3BlcnR5
VHlwZSkgewogICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKICAgICBjYXNlIEFuaW1hdGVkQm9vbGVh
bjoKICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CkBAIC0zNTYsOCArMzYxLDggQEAgZmxvYXQgU1ZH
QW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZURpc3RhbgogICAgIFNWR0VsZW1lbnQqIHRhcmdldEVs
ZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KQog
ICAgICAgICByZXR1cm4gLTE7Ci0gICAgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPSBkZXRlcm1p
bmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVudCk7Ci0gICAgc3dpdGNoIChtX2Fu
aW1hdGVkQXR0cmlidXRlVHlwZSkgeworICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgPSBkZXRl
cm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0YXJnZXRFbGVtZW50KTsKKyAgICBzd2l0Y2ggKG1f
YW5pbWF0ZWRQcm9wZXJ0eVR5cGUpIHsKICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgY2Fz
ZSBBbmltYXRlZEJvb2xlYW46CiAgICAgY2FzZSBBbmltYXRlZENvbG9yOgpAQCAtMzgzLDcgKzM4
OCw3IEBAIGZsb2F0IFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVEaXN0YW4KIFNWR0FuaW1h
dGVkVHlwZUFuaW1hdG9yKiBTVkdBbmltYXRlRWxlbWVudDo6ZW5zdXJlQW5pbWF0b3IoKQogewog
ICAgIGlmICghbV9hbmltYXRvcikKLSAgICAgICAgbV9hbmltYXRvciA9IFNWR0FuaW1hdG9yRmFj
dG9yeTo6Y3JlYXRlKHRoaXMsIHRhcmdldEVsZW1lbnQoKSwgbV9hbmltYXRlZEF0dHJpYnV0ZVR5
cGUpOworICAgICAgICBtX2FuaW1hdG9yID0gU1ZHQW5pbWF0b3JGYWN0b3J5OjpjcmVhdGUodGhp
cywgdGFyZ2V0RWxlbWVudCgpLCBtX2FuaW1hdGVkUHJvcGVydHlUeXBlKTsKICAgICByZXR1cm4g
bV9hbmltYXRvci5nZXQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVF
bGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIGFkanVzdEZvckN1cnJlbnRDb2xvcihTVkdFbGVtZW50KiB0YXJnZXRFbGVt
ZW50LCBDb2xvciYpOwogICAgIHZvaWQgYWRqdXN0Rm9ySW5oZXJpdGFuY2UoU1ZHRWxlbWVudCog
dGFyZ2V0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIFN0cmluZyYgdmFsdWUpOwogICAg
IAotICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5
cGUoU1ZHRWxlbWVudCopIGNvbnN0OworICAgIEFuaW1hdGVkUHJvcGVydHlUeXBlIGRldGVybWlu
ZUFuaW1hdGVkUHJvcGVydHlUeXBlKFNWR0VsZW1lbnQqKSBjb25zdDsKICAgICB2b2lkIGRldGVy
bWluZVByb3BlcnR5VmFsdWVUeXBlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKICAg
ICAKICAgICBBbmltYXRlZFByb3BlcnR5VmFsdWVUeXBlIGZyb21Qcm9wZXJ0eVZhbHVlVHlwZSgp
IHsgcmV0dXJuIG1fZnJvbVByb3BlcnR5VmFsdWVUeXBlOyB9CkBAIC02OSw3ICs2OSw3IEBAIHBy
aXZhdGU6CiAgICAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IqIGVuc3VyZUFuaW1hdG9yKCk7CiAg
ICAgCiAgICAgdmlydHVhbCBib29sIGhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpIGNvbnN0OwotICAg
IEFuaW1hdGVkQXR0cmlidXRlVHlwZSBtX2FuaW1hdGVkQXR0cmlidXRlVHlwZTsKKyAgICBBbmlt
YXRlZFByb3BlcnR5VHlwZSBtX2FuaW1hdGVkUHJvcGVydHlUeXBlOwogCiAgICAgQW5pbWF0ZWRQ
cm9wZXJ0eVZhbHVlVHlwZSBtX2Zyb21Qcm9wZXJ0eVZhbHVlVHlwZTsKICAgICBBbmltYXRlZFBy
b3BlcnR5VmFsdWVUeXBlIG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAkocmV2aXNpb24g
OTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxOCArNjYsMjEgQEAgYm9vbCBTVkdBbmltYXRlVHJh
bnNmb3JtRWxlbWVudDo6aGFzVmFsaQogICAgIGlmICghdGFyZ2V0RWxlbWVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0
ZVR5cGUodGFyZ2V0RWxlbWVudCkgPT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0OworICAgIHJldHVy
biBkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0YXJnZXRFbGVtZW50KSA9PSBBbmltYXRl
ZFRyYW5zZm9ybUxpc3Q7CiB9CiAKLUFuaW1hdGVkQXR0cmlidXRlVHlwZSBTVkdBbmltYXRlVHJh
bnNmb3JtRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKFNWR0VsZW1lbnQq
IHRhcmdldEVsZW1lbnQpIGNvbnN0CitBbmltYXRlZFByb3BlcnR5VHlwZSBTVkdBbmltYXRlVHJh
bnNmb3JtRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUoU1ZHRWxlbWVudCog
dGFyZ2V0RWxlbWVudCkgY29uc3QKIHsKICAgICBBU1NFUlQodGFyZ2V0RWxlbWVudCk7CiAgICAg
CiAgICAgLy8gSnVzdCB0cmFuc2Zvcm0gbGlzdHMgY2FuIGJlIGFuaW1hdGVkIHdpdGggPGFuaW1h
dGVUcmFuc2Zvcm0+CiAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2FuaW1hdGUuaHRt
bCNBbmltYXRpb25BdHRyaWJ1dGVzQW5kUHJvcGVydGllcwotICAgIGlmICh0YXJnZXRFbGVtZW50
LT5hbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKCkpICE9IEFu
aW1hdGVkVHJhbnNmb3JtTGlzdCkKKyAgICBWZWN0b3I8QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+IHBy
b3BlcnR5VHlwZXM7CisgICAgdGFyZ2V0RWxlbWVudC0+YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JB
dHRyaWJ1dGUoYXR0cmlidXRlTmFtZSgpLCBwcm9wZXJ0eVR5cGVzKTsKKyAgICBpZiAocHJvcGVy
dHlUeXBlcy5pc0VtcHR5KCkgfHwgcHJvcGVydHlUeXBlc1swXSAhPSBBbmltYXRlZFRyYW5zZm9y
bUxpc3QpCiAgICAgICAgIHJldHVybiBBbmltYXRlZFVua25vd247CiAKKyAgICBBU1NFUlQocHJv
cGVydHlUeXBlcy5zaXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIEFuaW1hdGVkVHJhbnNmb3JtTGlz
dDsKIH0KIApAQCAtMTMxLDcgKzEzNCw3IEBAIHN0YXRpYyBTVkdUcmFuc2Zvcm1MaXN0KiB0cmFu
c2Zvcm1MaXN0Rm8KIHZvaWQgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OnJlc2V0VG9CYXNl
VmFsdWUoY29uc3QgU3RyaW5nJiBiYXNlVmFsdWUpCiB7CiAgICAgU1ZHRWxlbWVudCogdGFyZ2V0
RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKLSAgICBpZiAoIXRhcmdldEVsZW1lbnQg
fHwgZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKHRhcmdldEVsZW1lbnQpID09IEFuaW1h
dGVkVW5rbm93bikKKyAgICBpZiAoIXRhcmdldEVsZW1lbnQgfHwgZGV0ZXJtaW5lQW5pbWF0ZWRQ
cm9wZXJ0eVR5cGUodGFyZ2V0RWxlbWVudCkgPT0gQW5pbWF0ZWRVbmtub3duKQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBub3QgYmUgY29ycmVjdCBmb3IgYWNj
dW11bGF0ZWQgc3VtLiBOZWVkcyBjaGVja2luZy4KQEAgLTE1NCw3ICsxNTcsNyBAQCB2b2lkIFNW
R0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpyZXNldFRvCiB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zv
cm1FbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2ln
bmVkIHJlcGVhdCwgU1ZHU01JTEVsZW1lbnQqKQogewogICAgIFNWR0VsZW1lbnQqIHRhcmdldEVs
ZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7Ci0gICAgaWYgKCF0YXJnZXRFbGVtZW50IHx8
IGRldGVybWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZSh0YXJnZXRFbGVtZW50KSA9PSBBbmltYXRl
ZFVua25vd24pCisgICAgaWYgKCF0YXJnZXRFbGVtZW50IHx8IGRldGVybWluZUFuaW1hdGVkUHJv
cGVydHlUeXBlKHRhcmdldEVsZW1lbnQpID09IEFuaW1hdGVkVW5rbm93bikKICAgICAgICAgcmV0
dXJuOwogICAgIFNWR1RyYW5zZm9ybUxpc3QqIHRyYW5zZm9ybUxpc3QgPSB0cmFuc2Zvcm1MaXN0
Rm9yKHRhcmdldEVsZW1lbnQpOwogICAgIEFTU0VSVCh0cmFuc2Zvcm1MaXN0KTsKQEAgLTIwMCw3
ICsyMDMsNyBAQCBTVkdUcmFuc2Zvcm0gU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6CiB2b2lk
IFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCgpCiB7CiAg
ICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKLSAg
ICBpZiAoIXRhcmdldEVsZW1lbnQgfHwgZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKHRh
cmdldEVsZW1lbnQpID09IEFuaW1hdGVkVW5rbm93bikKKyAgICBpZiAoIXRhcmdldEVsZW1lbnQg
fHwgZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUodGFyZ2V0RWxlbWVudCkgPT0gQW5pbWF0
ZWRVbmtub3duKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBhY2N1bXVsYXRlIHRvIHRo
ZSB0YXJnZXQgZWxlbWVudCB0cmFuc2Zvcm0gbGlzdCBzbyB0aGVyZSBpcyBub3QgbXVjaCB0byBk
byBoZXJlLgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zv
cm1FbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAg
cHJpdmF0ZToKICAgICBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQqKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsaWRBdHRyaWJ1
dGVUeXBlKCkgY29uc3Q7Ci0gICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIGRldGVybWluZUFuaW1h
dGVkQXR0cmlidXRlVHlwZShTVkdFbGVtZW50KikgY29uc3Q7CisgICAgQW5pbWF0ZWRQcm9wZXJ0
eVR5cGUgZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUoU1ZHRWxlbWVudCopIGNvbnN0Owog
CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDcgKzM0LDcgQEAgdHlwZWRlZiBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxTVkdBbgogREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdBbmltYXRlZEFuZ2xlLCBTVkdBbmdsZSwgVXBwZXJQ
cm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfQU5HTEVf
TVVMVElQTEVfV1JBUFBFUlMoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0
ZUlkZW50aWZpZXIsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFRklORV9BTklN
QVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRl
bnRpZmllciwgU1ZHQW5pbWF0ZWRBbmdsZSwgU1ZHQW5nbGUsIFVwcGVyUHJvcGVydHksIExvd2Vy
UHJvcGVydHkpCitERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWRBbmdsZSwgT3duZXJU
eXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFVwcGVyUHJvcGVy
dHksIExvd2VyUHJvcGVydHkpCiAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIGNsYXNzIFNW
R0FuaW1hdGlvbkVsZW1lbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRC
b29sZWFuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9v
bGVhbi5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZEJvb2xlYW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOCBAQCB0eXBlZGVmIFNWR0Fu
aW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmCiBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNW
R0FuaW1hdGVkQm9vbGVhbiwgYm9vbCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAog
I2RlZmluZSBERUZJTkVfQU5JTUFURURfQk9PTEVBTihPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwg
VXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZ
KE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0Fu
aW1hdGVkQm9vbGVhbiwgYm9vbCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklO
RV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZEJvb2xlYW4sIE93bmVyVHlwZSwgRE9NQXR0cmli
dXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVy
dHkpCiAKLSAgICAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIGNsYXNzIFNWR0FuaW1hdGlv
bkVsZW1lbnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVy
YXRpb24uaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsNyBAQCB0eXBlZGVm
IFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmCiBERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRZKFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY8RW51bVR5cGU+LCBFbnVt
VHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5J
TUFURURfRU5VTUVSQVRJT04oT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHks
IExvd2VyUHJvcGVydHksIEVudW1UeXBlKSBcCi1ERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoT3du
ZXJUeXBlLCBET01BdHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZjxFbnVtVHlwZT4sIEVudW1UeXBlLCBVcHBlclBy
b3BlcnR5LCBMb3dlclByb3BlcnR5KQotCi0jZGVmaW5lIERFRklORV9BTklNQVRFRF9FTlVNRVJB
VElPTl9NVUxUSVBMRV9XUkFQUEVSUyhPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0
cmlidXRlSWRlbnRpZmllciwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSwgRW51bVR5cGUp
IFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZH
RE9NQXR0cmlidXRlSWRlbnRpZmllciwgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVh
ck9mZjxFbnVtVHlwZT4sIEVudW1UeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQor
REVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkRW51bWVyYXRpb24sIE93bmVyVHlwZSwg
RE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExv
d2VyUHJvcGVydHkpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEw
ICszNCwxMSBAQCB0eXBlZGVmIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmCiBERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkSW50ZWdlciwgbG9uZywgVXBwZXJQcm9w
ZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfSU5URUdFUihP
d25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAot
REVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRy
aWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVkSW50ZWdlciwgbG9uZywgVXBwZXJQcm9wZXJ0
eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZEludGVn
ZXIsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKKy8vIEZJWE1FOiBUaGlzIGN1cnJlbnRseSBh
bmltYXRlcyBhcyBudW1iZXItb3B0aW9uYWwtbnVtYmVyLCBpbnN0ZWFkIG9mIGludGVnZXItb3B0
aW9uYWwtaW50ZWdlciwgd2hpY2ggaXMgbWlzc2luZy4KICNkZWZpbmUgREVGSU5FX0FOSU1BVEVE
X0lOVEVHRVJfTVVMVElQTEVfV1JBUFBFUlMoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RP
TUF0dHJpYnV0ZUlkZW50aWZpZXIsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURF
RklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0
cmlidXRlSWRlbnRpZmllciwgU1ZHQW5pbWF0ZWRJbnRlZ2VyLCBsb25nLCBVcHBlclByb3BlcnR5
LCBMb3dlclByb3BlcnR5KQorREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkTnVtYmVy
T3B0aW9uYWxOdW1iZXIsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJ
ZGVudGlmaWVyLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiAjaWYgRU5BQkxFKFNW
R19BTklNQVRJT04pCiBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0
LDcgQEAgdHlwZWRlZiBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxTVkdMZQogREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUWShTVkdBbmltYXRlZExlbmd0aCwgU1ZHTGVuZ3RoLCBVcHBlclByb3Bl
cnR5LCBMb3dlclByb3BlcnR5KQogCiAjZGVmaW5lIERFRklORV9BTklNQVRFRF9MRU5HVEgoT3du
ZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURF
RklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmli
dXRlLmxvY2FsTmFtZSgpLCBTVkdBbmltYXRlZExlbmd0aCwgU1ZHTGVuZ3RoLCBVcHBlclByb3Bl
cnR5LCBMb3dlclByb3BlcnR5KQorREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkTGVu
Z3RoLCBPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBV
cHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiAjaWYgRU5BQkxFKFNWR19BTklNQVRJT04p
CiBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkTGVuZ3RoTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZExlbmd0aExpc3QuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0
LDggQEAgdHlwZWRlZiBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8UwogREVDTEFSRV9B
TklNQVRFRF9MSVNUX1BST1BFUlRZKFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCwgU1ZHTGVuZ3RoTGlz
dCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFU
RURfTEVOR1RIX0xJU1QoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExv
d2VyUHJvcGVydHkpIFwKLURFRklORV9BTklNQVRFRF9MSVNUX1BST1BFUlRZKE93bmVyVHlwZSwg
RE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVkTGVuZ3Ro
TGlzdCwgU1ZHTGVuZ3RoTGlzdCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKLSAgICAK
K0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZExlbmd0aExpc3QsIE93bmVyVHlwZSwg
RE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExv
d2VyUHJvcGVydHkpCisKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIGNsYXNzIFNWR0FuaW1h
dGlvbkVsZW1lbnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5o
CShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMCArMzQsMTAgQEAgdHlwZWRlZiBTVkdBbmltYXRl
ZFN0YXRpY1Byb3BlcnR5VGVhck9mZgogREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdBbmlt
YXRlZE51bWJlciwgZmxvYXQsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNkZWZp
bmUgREVGSU5FX0FOSU1BVEVEX05VTUJFUihPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQ
cm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVy
VHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVk
TnVtYmVyLCBmbG9hdCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklN
QVRFRF9QUk9QRVJUWShBbmltYXRlZE51bWJlciwgT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIERP
TUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAog
I2RlZmluZSBERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKE93bmVyVHlw
ZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBVcHBlclByb3BlcnR5
LCBMb3dlclByb3BlcnR5KSBcCi1ERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBE
T01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFNWR0FuaW1hdGVkTnVtYmVy
LCBmbG9hdCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9Q
Uk9QRVJUWShBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLCBPd25lclR5cGUsIERPTUF0dHJp
YnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9w
ZXJ0eSkKIAogI2lmIEVOQUJMRShTVkdfQU5JTUFUSU9OKQogY2xhc3MgU1ZHQW5pbWF0aW9uRWxl
bWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgJ
KHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVy
TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCw4IEBAIHR5cGVkZWYgU1ZHQW5pbWF0
ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFMKIERFQ0xBUkVfQU5JTUFURURfTElTVF9QUk9QRVJUWShT
VkdBbmltYXRlZE51bWJlckxpc3QsIFNWR051bWJlckxpc3QsIFVwcGVyUHJvcGVydHksIExvd2Vy
UHJvcGVydHkpCiAKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9MSVNUKE93bmVyVHlw
ZSwgRE9NQXR0cmlidXRlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCi1ERUZJTkVf
QU5JTUFURURfTElTVF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmli
dXRlLmxvY2FsTmFtZSgpLCBTVkdBbmltYXRlZE51bWJlckxpc3QsIFNWR051bWJlckxpc3QsIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCi0gICAgCitERUZJTkVfQU5JTUFURURfUFJPUEVS
VFkoQW5pbWF0ZWROdW1iZXJMaXN0LCBPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmli
dXRlLmxvY2FsTmFtZSgpLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorCiAjaWYgRU5B
QkxFKFNWR19BTklNQVRJT04pCiBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRp
by5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBy
ZXNlcnZlQXNwZWN0UmF0aW8uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsOCBAQCB0eXBl
ZGVmIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPFNWR1ByCiBERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRZKFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbywgU1ZHUHJlc2VydmVBc3BlY3RS
YXRpbywgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5J
TUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQ
cm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVy
VHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVk
UHJlc2VydmVBc3BlY3RSYXRpbywgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbywgVXBwZXJQcm9wZXJ0
eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZFByZXNl
cnZlQXNwZWN0UmF0aW8sIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9j
YWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKLSAgICAKICNpZiBFTkFC
TEUoU1ZHX0FOSU1BVElPTikKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFJlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRSZWN0LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICsz
NSw3IEBAIHR5cGVkZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8RmxvYXQKIERFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVFkoU1ZHQW5pbWF0ZWRSZWN0LCBGbG9hdFJlY3QsIFVwcGVyUHJvcGVy
dHksIExvd2VyUHJvcGVydHkpCiAKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX1JFQ1QoT3duZXJU
eXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFRklO
RV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRl
LmxvY2FsTmFtZSgpLCBTVkdBbmltYXRlZFJlY3QsIEZsb2F0UmVjdCwgVXBwZXJQcm9wZXJ0eSwg
TG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZFJlY3QsIE93
bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJv
cGVydHksIExvd2VyUHJvcGVydHkpCiAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIGNsYXNz
IFNWR0FuaW1hdGlvbkVsZW1lbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRT
dHJpbmcuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCB0eXBlZGVmIFNWR0Fu
aW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmCiBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNW
R0FuaW1hdGVkU3RyaW5nLCBTdHJpbmcsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAK
ICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX1NUUklORyhPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwg
VXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZ
KE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0Fu
aW1hdGVkU3RyaW5nLCBTdHJpbmcsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCitERUZJ
TkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWRTdHJpbmcsIE93bmVyVHlwZSwgRE9NQXR0cmli
dXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVy
dHkpCiAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1l
bnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCB0eXBlZGVmIFNW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5CiBERUNMQVJFX0FOSU1BVEVEX0xJU1RfUFJP
UEVSVFkoU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LCBTVkdUcmFuc2Zvcm1MaXN0LCBVcHBlclBy
b3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiAjZGVmaW5lIERFRklORV9BTklNQVRFRF9UUkFOU0ZP
Uk1fTElTVChPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9w
ZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX0xJU1RfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRy
aWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
LCBTVkdUcmFuc2Zvcm1MaXN0LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorREVGSU5F
X0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkVHJhbnNmb3JtTGlzdCwgT3duZXJUeXBlLCBET01B
dHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQ
cm9wZXJ0eSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBA
QCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0FuaW1h
dGVkVHlwZTo6U1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVkQXR0cmlidXRlVHlwZSB0eXBlKQorU1ZH
QW5pbWF0ZWRUeXBlOjpTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSkK
ICAgICA6IG1fdHlwZSh0eXBlKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFR5cGUuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlUmVjdChGbG9hdFJlY3QqKTsK
ICAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVN0cmluZyhTdHJp
bmcqKTsKIAotICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9CisgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQogCiAgICAgU1ZHQW5nbGUmIGFuZ2xlKCk7CiAgICAgYm9vbCYgYm9vbGVhbigp
OwpAQCAtNzksOSArNzksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmVzZXJ2ZUFzcGVjdFJh
dGlvQmFzZVZhbHVlKGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mKTsKIAogcHJpdmF0ZToK
LSAgICBTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKTsKKyAgICBTVkdBbmlt
YXRlZFR5cGUoQW5pbWF0ZWRQcm9wZXJ0eVR5cGUpOwogCi0gICAgQW5pbWF0ZWRBdHRyaWJ1dGVU
eXBlIG1fdHlwZTsKKyAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBtX3R5cGU7CiAKICAgICB1bmlv
biBEYXRhVW5pb24gewogICAgICAgICBEYXRhVW5pb24oKQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDE0ICs0MywxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZXh0RWxlbWVudChT
VkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkgeyBtX2NvbnRleHRFbGVtZW50ID0gY29udGV4dEVs
ZW1lbnQ7IH0KICAgICAKIHByb3RlY3RlZDoKLSAgICBTVkdBbmltYXRlZFR5cGVBbmltYXRvcihB
bmltYXRlZEF0dHJpYnV0ZVR5cGUgdHlwZSwgU1ZHQW5pbWF0aW9uRWxlbWVudCogYW5pbWF0aW9u
RWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCisgICAgU1ZHQW5pbWF0ZWRUeXBl
QW5pbWF0b3IoQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSwgU1ZHQW5pbWF0aW9uRWxlbWVudCog
YW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiAgICAgICAgIDog
bV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9hbmltYXRpb25FbGVtZW50KGFuaW1hdGlvbkVsZW1l
bnQpCiAgICAgICAgICwgbV9jb250ZXh0RWxlbWVudChjb250ZXh0RWxlbWVudCkKICAgICB7CiAg
ICAgfQogCi0gICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIG1fdHlwZTsKKyAgICBBbmltYXRlZFBy
b3BlcnR5VHlwZSBtX3R5cGU7CiAgICAgU1ZHQW5pbWF0aW9uRWxlbWVudCogbV9hbmltYXRpb25F
bGVtZW50OwogICAgIFNWR0VsZW1lbnQqIG1fY29udGV4dEVsZW1lbnQ7CiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUyLDEzICs1MiwyMCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVf
QU5JTUFURURfQk9PTEVBTihTVkdBbmltYXRpb25FbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAg
IERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0FuaW1hdGlvbkVsZW1lbnQsIFNWR05hbWVzOjpl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwg
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElF
UworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0FuaW1hdGlvbkVsZW1l
bnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdU
ZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIFNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OlNWR0FuaW1hdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU01JTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiAgICAgLCBtX2FuaW1hdGlvblZhbGlkKGZhbHNlKQogeworICAgIHJlZ2lzdGVyQW5pbWF0
ZWRQcm9wZXJ0aWVzRm9yU1ZHQW5pbWF0aW9uRWxlbWVudCgpOwogfQogCiBzdGF0aWMgdm9pZCBw
YXJzZUtleVRpbWVzKGNvbnN0IFN0cmluZyYgcGFyc2UsIFZlY3RvcjxmbG9hdD4mIHJlc3VsdCwg
Ym9vbCB2ZXJpZnlPcmRlcikKQEAgLTIwMywyMiArMjEwLDYgQEAgdm9pZCBTVkdBbmltYXRpb25F
bGVtZW50OjphdHRyaWJ1dGVDaGFuZwogICAgIFNWR1NNSUxFbGVtZW50OjphdHRyaWJ1dGVDaGFu
Z2VkKGF0dHIsIHByZXNlcnZlRGVjbHMpOwogfQogCi12b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0g
ICAgU1ZHU01JTEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotCi0gICAg
aWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3Bl
cnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KQotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICBl
bHNlIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIFNW
R1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotfQotCiBmbG9h
dCBTVkdBbmltYXRpb25FbGVtZW50OjpnZXRTdGFydFRpbWUoKSBjb25zdAogewogICAgIHJldHVy
biBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGludGVydmFsQmVnaW4oKS52YWx1ZSgpKTsKQEAgLTQ4
Niw3ICs0NzcsNyBAQCB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmN1cnJlbnRWYWx1ZXNGCiAg
ICAgQ2FsY01vZGUgY2FsY01vZGUgPSB0aGlzLT5jYWxjTW9kZSgpOwogICAgIGlmIChoYXNUYWdO
YW1lKFNWR05hbWVzOjphbmltYXRlVGFnKSB8fCBoYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRl
Q29sb3JUYWcpKSB7CiAgICAgICAgIGNvbnN0IFNWR0FuaW1hdGVFbGVtZW50KiBhbmltYXRlRWxl
bWVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFNWR0FuaW1hdGVFbGVtZW50Kj4odGhpcyk7Ci0gICAg
ICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBhdHRyaWJ1dGVUeXBlID0gYW5pbWF0ZUVsZW1lbnQt
PmRldGVybWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZSh0YXJnZXRFbGVtZW50KCkpOworICAgICAg
ICBBbmltYXRlZFByb3BlcnR5VHlwZSBhdHRyaWJ1dGVUeXBlID0gYW5pbWF0ZUVsZW1lbnQtPmRl
dGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKHRhcmdldEVsZW1lbnQoKSk7CiAgICAgICAgIC8v
IEZhbGwgYmFjayB0byBkaXNjcmV0ZSBhbmltYXRpb25zIGZvciBTdHJpbmdzLgogICAgICAgICBp
ZiAoYXR0cmlidXRlVHlwZSA9PSBBbmltYXRlZEJvb2xlYW4KICAgICAgICAgICAgIHx8IGF0dHJp
YnV0ZVR5cGUgPT0gQW5pbWF0ZWRFbnVtZXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGlvbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0aW9uRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw3ICsxMDgs
NiBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNo
YW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVzZXJ2ZURlY2xzKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICB2aXJ0dWFs
IGJvb2wgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywg
Y29uc3QgU3RyaW5nJiB0b1N0cmluZykgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVG
cm9tQW5kQnlWYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5
U3RyaW5nKSA9IDA7CkBAIC0xMjMsMTAgKzEyMiwxNCBAQCBwcml2YXRlOgogICAgIGZsb2F0IGNh
bGN1bGF0ZVBlcmNlbnRGb3JTcGxpbmUoZmxvYXQgcGVyY2VudCwgdW5zaWduZWQgc3BsaW5lSW5k
ZXgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGNhbGN1bGF0ZUtleVRpbWVzSW5kZXgoZmxvYXQgcGVy
Y2VudCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLQot
ICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVE
X0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQW5pbWF0aW9u
RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1
aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWly
ZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMo
dGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsg
U1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KIAogICAgIGJvb2wg
bV9hbmltYXRpb25WYWxpZDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9y
RmFjdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZh
Y3RvcnkuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
b3JGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgU1ZHQW5p
bWF0aW9uRWxlbWVudDsKIAogY2xhc3MgU1ZHQW5pbWF0b3JGYWN0b3J5IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGVBbmltYXRvcj4gY3JlYXRlKFNWR0Fu
aW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50LCBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgYXR0cmlidXRlVHlwZSkKKyAgICBzdGF0aWMgUGFz
c093blB0cjxTVkdBbmltYXRlZFR5cGVBbmltYXRvcj4gY3JlYXRlKFNWR0FuaW1hdGlvbkVsZW1l
bnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBBbmltYXRl
ZFByb3BlcnR5VHlwZSBhdHRyaWJ1dGVUeXBlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGFuaW1h
dGlvbkVsZW1lbnQpOwogICAgICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDExICszMywyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHBy
b3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0NpcmNsZUVsZW1l
bnQsIFNWR05hbWVzOjpjeEF0dHIsIEN4LCBjeCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZH
Q2lyY2xlRWxlbWVudCwgU1ZHTmFtZXM6OmN5QXR0ciwgQ3ksIGN5KQotREVGSU5FX0FOSU1BVEVE
X0xFTkdUSChTVkdDaXJjbGVFbGVtZW50LCBTVkdOYW1lczo6ckF0dHIsIFIsIHIpCi1ERUZJTkVf
QU5JTUFURURfQk9PTEVBTihTVkdDaXJjbGVFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERF
RklORV9BTklNQVRFRF9MRU5HVEgoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTmFtZXM6OmN4QXR0ciwg
Q3gsIGN4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZH
TmFtZXM6OmN5QXR0ciwgQ3ksIGN5KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHQ2ly
Y2xlRWxlbWVudCwgU1ZHTmFtZXM6OnJBdHRyLCBSLCByKQorICAgIERFRklORV9BTklNQVRFRF9C
T09MRUFOKFNWR0NpcmNsZUVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR0NpcmNsZUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoY3gpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkoY3kpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocikKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQor
ICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0Np
cmNsZUVsZW1lbnQ6OlNWR0NpcmNsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC00Niw2ICs1Niw3IEBAIGlubGluZSBTVkdDaXJjbGVF
bGVtZW50OjpTVkdDaXJjbGVFbGVtZW4KICAgICAsIG1fcihMZW5ndGhNb2RlT3RoZXIpCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmNpcmNsZVRhZykpOworICAgIHJlZ2lzdGVy
QW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQ2lyY2xlRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRy
PFNWR0NpcmNsZUVsZW1lbnQ+IFNWR0NpcmNsZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xMzgsNjcgKzE0OSw2IEBA
IHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmcKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdDaXJjbGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9
PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplQ3goKTsKLSAgICAgICAgc3luY2hy
b25pemVDeSgpOwotICAgICAgICBzeW5jaHJvbml6ZVIoKTsKLSAgICAgICAgc3luY2hyb25pemVF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9w
ZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmN4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUN4KCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmN5QXR0
cikgewotICAgICAgICBzeW5jaHJvbml6ZUN5KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplUigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewot
ICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQot
Ci1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHQ2lyY2xlRWxlbWVudDo6YXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAg
ICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdDaXJj
bGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMt
PmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OmN4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6Y3lBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyQXR0ciwgQW5pbWF0ZWRMZW5n
dGgpOwotfQotCiB2b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OnRvUGF0aERhdGEoUGF0aCYgcGF0aCkg
Y29uc3QKIHsKICAgICBBU1NFUlQocGF0aC5pc0VtcHR5KCkpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ2lyY2xlRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDIyICs0NywyMiBA
QCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotCi0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdG9QYXRoRGF0YShQYXRo
JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNv
bnN0OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoQ3gsIGN4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN5
LCBjeSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSLCByKQotCi0gICAgLy8gU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJF
R0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdDaXJjbGVFbGVtZW50KQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeCwgY3gpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfTEVOR1RIKEN5LCBjeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUiwgcikK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURf
UFJPUEVSVElFUworCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25p
emVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1
cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNp
b25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6
OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNSArMzQsMjQgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1B
VEVEX0VOVU1FUkFUSU9OKFNWR0NsaXBQYXRoRWxlbWVudCwgU1ZHTmFtZXM6OmNsaXBQYXRoVW5p
dHNBdHRyLCBDbGlwUGF0aFVuaXRzLCBjbGlwUGF0aFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1Vu
aXRUeXBlKQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHQ2xpcFBhdGhFbGVtZW50LCBTVkdO
YW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURf
UFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdDbGlwUGF0aEVs
ZW1lbnQsIFNWR05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0ciwgQ2xpcFBhdGhVbml0cywgY2xpcFBh
dGhVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICBERUZJTkVfQU5JTUFURURf
Qk9PTEVBTihTVkdDbGlwUGF0aEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RF
Ul9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0NsaXBQYXRoRWxlbWVudCkKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShjbGlwUGF0aFVuaXRzKQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNU
RVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitF
TkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHQ2xpcFBhdGhFbGVt
ZW50OjpTVkdDbGlwUGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX2NsaXBQYXRoVW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdf
VU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05h
bWVzOjpjbGlwUGF0aFRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZH
Q2xpcFBhdGhFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHQ2xpcFBhdGhFbGVtZW50PiBT
VkdDbGlwUGF0aEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCkBAIC05OSw1MyArMTA4LDYgQEAgdm9pZCBTVkdDbGlwUGF0aEVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYQogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRy
dWUpOwogfQogCi12b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55
UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUNsaXBQYXRoVW5pdHMoKTsKLSAgICAgICAg
c3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3Rz
OjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0
dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmNsaXBQYXRoVW5pdHNBdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplQ2xpcFBhdGhVbml0cygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVz
KHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHQ2xpcFBh
dGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
OwotfQotCi12b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0g
ICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0ciwgQW5pbWF0
ZWRFbnVtZXJhdGlvbik7Ci19Ci0KIHZvaWQgU1ZHQ2xpcFBhdGhFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0
ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5n
ZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NsaXBQYXRoRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTggKzUwLDE5
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0
ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChi
b29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2Rl
KiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIHZpcnR1
YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxl
Kik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJF
X0FOSU1BVEVEX0VOVU1FUkFUSU9OKENsaXBQYXRoVW5pdHMsIGNsaXBQYXRoVW5pdHMsIFNWR1Vu
aXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR0NsaXBQYXRoRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJB
VElPTihDbGlwUGF0aFVuaXRzLCBjbGlwUGF0aFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUSUVTCiAKLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVS
ZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVx
dWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lv
bnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgp
IHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KIH07CiAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCwxNCArMzAsMjUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBB
bmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9O
KFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdOYW1lczo6dHlwZUF0dHIs
IFR5cGUsIHR5cGUsIENvbXBvbmVudFRyYW5zZmVyVHlwZSkKLURFRklORV9BTklNQVRFRF9OVU1C
RVJfTElTVChTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OnRh
YmxlVmFsdWVzQXR0ciwgVGFibGVWYWx1ZXMsIHRhYmxlVmFsdWVzKQotREVGSU5FX0FOSU1BVEVE
X05VTUJFUihTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OnNs
b3BlQXR0ciwgU2xvcGUsIHNsb3BlKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OmludGVyY2VwdEF0dHIsIEludGVy
Y2VwdCwgaW50ZXJjZXB0KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OmFtcGxpdHVkZUF0dHIsIEFtcGxpdHVkZSwg
YW1wbGl0dWRlKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OmV4cG9uZW50QXR0ciwgRXhwb25lbnQsIGV4cG9uZW50
KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxl
bWVudCwgU1ZHTmFtZXM6Om9mZnNldEF0dHIsIE9mZnNldCwgb2Zmc2V0KQorQkVHSU5fREVGSU5F
X0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZH
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR05hbWVzOjp0eXBlQXR0ciwgVHlw
ZSwgdHlwZSwgQ29tcG9uZW50VHJhbnNmZXJUeXBlKQorICAgIERFRklORV9BTklNQVRFRF9OVU1C
RVJfTElTVChTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OnRh
YmxlVmFsdWVzQXR0ciwgVGFibGVWYWx1ZXMsIHRhYmxlVmFsdWVzKQorICAgIERFRklORV9BTklN
QVRFRF9OVU1CRVIoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR05hbWVz
OjpzbG9wZUF0dHIsIFNsb3BlLCBzbG9wZSkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdOYW1lczo6aW50ZXJjZXB0QXR0
ciwgSW50ZXJjZXB0LCBpbnRlcmNlcHQpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OmFtcGxpdHVkZUF0dHIs
IEFtcGxpdHVkZSwgYW1wbGl0dWRlKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR05hbWVzOjpleHBvbmVudEF0dHIsIEV4
cG9uZW50LCBleHBvbmVudCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdOYW1lczo6b2Zmc2V0QXR0ciwgT2Zmc2V0LCBv
ZmZzZXQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCkK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh0eXBlKQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHRhYmxlVmFsdWVzKQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKHNsb3BlKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKGludGVyY2VwdCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShh
bXBsaXR1ZGUpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXhwb25lbnQp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkob2Zmc2V0KQorRU5EX1JFR0lT
VEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQ6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0VsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCkBAIC00Niw2ICs1Nyw3IEBAIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb25FbGVtZW50OjpTVkcKICAgICAsIG1fYW1wbGl0dWRlKDEpCiAgICAgLCBtX2V4cG9uZW50
KDEpCiB7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVudCgpOwogfQogCiBib29sIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb25FbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKQEAgLTExNCw4MSArMTI2LDYgQEAgdm9pZCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFt
ZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplVHlwZSgpOwotICAgICAgICBzeW5jaHJvbml6ZVRh
YmxlVmFsdWVzKCk7Ci0gICAgICAgIHN5bmNocm9uaXplU2xvcGUoKTsKLSAgICAgICAgc3luY2hy
b25pemVJbnRlcmNlcHQoKTsKLSAgICAgICAgc3luY2hyb25pemVBbXBsaXR1ZGUoKTsKLSAgICAg
ICAgc3luY2hyb25pemVFeHBvbmVudCgpOwotICAgICAgICBzeW5jaHJvbml6ZU9mZnNldCgpOwot
ICAgICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7Ci0gICAgICAgIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
Ojp0eXBlQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVR5cGUoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dGFibGVWYWx1ZXNBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplVGFibGVWYWx1ZXMoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c2xvcGVBdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplU2xvcGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW50ZXJjZXB0QXR0cikgewotICAgICAgICBzeW5jaHJv
bml6ZUludGVyY2VwdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjphbXBsaXR1ZGVBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplQW1w
bGl0dWRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmV4cG9uZW50QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUV4cG9uZW50KCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
Om9mZnNldEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVPZmZzZXQoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAo
KSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQg
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnR5cGVBdHRyLCBB
bmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OnRhYmxlVmFsdWVzQXR0ciwgQW5pbWF0ZWROdW1iZXJMaXN0KTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNsb3BlQXR0ciwgQW5pbWF0ZWRO
dW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW50
ZXJjZXB0QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6YW1wbGl0dWRlQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZXhwb25lbnRBdHRyLCBBbmlt
YXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjpvZmZzZXRBdHRyLCBBbmltYXRlZE51bWJlcik7Ci19Ci0KIENvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24gU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnRyYW5zZmVyRnVuY3Rp
b24oKSBjb25zdAogewogICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gZnVuYzsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudC5oCShyZXZpc2lvbiA5MDU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04
MCwxOSArODAsMTcgQEAgcHJvdGVjdGVkOgogICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFu
Z2VkIG1pc3NpbmcuCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0
ZSopOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKICAgICAKIHByaXZhdGU6Ci0gICAgLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihUeXBlLCB0
eXBlLCBDb21wb25lbnRUcmFuc2ZlclR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVJf
TElTVChUYWJsZVZhbHVlcywgdGFibGVWYWx1ZXMpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1C
RVIoU2xvcGUsIHNsb3BlKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEludGVyY2VwdCwg
aW50ZXJjZXB0KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEFtcGxpdHVkZSwgYW1wbGl0
dWRlKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEV4cG9uZW50LCBleHBvbmVudCkKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihPZmZzZXQsIG9mZnNldCkKKyAgICBCRUdJTl9ERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1l
bnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oVHlwZSwgdHlwZSwgQ29t
cG9uZW50VHJhbnNmZXJUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUl9MSVNU
KFRhYmxlVmFsdWVzLCB0YWJsZVZhbHVlcykKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1C
RVIoU2xvcGUsIHNsb3BlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihJbnRlcmNl
cHQsIGludGVyY2VwdCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQW1wbGl0dWRl
LCBhbXBsaXR1ZGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEV4cG9uZW50LCBl
eHBvbmVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoT2Zmc2V0LCBvZmZzZXQp
CisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAko
cmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDExICszMCwyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURf
TEVOR1RIKFNWR0N1cnNvckVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKLURFRklORV9B
TklNQVRFRF9MRU5HVEgoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQot
REVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdDdXJzb3JFbGVtZW50LCBYTGlua05hbWVzOjpocmVm
QXR0ciwgSHJlZiwgaHJlZikKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0N1cnNvckVsZW1l
bnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9B
TklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdDdXJzb3JF
bGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdU
SChTVkdDdXJzb3JFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCisgICAgREVGSU5FX0FO
SU1BVEVEX1NUUklORyhTVkdDdXJzb3JFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJl
ZiwgaHJlZikKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdDdXJzb3JFbGVtZW50LCBT
VkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVE
X1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdDdXJz
b3JFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWShocmVmKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElF
UwogCiBpbmxpbmUgU1ZHQ3Vyc29yRWxlbWVudDo6U1ZHQ3Vyc29yRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KQpAQCAtNDIsNiArNTEsNyBAQCBpbmxpbmUgU1ZHQ3Vyc29yRWxl
bWVudDo6U1ZHQ3Vyc29yRWxlbWVuCiAgICAgLCBtX3koTGVuZ3RoTW9kZUhlaWdodCkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6Y3Vyc29yVGFnKSk7CisgICAgcmVnaXN0ZXJB
bmltYXRlZFByb3BlcnRpZXNGb3JTVkdDdXJzb3JFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8
U1ZHQ3Vyc29yRWxlbWVudD4gU1ZHQ3Vyc29yRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTk2LDIwICsxMDYsNiBAQCB2
b2lkIFNWR0N1cnNvckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdDdXJzb3JFbGVt
ZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQot
Ci12b2lkIFNWR0N1cnNvckVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
Ci17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZE51bWJlcik7
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5p
bWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChYTGlua05h
bWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotfQotCiB2b2lkIFNWR0N1cnNvckVsZW1l
bnQ6OmFkZENsaWVudChTVkdFbGVtZW50KiBlbGVtZW50KQogewogICAgIG1fY2xpZW50cy5hZGQo
ZWxlbWVudCk7CkBAIC0xNDcsNTEgKzE0Myw2IEBAIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmcKICAgICAgICAgKCppdCktPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0K
IAotdm9pZCBTVkdDdXJzb3JFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAg
ICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHN5bmNo
cm9uaXplSHJlZigpOwotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRo
aXMsIGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShh
dHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVk
QXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXMo
dGhpcywgYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci19Ci0KIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6YWRkU3VicmVzb3VyY2VB
dHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdAogewogICAgIFNWR0Vs
ZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MywyMSArNTMs
MjAgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKIAotICAgIC8vIEFuaW1h
dGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgs
IHgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKLQotICAgIC8vIFNWR1VSSVJl
ZmVyZW5jZQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCi0KLSAgICAv
LyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09M
RUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQp
CisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0N1cnNvckVsZW1lbnQp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKFksIHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhy
ZWYsIGhyZWYpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9ERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVx
dWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVp
cmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25z
KHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSB7
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiAKICAgICBIYXNo
U2V0PFNWR0VsZW1lbnQqPiBtX2NsaWVudHM7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0RlZnNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RGVmc0VsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdEZWZzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwyMSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1E
RUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdEZWZzRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAg
ICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdEZWZzRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisK
K0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRGVmc0VsZW1lbnQpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBT
VkdEZWZzRWxlbWVudDo6U1ZHRGVmc0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6
OmRlZnNUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0RlZnNFbGVt
ZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRGVmc0VsZW1lbnQ+IFNWR0RlZnNFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpA
QCAtNTIsMjIgKzYwLDYgQEAgUmVuZGVyT2JqZWN0KiBTVkdEZWZzRWxlbWVudDo6Y3JlYXRlUmVu
ZAogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIodGhpcyk7
CiB9CiAKLXZvaWQgU1ZHRGVmc0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotCi0gICAgaWYgKGF0dHJOYW1lID09
IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0
ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAgICBzeW5j
aHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICBlbHNlIGlmIChTVkdUZXN0
czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFC
TEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmgJKHJldmlzaW9uIDkw
NDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDEyICs0MywxNSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlk
KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVBy
b3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5
IGRlY2xhcmF0aW9ucworICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdE
ZWZzRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xB
UkVfQU5JTUFURURfUFJPUEVSVElFUwogCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIC8vIFNWR1Rlc3RzCisgICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNo
cm9uaXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRF
eHRlbnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFu
Z3VhZ2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDIzICsyODUsOSBAQCB2b2lkIFNWR0VsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0CiAgICAgICAgIFN0eWxlZEVsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKGF0dHIpOwogfQogCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRWxl
bWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQordm9pZCBTVkdFbGVtZW50Ojphbmlt
YXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lLCBWZWN0b3I8QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+JiBwcm9wZXJ0eVR5cGVzKQogewot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcDsKLX0KLQotQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIFNWR0VsZW1lbnQ6OmFu
aW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhbmltYXRlZEF0dHJpYnV0
ZU1hcCA9IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgaWYgKGFuaW1hdGVkQXR0
cmlidXRlTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7Ci0gICAgaWYgKGFuaW1hdGVkQXR0cmlidXRlTWFwLmNvbnRhaW5zKGF0dHJOYW1lKSkK
LSAgICAgICAgcmV0dXJuIGFuaW1hdGVkQXR0cmlidXRlTWFwLmdldChhdHRyTmFtZSk7Ci0gICAg
aWYgKGlzU3R5bGVkKCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVt
ZW50Kj4odGhpcyktPmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQ1NTUHJvcGVydHkoYXR0ck5hbWUp
OwotCi0gICAgcmV0dXJuIEFuaW1hdGVkVW5rbm93bjsKKyAgICBsb2NhbEF0dHJpYnV0ZVRvUHJv
cGVydHlNYXAoKS5hbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1l
LCBwcm9wZXJ0eVR5cGVzKTsKIH0KIAogYm9vbCBTVkdFbGVtZW50OjpoYXZlTG9hZGVkUmVxdWly
ZWRSZXNvdXJjZXMoKQpAQCAtMzkyLDEzICszNzgsNDIgQEAgdm9pZCBTVkdFbGVtZW50Ojp1cGRh
dGVBbmltYXRlZFNWR0F0dHJpYgogCiAgICAgc2V0SXNTeW5jaHJvbml6aW5nU1ZHQXR0cmlidXRl
cygpOwogCi0gICAgY29uc3RfY2FzdDxTVkdFbGVtZW50Kj4odGhpcyktPnN5bmNocm9uaXplUHJv
cGVydHkobmFtZSk7Ci0gICAgaWYgKG5hbWUgPT0gYW55UU5hbWUoKSkKKyAgICBTVkdFbGVtZW50
KiBub25Db25zdFRoaXMgPSBjb25zdF9jYXN0PFNWR0VsZW1lbnQqPih0aGlzKTsKKyAgICBpZiAo
bmFtZSA9PSBhbnlRTmFtZSgpKSB7CisgICAgICAgIG5vbkNvbnN0VGhpcy0+bG9jYWxBdHRyaWJ1
dGVUb1Byb3BlcnR5TWFwKCkuc3luY2hyb25pemVQcm9wZXJ0aWVzKG5vbkNvbnN0VGhpcyk7CiAg
ICAgICAgIHNldEFyZVNWR0F0dHJpYnV0ZXNWYWxpZCgpOworICAgIH0gZWxzZQorICAgICAgICBu
b25Db25zdFRoaXMtPmxvY2FsQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpLnN5bmNocm9uaXplUHJv
cGVydHkobm9uQ29uc3RUaGlzLCBuYW1lKTsKIAogICAgIGNsZWFySXNTeW5jaHJvbml6aW5nU1ZH
QXR0cmlidXRlcygpOwogfQogCitTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBTVkdFbGVtZW50
Ojpsb2NhbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFw
LCBkdW1teU1hcCwgKCkpOworICAgIHJldHVybiBkdW1teU1hcDsKK30KKwordm9pZCBTVkdFbGVt
ZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModm9pZCogY29udGV4dEVsZW1lbnQpCit7
CisgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICBzdGF0aWNfY2FzdDxTVkdFbGVtZW50
Kj4oY29udGV4dEVsZW1lbnQpLT5zeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKTsKK30KKwor
dm9pZCBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh2b2lkKiBjb250
ZXh0RWxlbWVudCkKK3sKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgIHN0YXRpY19j
YXN0PFNWR0VsZW1lbnQqPihjb250ZXh0RWxlbWVudCktPnN5bmNocm9uaXplUmVxdWlyZWRFeHRl
bnNpb25zKCk7Cit9CisKK3ZvaWQgU1ZHRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFn
ZSh2b2lkKiBjb250ZXh0RWxlbWVudCkKK3sKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwor
ICAgIHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihjb250ZXh0RWxlbWVudCktPnN5bmNocm9uaXpl
U3lzdGVtTGFuZ3VhZ2UoKTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw0NyArMjQsMjcgQEAKIAog
I2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHTG9jYXRhYmxlLmgiCisjaW5jbHVkZSAiU1ZH
UHJvcGVydHlJbmZvLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBBbmltYXRlZEF0dHJp
YnV0ZVR5cGUgewotICAgIEFuaW1hdGVkQW5nbGUsCi0gICAgQW5pbWF0ZWRCb29sZWFuLAotICAg
IEFuaW1hdGVkQ29sb3IsCi0gICAgQW5pbWF0ZWRFbnVtZXJhdGlvbiwKLSAgICBBbmltYXRlZElu
dGVnZXIsCi0gICAgQW5pbWF0ZWRMZW5ndGgsCi0gICAgQW5pbWF0ZWRMZW5ndGhMaXN0LAotICAg
IEFuaW1hdGVkTnVtYmVyLAotICAgIEFuaW1hdGVkTnVtYmVyTGlzdCwKLSAgICBBbmltYXRlZE51
bWJlck9wdGlvbmFsTnVtYmVyLAotICAgIEFuaW1hdGVkUGF0aCwKLSAgICBBbmltYXRlZFBvaW50
cywKLSAgICBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8sCi0gICAgQW5pbWF0ZWRSZWN0LAot
ICAgIEFuaW1hdGVkU3RyaW5nLAotICAgIEFuaW1hdGVkVHJhbnNmb3JtTGlzdCwKLSAgICBBbmlt
YXRlZFVua25vd24KLX07Ci0KIGVudW0gU1ZHUGFyc2luZ0Vycm9yIHsKICAgICBOb0Vycm9yLAog
ICAgIFBhcnNpbmdBdHRyaWJ1dGVGYWlsZWRFcnJvciwKICAgICBOZWdhdGl2ZVZhbHVlRm9yYmlk
ZGVuRXJyb3IKIH07CiAKLXR5cGVkZWYgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZEF0
dHJpYnV0ZVR5cGU+IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotCitjbGFzcyBBZmZpbmVU
cmFuc2Zvcm07CiBjbGFzcyBDU1NDdXJzb3JJbWFnZVZhbHVlOwogY2xhc3MgRG9jdW1lbnQ7Citj
bGFzcyBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwOwogY2xhc3MgU1ZHQ3Vyc29yRWxlbWVudDsK
IGNsYXNzIFNWR0RvY3VtZW50RXh0ZW5zaW9uczsKIGNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZTsK
IGNsYXNzIFNWR0VsZW1lbnRSYXJlRGF0YTsKIGNsYXNzIFNWR1NWR0VsZW1lbnQ7Ci1jbGFzcyBB
ZmZpbmVUcmFuc2Zvcm07CiAKIGNsYXNzIFNWR0VsZW1lbnQgOiBwdWJsaWMgU3R5bGVkRWxlbWVu
dCB7CiBwdWJsaWM6CkBAIC05MSwxMiArNzEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpIHsgfQotCi0gICAg
dmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKLSAgICBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGVG
b3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCi0gICAgdmlydHVhbCB2b2lkIGZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhbmlt
YXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgVmVjdG9y
PEFuaW1hdGVkUHJvcGVydHlUeXBlPiYpOwogCiAgICAgdm9pZCBzZW5kU1ZHTG9hZEV2ZW50SWZQ
b3NzaWJsZShib29sIHNlbmRQYXJlbnRMb2FkRXZlbnRzID0gZmFsc2UpOwogCkBAIC0xMTUsNiAr
OTEsMTYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGVkU1ZHQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKIAorICAgIHN0YXRpYyB2b2lkIHN5
bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh2b2lkKiBjb250ZXh0RWxlbWVudCk7CisgICAgc3Rh
dGljIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModm9pZCogY29udGV4dEVsZW1l
bnQpOworICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2Uodm9pZCogY29u
dGV4dEVsZW1lbnQpOworCisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0
dXJlcygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9u
cygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyB9
CisKKyAgICB2aXJ0dWFsIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAmIGxvY2FsQXR0cmlidXRl
VG9Qcm9wZXJ0eU1hcCgpOworCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApAQCAtMTQxLDcgKzEyNyw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBtYXBJbnN0YW5jZVRvRWxlbWVudChTVkdFbGVtZW50SW5zdGFuY2UqKTsKICAgICB2
b2lkIHJlbW92ZUluc3RhbmNlTWFwcGluZyhTVkdFbGVtZW50SW5zdGFuY2UqKTsKIAotICAgIHZp
cnR1YWwgYm9vbCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKTsKKyAgICB2aXJ0dWFsIGJv
b2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCk7ICAgIAogfTsKIAogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDEyICszMywyMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVk
IHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0VsbGlwc2VF
bGVtZW50LCBTVkdOYW1lczo6Y3hBdHRyLCBDeCwgY3gpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RI
KFNWR0VsbGlwc2VFbGVtZW50LCBTVkdOYW1lczo6Y3lBdHRyLCBDeSwgY3kpCi1ERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdOYW1lczo6cnhBdHRyLCBSeCwgcngp
Ci1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdOYW1lczo6cnlB
dHRyLCBSeSwgcnkpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdFbGxpcHNlRWxlbWVudCwg
U1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1B
VEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0VsbGlwc2VFbGVt
ZW50LCBTVkdOYW1lczo6Y3hBdHRyLCBDeCwgY3gpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdU
SChTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTmFtZXM6OmN5QXR0ciwgQ3ksIGN5KQorICAgIERFRklO
RV9BTklNQVRFRF9MRU5HVEgoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR05hbWVzOjpyeEF0dHIsIFJ4
LCByeCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdO
YW1lczo6cnlBdHRyLCBSeSwgcnkpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHRWxs
aXBzZUVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9E
RUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR0VsbGlwc2VFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKGN4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGN5KQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHJ4KQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKHJ5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAgUkVHSVNU
RVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5J
TUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHRWxsaXBzZUVsZW1lbnQ6OlNWR0VsbGlwc2VF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
ICAgICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQpA
QCAtNDgsNiArNTksNyBAQCBpbmxpbmUgU1ZHRWxsaXBzZUVsZW1lbnQ6OlNWR0VsbGlwc2VFbGVt
CiAgICAgLCBtX3J5KExlbmd0aE1vZGVIZWlnaHQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
U1ZHTmFtZXM6OmVsbGlwc2VUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0Zv
clNWR0VsbGlwc2VFbGVtZW50KCk7CiB9ICAgIAogCiBQYXNzUmVmUHRyPFNWR0VsbGlwc2VFbGVt
ZW50PiBTVkdFbGxpcHNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTE0OSw3NCArMTYxLDYgQEAgdm9pZCBTVkdFbGxp
cHNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQogCi12b2lkIFNWR0VsbGlwc2VFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgp
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplQ3goKTsKLSAgICAgICAgc3luY2hyb25pemVDeSgpOwot
ICAgICAgICBzeW5jaHJvbml6ZVJ4KCk7Ci0gICAgICAgIHN5bmNocm9uaXplUnkoKTsKLSAgICAg
ICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rl
c3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRl
KGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmN4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6
ZUN4KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmN5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUN5KCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJ4QXR0cikgewotICAg
ICAgICBzeW5jaHJvbml6ZVJ4KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJ5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVJ5KCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25p
emVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAg
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdFbGxpcHNlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1
cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdFbGxpcHNlRWxl
bWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk7ICAgIAotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6Y3hBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpjeUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnJ4QXR0ciwgQW5pbWF0ZWRMZW5n
dGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cnlBdHRy
LCBBbmltYXRlZExlbmd0aCk7Ci19Ci0KIHZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnRvUGF0aERh
dGEoUGF0aCYgcGF0aCkgY29uc3QKIHsKICAgICBBU1NFUlQocGF0aC5pc0VtcHR5KCkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDIyICs0NywyMyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCB2b2lk
IHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxh
dGl2ZUxlbmd0aHMoKSBjb25zdDsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0
aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN4LCBjeCkKLSAgICBERUNMQVJFX0FO
SU1BVEVEX0xFTkdUSChDeSwgY3kpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUngsIHJ4
KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFJ5LCByeSkKLQotICAgIC8vIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJ
Tl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRWxsaXBzZUVsZW1lbnQpCisgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN4LCBjeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9MRU5HVEgoQ3ksIGN5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSeCwgcngp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFJ5LCByeSkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisg
ICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1
cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0
czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lz
dGVtTGFuZ3VhZ2UodGhpcyk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSwxNiArMzEsMjUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmlt
YXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUJs
ZW5kRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4xLCBpbjEpCi1ERUZJTkVfQU5JTUFURURf
U1RSSU5HKFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdOYW1lczo6aW4yQXR0ciwgSW4yLCBpbjIpCi1E
RUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHRkVCbGVuZEVsZW1lbnQsIFNWR05hbWVzOjpt
b2RlQXR0ciwgTW9kZSwgbW9kZSwgQmxlbmRNb2RlVHlwZSkKK0JFR0lOX0RFRklORV9BTklNQVRF
RF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUJsZW5kRWxlbWVu
dCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4xLCBpbjEpCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklO
RyhTVkdGRUJsZW5kRWxlbWVudCwgU1ZHTmFtZXM6OmluMkF0dHIsIEluMiwgaW4yKQorICAgIERF
RklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRUJsZW5kRWxlbWVudCwgU1ZHTmFtZXM6Om1v
ZGVBdHRyLCBNb2RlLCBtb2RlLCBCbGVuZE1vZGVUeXBlKQorRU5EX0RFRklORV9BTklNQVRFRF9Q
Uk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVCbGVu
ZEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGluMikKKyAgICBSRUdJU1RFUl9MT0NB
TF9BTklNQVRFRF9QUk9QRVJUWShtb2RlKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJ
U1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdGRUJsZW5kRWxlbWVudDo6U1ZH
RkVCbGVuZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05h
bWUsIGRvY3VtZW50KQogICAgICwgbV9tb2RlKEZFQkxFTkRfTU9ERV9OT1JNQUwpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlQmxlbmRUYWcpKTsKKyAgICByZWdpc3RlckFu
aW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFQmxlbmRFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8
U1ZHRkVCbGVuZEVsZW1lbnQ+IFNWR0ZFQmxlbmRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTE5LDU1ICsxMjgsNiBA
QCB2b2lkIFNWR0ZFQmxlbmRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1l
ID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVNb2RlKCk7Ci0gICAgICAgIHN5
bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSW4yKCk7Ci0gICAgICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRy
TmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0
cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjptb2RlQXR0cikgewotICAg
ICAgICBzeW5jaHJvbml6ZU1vZGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4x
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmluMkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVJbjIoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgU1ZHRkVCbGVuZEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKTsgICAgCi0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluMkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om1vZGVBdHRyLCBBbmltYXRlZEVu
dW1lcmF0aW9uKTsKLX0KLQogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQmxlbmRFbGVt
ZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRl
cikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVj
dEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgJ
KHJldmlzaW9uIDkwNTYwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDE1ICs4MCwxMyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIGJv
b2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAotICAg
IC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURf
U1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMiwgaW4yKQot
ICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oTW9kZSwgbW9kZSwgQmxlbmRNb2RlVHlw
ZSkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVCbGVuZEVsZW1l
bnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjIsIGluMikKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9FTlVNRVJBVElPTihNb2RlLCBtb2RlLCBCbGVuZE1vZGVUeXBlKQorICAgIEVORF9ERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAkocmV2
aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNiArMzEsMjUgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1B
VEVEX1NUUklORyhTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4x
LCBpbjEpCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQsIFNWR05hbWVzOjp0eXBlQXR0ciwgVHlwZSwgdHlwZSwgQ29sb3JNYXRyaXhUeXBlKQotREVG
SU5FX0FOSU1BVEVEX05VTUJFUl9MSVNUKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTVkdOYW1l
czo6dmFsdWVzQXR0ciwgVmFsdWVzLCB2YWx1ZXMpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJP
UEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklORV9BTklNQVRFRF9FTlVN
RVJBVElPTihTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OnR5cGVBdHRyLCBUeXBl
LCB0eXBlLCBDb2xvck1hdHJpeFR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9MSVNU
KFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6dmFsdWVzQXR0ciwgVmFsdWVzLCB2
YWx1ZXMpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdGRUNvbG9yTWF0cml4RWxlbWVudCkKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkodHlwZSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh2
YWx1ZXMpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BF
UlRJRVMKIAogaW5saW5lIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpTVkdGRUNvbG9yTWF0cml4
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9j
dW1lbnQpCiAgICAgLCBtX3R5cGUoRkVDT0xPUk1BVFJJWF9UWVBFX1VOS05PV04pCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlQ29sb3JNYXRyaXhUYWcpKTsKKyAgICByZWdp
c3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KCk7CiB9CiAK
IFBhc3NSZWZQdHI8U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ+IFNWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQpAQCAtMTI0LDU1ICsxMzMsNiBAQCB2b2lkIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50Ojpz
dmdBdHRyaWJ1CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAg
c3luY2hyb25pemVUeXBlKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHN5
bmNocm9uaXplVmFsdWVzKCk7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAg
ICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJv
cGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjp0eXBlQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVR5cGUoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnZhbHVlc0F0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVWYWx1ZXMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKLQotICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6
ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Omlu
QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6dHlwZUF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dmFsdWVzQXR0ciwgQW5pbWF0ZWROdW1i
ZXJMaXN0KTsKLX0KLQogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZp
bHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVm
ZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50LmgJKHJldmlzaW9uIDkwNTYwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDE1ICs3NywxMyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVm
ZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0
ZXIqKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xB
UkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVS
QVRJT04oVHlwZSwgdHlwZSwgQ29sb3JNYXRyaXhUeXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURf
TlVNQkVSX0xJU1QoVmFsdWVzLCB2YWx1ZXMpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX1NUUklORyhJbjEsIGluMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElP
TihUeXBlLCB0eXBlLCBDb2xvck1hdHJpeFR5cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
TlVNQkVSX0xJU1QoVmFsdWVzLCB2YWx1ZXMpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCShyZXZp
c2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEzICszNCwyMCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotREVGSU5F
X0FOSU1BVEVEX1NUUklORyhTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCwgU1ZHTmFtZXM6
OmluQXR0ciwgSW4xLCBpbjEpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAg
IERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQsIFNW
R05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVT
CisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVDb21wb25lbnRUcmFu
c2ZlckVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQor
ICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAK
IGlubGluZSBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6U1ZHRkVDb21wb25lbnRUcmFu
c2ZlckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUs
IGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUNvbXBvbmVu
dFRyYW5zZmVyVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTcyLDQx
ICs3OSw2IEBAIHZvaWQgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OnBhcnMKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxl
bWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
LXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6
ZUluMSgpOwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5
bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJO
YW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjphdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAg
IHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQot
ewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0K
LQogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50
OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikK
IHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5
SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9u
ZW50VHJhbnNmZXJFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDEzICszNywxMSBAQCBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
IG1pc3NpbmcuCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSop
OwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0
eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAg
ICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVDb21wb25lbnRUcmFuc2Zl
ckVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAg
IEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0
ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwyMCArMzEsMzMgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5F
X0FOSU1BVEVEX1NUUklORyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIs
IEluMSwgaW4xKQotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQs
IFNWR05hbWVzOjppbjJBdHRyLCBJbjIsIGluMikKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElP
TihTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjpvcGVyYXRvckF0dHIsIF9vcGVyYXRv
ciwgX29wZXJhdG9yLCBDb21wb3NpdGVPcGVyYXRpb25UeXBlKQotREVGSU5FX0FOSU1BVEVEX05V
TUJFUihTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjprMUF0dHIsIEsxLCBrMSkKLURF
RklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6azJB
dHRyLCBLMiwgazIpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFQ29tcG9zaXRlRWxlbWVu
dCwgU1ZHTmFtZXM6OmszQXR0ciwgSzMsIGszKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdG
RUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjprNEF0dHIsIEs0LCBrNCkKK0JFR0lOX0RFRklO
RV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUNv
bXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklORV9B
TklNQVRFRF9TVFJJTkcoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6aW4yQXR0ciwg
SW4yLCBpbjIpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFQ29tcG9zaXRl
RWxlbWVudCwgU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciwgX29wZXJhdG9yLCBfb3BlcmF0b3IsIENv
bXBvc2l0ZU9wZXJhdGlvblR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUNv
bXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjprMUF0dHIsIEsxLCBrMSkKKyAgICBERUZJTkVfQU5J
TUFURURfTlVNQkVSKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6OmsyQXR0ciwgSzIs
IGsyKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBT
VkdOYW1lczo6azNBdHRyLCBLMywgazMpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdG
RUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjprNEF0dHIsIEs0LCBrNCkKK0VORF9ERUZJTkVf
QU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR0ZFQ29tcG9zaXRlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWShpbjEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4yKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKF9vcGVyYXRvcikKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrMSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShrMikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrMykK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrNCkKKyAgICBSRUdJU1RFUl9Q
QVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHRkVD
b21wb3NpdGVFbGVtZW50OjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9fb3BlcmF0b3Io
RkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZFUikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdO
YW1lczo6ZmVDb21wb3NpdGVUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0Zv
clNWR0ZFQ29tcG9zaXRlRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFQ29tcG9zaXRl
RWxlbWVudD4gU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTYwLDgzICsxNzMsNiBAQCB2b2lk
IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6c3ZnQXR0cmlidXRlCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9
PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplX29wZXJhdG9yKCk7Ci0gICAgICAg
IHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSW4yKCk7Ci0gICAgICAgIHN5
bmNocm9uaXplSzEoKTsKLSAgICAgICAgc3luY2hyb25pemVLMigpOwotICAgICAgICBzeW5jaHJv
bml6ZUszKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSzQoKTsKLSAgICAgICAgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
czo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0cikgewotICAgICAg
ICBzeW5jaHJvbml6ZV9vcGVyYXRvcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVJ
bjEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6aW4yQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMigpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjprMUF0dHIpIHsKLSAg
ICAgICAgc3luY2hyb25pemVLMSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjprMkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVLMigp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
OjprM0F0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVLMygpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjprNEF0dHIpIHsKLSAgICAgICAg
c3luY2hyb25pemVLNCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRUNvbXBv
c2l0ZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXA7Ci19Ci0KLXZvaWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7ICAg
IAotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBB
bmltYXRlZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjppbjJBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjpvcGVyYXRvckF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwot
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6azFBdHRyLCBBbmlt
YXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjprMkF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OmszQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6azRBdHRyLCBBbmltYXRlZE51bWJlcik7Ci19
Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAg
IEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEo
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCShy
ZXZpc2lvbiA5MDU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtODUsMTkgKzg1LDE3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwg
Ym9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRl
ckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCi0gICAgLy8gQW5p
bWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkco
SW4xLCBpbjEpCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4yLCBpbjIpCi0gICAgREVD
TEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihfb3BlcmF0b3IsIF9vcGVyYXRvciwgQ29tcG9zaXRl
T3BlcmF0aW9uVHlwZSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLMSwgazEpCi0gICAg
REVDTEFSRV9BTklNQVRFRF9OVU1CRVIoSzIsIGsyKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVN
QkVSKEszLCBrMykKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLNCwgazQpCisgICAgQkVH
SU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfU1RSSU5HKEluMiwgaW4yKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1F
UkFUSU9OKF9vcGVyYXRvciwgX29wZXJhdG9yLCBDb21wb3NpdGVPcGVyYXRpb25UeXBlKQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLMSwgazEpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfTlVNQkVSKEsyLCBrMikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoSzMs
IGszKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLNCwgazQpCisgICAgRU5EX0RF
Q0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDI1ICszNCw0MyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25z
Ci1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdO
YW1lczo6aW5BdHRyLCBJbjEsIGluMSkKLURFRklORV9BTklNQVRFRF9JTlRFR0VSX01VTFRJUExF
X1dSQVBQRVJTKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6b3JkZXJBdHRy
LCBvcmRlclhJZGVudGlmaWVyKCksIE9yZGVyWCwgb3JkZXJYKQotREVGSU5FX0FOSU1BVEVEX0lO
VEVHRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQsIFNWR05h
bWVzOjpvcmRlckF0dHIsIG9yZGVyWUlkZW50aWZpZXIoKSwgT3JkZXJZLCBvcmRlclkpIAotREVG
SU5FX0FOSU1BVEVEX05VTUJFUl9MSVNUKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdO
YW1lczo6a2VybmVsTWF0cml4QXR0ciwgS2VybmVsTWF0cml4LCBrZXJuZWxNYXRyaXgpCi1ERUZJ
TkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6
ZGl2aXNvckF0dHIsIERpdmlzb3IsIGRpdmlzb3IpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6Ymlhc0F0dHIsIEJpYXMsIGJpYXMp
Ci1ERUZJTkVfQU5JTUFURURfSU5URUdFUihTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZH
TmFtZXM6OnRhcmdldFhBdHRyLCBUYXJnZXRYLCB0YXJnZXRYKQotREVGSU5FX0FOSU1BVEVEX0lO
VEVHRVIoU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQsIFNWR05hbWVzOjp0YXJnZXRZQXR0ciwg
VGFyZ2V0WSwgdGFyZ2V0WSkKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OmVkZ2VNb2RlQXR0ciwgRWRnZU1vZGUsIGVkZ2VN
b2RlLCBFZGdlTW9kZVR5cGUpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQ
RVJTKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0
aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpLCBLZXJuZWxVbml0TGVuZ3RoWCwg
a2VybmVsVW5pdExlbmd0aFgpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQ
RVJTKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0
aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigpLCBLZXJuZWxVbml0TGVuZ3RoWSwg
a2VybmVsVW5pdExlbmd0aFkpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQWxwaGFBdHRyLCBQcmVzZXJ2ZUFscGhh
LCBwcmVzZXJ2ZUFscGhhKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBE
RUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1l
czo6aW5BdHRyLCBJbjEsIGluMSkKKyAgICBERUZJTkVfQU5JTUFURURfSU5URUdFUl9NVUxUSVBM
RV9XUkFQUEVSUyhTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6Om9yZGVyQXR0
ciwgb3JkZXJYSWRlbnRpZmllcigpLCBPcmRlclgsIG9yZGVyWCkKKyAgICBERUZJTkVfQU5JTUFU
RURfSU5URUdFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwg
U1ZHTmFtZXM6Om9yZGVyQXR0ciwgb3JkZXJZSWRlbnRpZmllcigpLCBPcmRlclksIG9yZGVyWSkg
CisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9MSVNUKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50LCBTVkdOYW1lczo6a2VybmVsTWF0cml4QXR0ciwgS2VybmVsTWF0cml4LCBrZXJuZWxNYXRy
aXgpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dCwgU1ZHTmFtZXM6OmRpdmlzb3JBdHRyLCBEaXZpc29yLCBkaXZpc29yKQorICAgIERFRklORV9B
TklNQVRFRF9OVU1CRVIoU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQsIFNWR05hbWVzOjpiaWFz
QXR0ciwgQmlhcywgYmlhcykKKyAgICBERUZJTkVfQU5JTUFURURfSU5URUdFUihTVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OnRhcmdldFhBdHRyLCBUYXJnZXRYLCB0YXJnZXRY
KQorICAgIERFRklORV9BTklNQVRFRF9JTlRFR0VSKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
LCBTVkdOYW1lczo6dGFyZ2V0WUF0dHIsIFRhcmdldFksIHRhcmdldFkpCisgICAgREVGSU5FX0FO
SU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6
ZWRnZU1vZGVBdHRyLCBFZGdlTW9kZSwgZWRnZU1vZGUsIEVkZ2VNb2RlVHlwZSkKKyAgICBERUZJ
TkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50LCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhY
SWRlbnRpZmllcigpLCBLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgpCisgICAg
REVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudCwgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBrZXJuZWxVbml0TGVu
Z3RoWUlkZW50aWZpZXIoKSwgS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZKQor
ICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBT
VkdOYW1lczo6cHJlc2VydmVBbHBoYUF0dHIsIFByZXNlcnZlQWxwaGEsIHByZXNlcnZlQWxwaGEp
CitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCkKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkob3JkZXJYKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKG9y
ZGVyWSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrZXJuZWxNYXRyaXgp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZGl2aXNvcikKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShiaWFzKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKHRhcmdldFgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkodGFyZ2V0WSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShlZGdl
TW9kZSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrZXJuZWxVbml0TGVu
Z3RoWCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrZXJuZWxVbml0TGVu
Z3RoWSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShwcmVzZXJ2ZUFscGhh
KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVT
CiAKIGlubGluZSBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6U1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRv
Y3VtZW50KQogICAgICwgbV9lZGdlTW9kZShFREdFTU9ERV9EVVBMSUNBVEUpCiB7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlQ29udm9sdmVNYXRyaXhUYWcpKTsKKyAgICByZWdp
c3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50KCk7CiB9
CiAKIFBhc3NSZWZQdHI8U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ+IFNWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQpAQCAtMjQ1LDg4ICsyNjMsNiBAQCB2b2lkIFNWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50OjpzdmdBdHRyCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQg
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkp
IHsKLSAgICAgICAgc3luY2hyb25pemVFZGdlTW9kZSgpOwotICAgICAgICBzeW5jaHJvbml6ZURp
dmlzb3IoKTsKLSAgICAgICAgc3luY2hyb25pemVCaWFzKCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
VGFyZ2V0WCgpOwotICAgICAgICBzeW5jaHJvbml6ZVRhcmdldFkoKTsKLSAgICAgICAgc3luY2hy
b25pemVLZXJuZWxVbml0TGVuZ3RoWCgpOwotICAgICAgICBzeW5jaHJvbml6ZUtlcm5lbFVuaXRM
ZW5ndGhZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUHJlc2VydmVBbHBoYSgpOwotICAgICAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHko
YXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZWRnZU1vZGVBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplRWRnZU1vZGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZGl2aXNvckF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVEaXZpc29yKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmJpYXNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
QmlhcygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjp0YXJnZXRYQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVRhcmdldFgoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dGFy
Z2V0WUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVUYXJnZXRZKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5n
dGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplS2VybmVsVW5pdExlbmd0aFgoKTsKLSAgICAg
ICAgc3luY2hyb25pemVLZXJuZWxVbml0TGVuZ3RoWSgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFscGhhQXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZVByZXNlcnZlQWxwaGEoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNf
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6b3JkZXJBdHRyLCBBbmltYXRlZE51bWJlck9w
dGlvbmFsTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6Omtlcm5lbE1hdHJpeEF0dHIsIEFuaW1hdGVkTnVtYmVyTGlzdCk7Ci0gICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpkaXZpc29yQXR0ciwgQW5pbWF0ZWROdW1i
ZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Ymlhc0F0
dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OnRhcmdldFhBdHRyLCBBbmltYXRlZEludGVnZXIpOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dGFyZ2V0WUF0dHIsIEFuaW1hdGVkSW50ZWdl
cik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpvcGVyYXRv
ckF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0
aW9uYWxOdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6cHJlc2VydmVBbHBoYUF0dHIsIEFuaW1hdGVkQm9vbGVhbik7Ci19Ci0KIFBhc3NSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZm
ZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCShy
ZXZpc2lvbiA5MDU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw5ICs3OCw2IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1
YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZp
bHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCiAgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgb3JkZXJYSWRlbnRpZmllcigpOwpAQCAtODgsMTkgKzg1
LDIwIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYga2VybmVsVW5p
dExlbmd0aFhJZGVudGlmaWVyKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYga2Vy
bmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCk7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBk
ZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoT3JkZXJYLCBvcmRlclgpCi0gICAgREVDTEFSRV9BTklN
QVRFRF9JTlRFR0VSKE9yZGVyWSwgb3JkZXJZKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVS
X0xJU1QoS2VybmVsTWF0cml4LCBrZXJuZWxNYXRyaXgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9O
VU1CRVIoRGl2aXNvciwgZGl2aXNvcikKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihCaWFz
LCBiaWFzKQotICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihUYXJnZXRYLCB0YXJnZXRYKQot
ICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihUYXJnZXRZLCB0YXJnZXRZKQotICAgIERFQ0xB
UkVfQU5JTUFURURfRU5VTUVSQVRJT04oRWRnZU1vZGUsIGVkZ2VNb2RlLCBFZGdlTW9kZVR5cGUp
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVu
aXRMZW5ndGhYKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEtlcm5lbFVuaXRMZW5ndGhZ
LCBrZXJuZWxVbml0TGVuZ3RoWSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oUHJlc2Vy
dmVBbHBoYSwgcHJlc2VydmVBbHBoYSkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfU1RSSU5HKEluMSwgaW4xKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoT3Jk
ZXJYLCBvcmRlclgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihPcmRlclksIG9y
ZGVyWSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVJfTElTVChLZXJuZWxNYXRyaXgs
IGtlcm5lbE1hdHJpeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoRGl2aXNvciwg
ZGl2aXNvcikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQmlhcywgYmlhcykKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9JTlRFR0VSKFRhcmdldFgsIHRhcmdldFgpCisgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihUYXJnZXRZLCB0YXJnZXRZKQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKEVkZ2VNb2RlLCBlZGdlTW9kZSwgRWRnZU1vZGVUeXBl
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWCwga2Vy
bmVsVW5pdExlbmd0aFgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEtlcm5lbFVu
aXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9C
T09MRUFOKFByZXNlcnZlQWxwaGEsIHByZXNlcnZlQWxwaGEpCisgICAgRU5EX0RFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEyICszNSwyMiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJ
TkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6
OmluQXR0ciwgSW4xLCBpbjEpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIsIERpZmZ1c2VDb25z
dGFudCwgZGlmZnVzZUNvbnN0YW50KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyLCBTdXJmYWNlU2Nh
bGUsIHN1cmZhY2VTY2FsZSkKLURFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBF
UlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0
aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpLCBLZXJuZWxVbml0TGVuZ3RoWCwg
a2VybmVsVW5pdExlbmd0aFgpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQ
RVJTKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5n
dGhBdHRyLCBrZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIoKSwgS2VybmVsVW5pdExlbmd0aFks
IGtlcm5lbFVuaXRMZW5ndGhZKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAg
ICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgU1ZH
TmFtZXM6OmluQXR0ciwgSW4xLCBpbjEpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpkaWZmdXNlQ29uc3RhbnRBdHRyLCBE
aWZmdXNlQ29uc3RhbnQsIGRpZmZ1c2VDb25zdGFudCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVN
QkVSKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0
dHIsIFN1cmZhY2VTY2FsZSwgc3VyZmFjZVNjYWxlKQorICAgIERFRklORV9BTklNQVRFRF9OVU1C
RVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1l
czo6a2VybmVsVW5pdExlbmd0aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpLCBL
ZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgpCisgICAgREVGSU5FX0FOSU1BVEVE
X05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNW
R05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwga2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVy
KCksIEtlcm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKK0VORF9ERUZJTkVfQU5J
TUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWShpbjEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZGlmZnVz
ZUNvbnN0YW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHN1cmZhY2VT
Y2FsZSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrZXJuZWxVbml0TGVu
Z3RoWCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrZXJuZWxVbml0TGVu
Z3RoWSkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVS
VElFUwogCiBpbmxpbmUgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpTVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05h
bWUsIGRvY3VtZW50KQpAQCAtNDgsNiArNTgsNyBAQCBpbmxpbmUgU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50OjpTVkdGCiAgICAgLCBtX3N1cmZhY2VTY2FsZSgxKQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKFNWR05hbWVzOjpmZURpZmZ1c2VMaWdodGluZ1RhZykpOworICAgIHJlZ2lzdGVy
QW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50KCk7CiB9CiAK
IFBhc3NSZWZQdHI8U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50PiBTVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCkBAIC0xOTQsNjcgKzIwNSw2IEBAIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50OjpsaWdodEUKICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1l
KTsKIH0KIAotdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1l
ID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVTdXJmYWNlU2NhbGUoKTsKLSAgICAgICAgc3luY2hyb25pemVEaWZmdXNlQ29uc3Rh
bnQoKTsKLSAgICAgICAgc3luY2hyb25pemVLZXJuZWxVbml0TGVuZ3RoWCgpOwotICAgICAgICBz
eW5jaHJvbml6ZUtlcm5lbFVuaXRMZW5ndGhZKCk7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJO
YW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5
bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpsaWdodGluZ19jb2xvckF0dHIpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIpIHsKLSAgICAgICAgc3luY2hy
b25pemVTdXJmYWNlU2NhbGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6ZGlmZnVzZUNvbnN0YW50QXR0cikgewotICAgICAgICBzeW5j
aHJvbml6ZURpZmZ1c2VDb25zdGFudCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0cikgewotICAgICAg
ICBzeW5jaHJvbml6ZUtlcm5lbFVuaXRMZW5ndGhYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplS2Vy
bmVsVW5pdExlbmd0aFkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXApOyAgICAKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6ZGlmZnVzZUNvbnN0YW50QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwot
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6c3VyZmFjZVNjYWxl
QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxO
dW1iZXIpOwotfQotCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIq
IGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdl
dEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVz
ZUxpZ2h0aW5nRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDIwICs0MywxOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0
cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAg
IHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0
dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGtl
cm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIGtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJv
cGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEp
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoRGlmZnVzZUNvbnN0YW50LCBkaWZmdXNlQ29u
c3RhbnQpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3VyZmFjZVNjYWxlLCBzdXJmYWNl
U2NhbGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFgsIGtl
cm5lbFVuaXRMZW5ndGhYKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEtlcm5lbFVuaXRM
ZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIo
RGlmZnVzZUNvbnN0YW50LCBkaWZmdXNlQ29uc3RhbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfTlVNQkVSKFN1cmZhY2VTY2FsZSwgc3VyZmFjZVNjYWxlKQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEtlcm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0
TGVuZ3RoWSkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFj
ZW1lbnRNYXBFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzAsMTIgKzMwLDIyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0
ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKLURFRklORV9B
TklNQVRFRF9TVFJJTkcoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBTVkdOYW1lczo6aW4y
QXR0ciwgSW4yLCBpbjIpCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHRkVEaXNwbGFj
ZW1lbnRNYXBFbGVtZW50LCBTVkdOYW1lczo6eENoYW5uZWxTZWxlY3RvckF0dHIsIFhDaGFubmVs
U2VsZWN0b3IsIHhDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxTZWxlY3RvclR5cGUpCi1ERUZJTkVf
QU5JTUFURURfRU5VTUVSQVRJT04oU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBTVkdOYW1l
czo6eUNoYW5uZWxTZWxlY3RvckF0dHIsIFlDaGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0
b3IsIENoYW5uZWxTZWxlY3RvclR5cGUpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OnNjYWxlQXR0ciwgU2NhbGUsIHNjYWxlKQor
QkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfU1RS
SU5HKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4xLCBp
bjEpCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQsIFNWR05hbWVzOjppbjJBdHRyLCBJbjIsIGluMikKKyAgICBERUZJTkVfQU5JTUFURURfRU5V
TUVSQVRJT04oU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBTVkdOYW1lczo6eENoYW5uZWxT
ZWxlY3RvckF0dHIsIFhDaGFubmVsU2VsZWN0b3IsIHhDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxT
ZWxlY3RvclR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OnlDaGFubmVsU2VsZWN0b3JBdHRyLCBZQ2hhbm5l
bFNlbGVjdG9yLCB5Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0b3JUeXBlKQorICAgIERF
RklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBTVkdOYW1l
czo6c2NhbGVBdHRyLCBTY2FsZSwgc2NhbGUpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJ
RVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGluMikKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWSh4Q2hhbm5lbFNlbGVjdG9yKQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKHlDaGFubmVsU2VsZWN0b3IpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkoc2NhbGUpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JF
R0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudDo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTQzLDYgKzUzLDcgQEAgaW5s
aW5lIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6U1ZHRgogICAgICwgbV95Q2hhbm5lbFNl
bGVjdG9yKENIQU5ORUxfQSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVE
aXNwbGFjZW1lbnRNYXBUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudD4gU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTM5LDY5
ICsxNTAsNiBAQCB2b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6c3ZnQXR0CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQot
ewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
WENoYW5uZWxTZWxlY3RvcigpOwotICAgICAgICBzeW5jaHJvbml6ZVlDaGFubmVsU2VsZWN0b3Io
KTsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgc3luY2hyb25pemVJbjIoKTsK
LSAgICAgICAgc3luY2hyb25pemVTY2FsZSgpOwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFt
ZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5j
aHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eENoYW5uZWxTZWxlY3RvckF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVYQ2hhbm5lbFNlbGVjdG9yKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlDaGFubmVsU2VsZWN0b3JBdHRyKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplWUNoYW5uZWxTZWxlY3RvcigpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMigp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
OjpzY2FsZUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVTY2FsZSgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAg
cmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewot
ICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluMkF0dHIsIEFuaW1hdGVk
U3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhD
aGFubmVsU2VsZWN0b3JBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlDaGFubmVsU2VsZWN0b3JBdHRyLCBBbmlt
YXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OnNjYWxlQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotfQotCiBQYXNzUmVmUHRyPEZpbHRl
ckVmZmVjdD4gU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3Qq
IGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAkocmV2
aXNpb24gOTA1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDE3ICs3OCwxNSBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0
dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsK
IAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5J
TUFURURfU1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMiwg
aW4yKQotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oWENoYW5uZWxTZWxlY3Rvciwg
eENoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSkKLSAgICBERUNMQVJFX0FOSU1B
VEVEX0VOVU1FUkFUSU9OKFlDaGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0b3IsIENoYW5u
ZWxTZWxlY3RvclR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU2NhbGUsIHNjYWxl
KQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjIsIGluMikKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9FTlVNRVJBVElPTihYQ2hhbm5lbFNlbGVjdG9yLCB4Q2hhbm5lbFNlbGVjdG9y
LCBDaGFubmVsU2VsZWN0b3JUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFU
SU9OKFlDaGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxTZWxlY3RvclR5
cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFNjYWxlLCBzY2FsZSkKKyAgICBF
TkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFk
b3dFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDIyIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklO
RV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVEcm9wU2hhZG93RWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0
ciwgSW4xLCBpbjEpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQsIFNWR05hbWVzOjpkeEF0dHIsIER4LCBkeCkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZH
RkVEcm9wU2hhZG93RWxlbWVudCwgU1ZHTmFtZXM6OmR5QXR0ciwgRHksIGR5KQotREVGSU5FX0FO
SU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRURyb3BTaGFkb3dFbGVtZW50LCBT
VkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwgc3RkRGV2aWF0aW9uWElkZW50aWZpZXIoKSwgU3Rk
RGV2aWF0aW9uWCwgc3RkRGV2aWF0aW9uWCkKLURFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQ
TEVfV1JBUFBFUlMoU1ZHRkVEcm9wU2hhZG93RWxlbWVudCwgU1ZHTmFtZXM6OnN0ZERldmlhdGlv
bkF0dHIsIHN0ZERldmlhdGlvbllJZGVudGlmaWVyKCksIFN0ZERldmlhdGlvblksIHN0ZERldmlh
dGlvblkpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklN
QVRFRF9TVFJJTkcoU1ZHRkVEcm9wU2hhZG93RWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4x
LCBpbjEpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRURyb3BTaGFkb3dFbGVtZW50
LCBTVkdOYW1lczo6ZHhBdHRyLCBEeCwgZHgpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihT
VkdGRURyb3BTaGFkb3dFbGVtZW50LCBTVkdOYW1lczo6ZHlBdHRyLCBEeSwgZHkpCisgICAgREVG
SU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRURyb3BTaGFkb3dFbGVt
ZW50LCBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwgc3RkRGV2aWF0aW9uWElkZW50aWZpZXIo
KSwgU3RkRGV2aWF0aW9uWCwgc3RkRGV2aWF0aW9uWCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVN
QkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQsIFNWR05hbWVzOjpz
dGREZXZpYXRpb25BdHRyLCBzdGREZXZpYXRpb25ZSWRlbnRpZmllcigpLCBTdGREZXZpYXRpb25Z
LCBzdGREZXZpYXRpb25ZKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lO
X1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVEcm9wU2hhZG93RWxlbWVudCkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjEpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkoZHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkoZHkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc3RkRGV2aWF0
aW9uWCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShzdGREZXZpYXRpb25Z
KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVT
CiAKIGlubGluZSBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpTVkdGRURyb3BTaGFkb3dFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkK
QEAgLTQ3LDYgKzU3LDcgQEAgaW5saW5lIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OlNWR0ZFRHJv
cAogICAgICwgbV9zdGREZXZpYXRpb25ZKDIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZH
TmFtZXM6OmZlRHJvcFNoYWRvd1RhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVz
Rm9yU1ZHRkVEcm9wU2hhZG93RWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQ+IFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xNDAsNDcgKzE1MSw2IEBA
IHZvaWQgU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3ZnQXR0cmlidXQKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRy
TmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplU3RkRGV2aWF0aW9uWCgp
OwotICAgICAgICBzeW5jaHJvbml6ZVN0ZERldmlhdGlvblkoKTsKLSAgICAgICAgc3luY2hyb25p
emVEeCgpOwotICAgICAgICBzeW5jaHJvbml6ZUR5KCk7Ci0gICAgICAgIHN5bmNocm9uaXplSW4x
KCk7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
OjpzdGREZXZpYXRpb25BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplU3RkRGV2aWF0aW9uWCgp
OwotICAgICAgICBzeW5jaHJvbml6ZVN0ZERldmlhdGlvblkoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmR4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUR4KCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmR5
QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUR5KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQogUGFzc1JlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRl
ckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSB0aGlzLT5yZW5kZXJlcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9w
U2hhZG93RWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRURyb3BTaGFkb3dFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDE4ICszOSwxOCBA
QCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKICAgICAKICAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBzdGREZXZpYXRpb25YSWRlbnRpZmllcigpOwogICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIHN0ZERldmlhdGlvbllJZGVudGlmaWVyKCk7CiAgICAgCi0gICAgLy8gQW5pbWF0
ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4x
LCBpbjEpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoRHgsIGR4KQotICAgIERFQ0xBUkVf
QU5JTUFURURfTlVNQkVSKER5LCBkeSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihTdGRE
ZXZpYXRpb25YLCBzdGREZXZpYXRpb25YKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFN0
ZERldmlhdGlvblksIHN0ZERldmlhdGlvblkpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfU1RSSU5HKEluMSwgaW4xKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihEeCwg
ZHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKER5LCBkeSkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9OVU1CRVIoU3RkRGV2aWF0aW9uWCwgc3RkRGV2aWF0aW9uWCkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3RkRGV2aWF0aW9uWSwgc3RkRGV2aWF0aW9uWSkK
KyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogICAgIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDE5ICs3NCw2IEBAIFBhc3NSZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRUZsb29kRWxlbWUKICAgICByZXR1cm4gRkVGbG9vZDo6Y3JlYXRlKGZp
bHRlciwgY29sb3IsIG9wYWNpdHkpOwogfQogCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYg
U1ZHRkVGbG9vZEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVGbG9vZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKSk7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJM
RShGSUxURVJTKQotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVGbG9vZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVGbG9vZEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVGbG9vZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsNiBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIFNWR0ZFRmxvb2RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVj
dEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSk7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciosIEZpbHRlciopOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MiwxNSArMzIsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9w
ZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQotREVGSU5FX0FOSU1BVEVEX05V
TUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQsIFNWR05hbWVz
OjpzdGREZXZpYXRpb25BdHRyLCBzdGREZXZpYXRpb25YSWRlbnRpZmllcigpLCBTdGREZXZpYXRp
b25YLCBzdGREZXZpYXRpb25YKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQ
UEVSUyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQsIFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRy
LCBzdGREZXZpYXRpb25ZSWRlbnRpZmllcigpLCBTdGREZXZpYXRpb25ZLCBzdGREZXZpYXRpb25Z
KQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURf
U1RSSU5HKFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4xLCBp
bjEpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRUdh
dXNzaWFuQmx1ckVsZW1lbnQsIFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRyLCBzdGREZXZpYXRp
b25YSWRlbnRpZmllcigpLCBTdGREZXZpYXRpb25YLCBzdGREZXZpYXRpb25YKQorICAgIERFRklO
RV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50LCBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwgc3RkRGV2aWF0aW9uWUlkZW50aWZpZXIo
KSwgU3RkRGV2aWF0aW9uWSwgc3RkRGV2aWF0aW9uWSkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJP
UEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjEp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc3RkRGV2aWF0aW9uWCkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShzdGREZXZpYXRpb25ZKQorICAgIFJF
R0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGlu
ZSBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlR2F1c3NpYW5CbHVyVGFnKSk7CisgICAg
cmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQoKTsK
IH0KIAogUGFzc1JlZlB0cjxTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ+IFNWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKQEAgLTExOSw1MCArMTI4LDYgQEAgdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQ6OnN2Z0F0dHJpYgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewot
ICAgICAgICBzeW5jaHJvbml6ZVN0ZERldmlhdGlvblgoKTsKLSAgICAgICAgc3luY2hyb25pemVT
dGREZXZpYXRpb25ZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRy
TmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0
cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplU3RkRGV2aWF0aW9uWCgpOwotICAgICAgICBzeW5jaHJv
bml6ZVN0ZERldmlhdGlvblkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
LQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAs
ICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9p
ZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcp
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6c3RkRGV2aWF0
aW9uQXR0ciwgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7Ci19Ci0KIFBhc3NSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVj
dCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCShyZXZpc2lv
biA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTggKzQwLDE2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVh
bCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciosIEZpbHRlciopOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3RkRGV2aWF0
aW9uWElkZW50aWZpZXIoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdGREZXZp
YXRpb25ZSWRlbnRpZmllcigpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRp
b25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCi0gICAgREVDTEFSRV9B
TklNQVRFRF9OVU1CRVIoU3RkRGV2aWF0aW9uWCwgc3RkRGV2aWF0aW9uWCkKLSAgICBERUNMQVJF
X0FOSU1BVEVEX05VTUJFUihTdGREZXZpYXRpb25ZLCBzdGREZXZpYXRpb25ZKQorICAgIEJFR0lO
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX05VTUJFUihTdGREZXZpYXRpb25YLCBzdGREZXZpYXRpb25YKQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX05VTUJFUihTdGREZXZpYXRpb25ZLCBzdGREZXZpYXRpb25ZKQorICAg
IEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAkocmV2
aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxNSArMzksMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1BS
RVNFUlZFQVNQRUNUUkFUSU8oU1ZHRkVJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFz
cGVjdFJhdGlvQXR0ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykK
LURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVJbWFnZUVsZW1lbnQsIFhMaW5rTmFtZXM6Omhy
ZWZBdHRyLCBIcmVmLCBocmVmKQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHRkVJbWFnZUVs
ZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklO
RV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNU
UkFUSU8oU1ZHRkVJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0
ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICBERUZJTkVf
QU5JTUFURURfU1RSSU5HKFNWR0ZFSW1hZ2VFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwg
SHJlZiwgaHJlZikKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdGRUltYWdlRWxlbWVu
dCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorRU5EX0RFRklORV9BTklN
QVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZH
RkVJbWFnZUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocHJl
c2VydmVBc3BlY3RSYXRpbykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSho
cmVmKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVE
X1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZFSW1hZ2VFbGVtZW50OjpTVkdGRUltYWdlRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAg
OiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQp
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlSW1hZ2VUYWcpKTsKKyAgICBy
ZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFSW1hZ2VFbGVtZW50KCk7CiB9CiAKIFBh
c3NSZWZQdHI8U1ZHRkVJbWFnZUVsZW1lbnQ+IFNWR0ZFSW1hZ2VFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTM4LDU0
ICsxNDcsNiBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYg
KGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVQcmVzZXJ2ZUFz
cGVjdFJhdGlvKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICBzeW5jaHJv
bml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6
c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9ICAg
Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplUHJlc2VydmVBc3BlY3RSYXRpbygpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFSW1hZ2VF
bGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwot
fQotCi12b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0
ciwgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQog
dm9pZCBTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQog
ewogICAgIGlmICghaW5Eb2N1bWVudCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
SW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1h
Z2VFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
SW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDkgKzUxLDYgQEAgcHJpdmF0ZToK
ICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmly
dHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAg
dmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Uq
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhh
c2hTZXQ8S1VSTD4mKSBjb25zdDsKQEAgLTYxLDE0ICs1OCwxMSBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCByZXF1ZXN0SW1hZ2VSZXNvdXJjZSgpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkg
ZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFBy
ZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCi0KLSAgICAvLyBTVkdVUklS
ZWZlcmVuY2UKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQotCi0gICAg
Ly8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9P
TEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRUltYWdlRWxlbWVu
dCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZl
QXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfU1RSSU5HKEhyZWYsIGhyZWYpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAg
IEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZEltYWdlPiBtX2NhY2hlZEltYWdlOwogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4g
bV90YXJnZXRJbWFnZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50
LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwyMiArMzYsMzcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FO
SU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OmF6aW11dGhBdHRyLCBB
emltdXRoLCBhemltdXRoKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVu
dCwgU1ZHTmFtZXM6OmVsZXZhdGlvbkF0dHIsIEVsZXZhdGlvbiwgZWxldmF0aW9uKQotREVGSU5F
X0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4
KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OnlB
dHRyLCBZLCB5KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZH
TmFtZXM6OnpBdHRyLCBaLCB6KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxl
bWVudCwgU1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIsIFBvaW50c0F0WCwgcG9pbnRzQXRYKQotREVG
SU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OnBvaW50c0F0
WUF0dHIsIFBvaW50c0F0WSwgcG9pbnRzQXRZKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdG
RUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OnBvaW50c0F0WkF0dHIsIFBvaW50c0F0WiwgcG9pbnRz
QXRaKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6
OnNwZWN1bGFyRXhwb25lbnRBdHRyLCBTcGVjdWxhckV4cG9uZW50LCBzcGVjdWxhckV4cG9uZW50
KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6Omxp
bWl0aW5nQ29uZUFuZ2xlQXR0ciwgTGltaXRpbmdDb25lQW5nbGUsIGxpbWl0aW5nQ29uZUFuZ2xl
KQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURf
TlVNQkVSKFNWR0ZFTGlnaHRFbGVtZW50LCBTVkdOYW1lczo6YXppbXV0aEF0dHIsIEF6aW11dGgs
IGF6aW11dGgpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwg
U1ZHTmFtZXM6OmVsZXZhdGlvbkF0dHIsIEVsZXZhdGlvbiwgZWxldmF0aW9uKQorICAgIERFRklO
RV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwg
eCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFTGlnaHRFbGVtZW50LCBTVkdOYW1l
czo6eUF0dHIsIFksIHkpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxl
bWVudCwgU1ZHTmFtZXM6OnpBdHRyLCBaLCB6KQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIo
U1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjpwb2ludHNBdFhBdHRyLCBQb2ludHNBdFgsIHBv
aW50c0F0WCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFTGlnaHRFbGVtZW50LCBT
VkdOYW1lczo6cG9pbnRzQXRZQXR0ciwgUG9pbnRzQXRZLCBwb2ludHNBdFkpCisgICAgREVGSU5F
X0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OnBvaW50c0F0WkF0
dHIsIFBvaW50c0F0WiwgcG9pbnRzQXRaKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZH
RkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciwgU3BlY3VsYXJF
eHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNW
R0ZFTGlnaHRFbGVtZW50LCBTVkdOYW1lczo6bGltaXRpbmdDb25lQW5nbGVBdHRyLCBMaW1pdGlu
Z0NvbmVBbmdsZSwgbGltaXRpbmdDb25lQW5nbGUpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRUxpZ2h0RWxl
bWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShhemltdXRoKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGVsZXZhdGlvbikKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVE
X1BST1BFUlRZKHkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeikKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShwb2ludHNBdFgpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocG9pbnRzQXRZKQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKHBvaW50c0F0WikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShzcGVjdWxhckV4cG9uZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVE
X1BST1BFUlRZKGxpbWl0aW5nQ29uZUFuZ2xlKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BF
UlRJRVMKIAogU1ZHRkVMaWdodEVsZW1lbnQ6OlNWR0ZFTGlnaHRFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0VsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3NwZWN1bGFyRXhwb25lbnQoMSkKIHsKKyAgICBy
ZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFTGlnaHRFbGVtZW50KCk7CiB9CiAKIFNW
R0ZFTGlnaHRFbGVtZW50KiBTVkdGRUxpZ2h0RWxlbWVudDo6ZmluZExpZ2h0RWxlbWVudChjb25z
dCBTVkdFbGVtZW50KiBzdmdFbGVtZW50KQpAQCAtMTk0LDEwMiArMjA5LDYgQEAgdm9pZCBTVkdG
RUxpZ2h0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCi12b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFt
ZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplQXppbXV0aCgpOwotICAgICAgICBzeW5jaHJvbml6
ZUVsZXZhdGlvbigpOwotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgc3luY2hyb25p
emVZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWigpOwotICAgICAgICBzeW5jaHJvbml6ZVBvaW50
c0F0WCgpOwotICAgICAgICBzeW5jaHJvbml6ZVBvaW50c0F0WSgpOwotICAgICAgICBzeW5jaHJv
bml6ZVBvaW50c0F0WigpOwotICAgICAgICBzeW5jaHJvbml6ZVNwZWN1bGFyRXhwb25lbnQoKTsK
LSAgICAgICAgc3luY2hyb25pemVMaW1pdGluZ0NvbmVBbmdsZSgpOwotICAgICAgICBTVkdFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAg
IFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIAotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6YXppbXV0aEF0
dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVBemltdXRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmVsZXZhdGlvbkF0dHIpIHsKLSAg
ICAgICAgc3luY2hyb25pemVFbGV2YXRpb24oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25p
emVYKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp6QXR0cikgewotICAgICAg
ICBzeW5jaHJvbml6ZVooKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXRYQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVBv
aW50c0F0WCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjpwb2ludHNBdFlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplUG9pbnRzQXRZ
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnBvaW50c0F0WkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVQb2ludHNBdFooKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3Bl
Y3VsYXJFeHBvbmVudEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVTcGVjdWxhckV4cG9uZW50
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUxpbWl0aW5n
Q29uZUFuZ2xlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFTGlnaHRFbGVt
ZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQot
Ci12b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjphemltdXRoQXR0ciwgQW5pbWF0ZWRO
dW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZWxl
dmF0aW9uQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZE51bWJlcik7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp6QXR0ciwgQW5pbWF0
ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
cG9pbnRzQXRYQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChTVkdOYW1lczo6cG9pbnRzQXRZQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cG9pbnRzQXRaQXR0ciwg
QW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0ciwg
QW5pbWF0ZWROdW1iZXIpOwotfQotCiB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0
ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgU1ZHRWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hp
bGRDb3VudERlbHRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5o
CShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwyMiArNDIsMjAgQEAgcHJpdmF0ZToKICAgICBib29s
IGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0g
ZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50
IGNoaWxkQ291bnREZWx0YSA9IDApOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFy
YXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQXppbXV0aCwgYXppbXV0aCkKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihFbGV2YXRpb24sIGVsZXZhdGlvbikKLSAgICBERUNM
QVJFX0FOSU1BVEVEX05VTUJFUihYLCB4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFks
IHkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoWiwgeikKLSAgICBERUNMQVJFX0FOSU1B
VEVEX05VTUJFUihQb2ludHNBdFgsIHBvaW50c0F0WCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05V
TUJFUihQb2ludHNBdFksIHBvaW50c0F0WSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihQ
b2ludHNBdFosIHBvaW50c0F0WikKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihTcGVjdWxh
ckV4cG9uZW50LCBzcGVjdWxhckV4cG9uZW50KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVS
KExpbWl0aW5nQ29uZUFuZ2xlLCBsaW1pdGluZ0NvbmVBbmdsZSkKKyAgICBCRUdJTl9ERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVMaWdodEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfTlVNQkVSKEF6aW11dGgsIGF6aW11dGgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfTlVNQkVSKEVsZXZhdGlvbiwgZWxldmF0aW9uKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X05VTUJFUihYLCB4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihZLCB5KQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihaLCB6KQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX05VTUJFUihQb2ludHNBdFgsIHBvaW50c0F0WCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9OVU1CRVIoUG9pbnRzQXRZLCBwb2ludHNBdFkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
TlVNQkVSKFBvaW50c0F0WiwgcG9pbnRzQXRaKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05V
TUJFUihTcGVjdWxhckV4cG9uZW50LCBzcGVjdWxhckV4cG9uZW50KQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX05VTUJFUihMaW1pdGluZ0NvbmVBbmdsZSwgbGltaXRpbmdDb25lQW5nbGUpCisg
ICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDE5ICs2MCw2IEBAIFBhc3NSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBTVkdGRU1lcmdlRWxlbWUKICAgICByZXR1cm4gZWZmZWN0LnJlbGVhc2UoKTsKIH0KIAot
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFTWVyZ2VFbGVtZW50OjphdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAg
IHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0ZFTWVy
Z2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkpOwotfQotCiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQs
NiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0ZFTWVyZ2VFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogfTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwxOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFU
RURfU1RSSU5HKFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4xLCBp
bjEpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRF
RF9TVFJJTkcoU1ZHRkVNZXJnZU5vZGVFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGlu
MSkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklN
QVRFRF9QUk9QRVJUSUVTKFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NB
TF9BTklNQVRFRF9QUk9QRVJUWShpbjEpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElF
UwogCiBpbmxpbmUgU1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpTVkdGRU1lcmdlTm9kZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDog
U1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShT
VkdOYW1lczo6ZmVNZXJnZU5vZGVUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGll
c0ZvclNWR0ZFTWVyZ2VOb2RlRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFTWVyZ2VO
b2RlRWxlbWVudD4gU1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtOTQsMzggKzEwMCw2IEBAIHZv
aWQgU1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpzdmdBdHRyaWJ1dGUKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFTWVyZ2VOb2Rl
RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsK
LX0KLQotdm9pZCBTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpCi17Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKS5zZXQoU1ZHTmFt
ZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotfQotCi12b2lkIFNWR0ZFTWVyZ2VOb2RlRWxl
bWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
LXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6
ZUluMSgpOwotICAgICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1l
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHko
YXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfSAgIAotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCiB9CiAK
ICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVy
Z2VOb2RlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1l
cmdlTm9kZUVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEyICszNywxMCBA
QCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRp
b25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCisgICAgQkVHSU5fREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDE3ICszMSwyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5H
KFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQotREVG
SU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQsIFNWR05hbWVz
OjpvcGVyYXRvckF0dHIsIF9vcGVyYXRvciwgX29wZXJhdG9yLCBNb3JwaG9sb2d5T3BlcmF0b3JU
eXBlKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRU1vcnBo
b2xvZ3lFbGVtZW50LCBTVkdOYW1lczo6cmFkaXVzQXR0ciwgcmFkaXVzWElkZW50aWZpZXIoKSwg
UmFkaXVzWCwgcmFkaXVzWCkKLURFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBF
UlMoU1ZHRkVNb3JwaG9sb2d5RWxlbWVudCwgU1ZHTmFtZXM6OnJhZGl1c0F0dHIsIHJhZGl1c1lJ
ZGVudGlmaWVyKCksIFJhZGl1c1ksIHJhZGl1c1kpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJP
UEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4xLCBpbjEpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1F
UkFUSU9OKFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQsIFNWR05hbWVzOjpvcGVyYXRvckF0dHIsIF9v
cGVyYXRvciwgX29wZXJhdG9yLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlKQorICAgIERFRklORV9B
TklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVNb3JwaG9sb2d5RWxlbWVudCwg
U1ZHTmFtZXM6OnJhZGl1c0F0dHIsIHJhZGl1c1hJZGVudGlmaWVyKCksIFJhZGl1c1gsIHJhZGl1
c1gpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRU1v
cnBob2xvZ3lFbGVtZW50LCBTVkdOYW1lczo6cmFkaXVzQXR0ciwgcmFkaXVzWUlkZW50aWZpZXIo
KSwgUmFkaXVzWSwgcmFkaXVzWSkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitC
RUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKF9vcGVyYXRvcikKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWShyYWRpdXNYKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKHJhZGl1c1kpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1B
VEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OlNWR0ZFTW9y
cGhvbG9neUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05h
bWUsIGRvY3VtZW50KQogICAgICwgbV9fb3BlcmF0b3IoRkVNT1JQSE9MT0dZX09QRVJBVE9SX0VS
T0RFKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZU1vcnBob2xvZ3lUYWcp
KTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFTW9ycGhvbG9neUVsZW1l
bnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRU1vcnBob2xvZ3lFbGVtZW50PiBTVkdGRU1vcnBo
b2xvZ3lFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQpAQCAtMTQ1LDU3ICsxNTUsNiBAQCB2b2lkIFNWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQg
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewot
ICAgICAgICBzeW5jaHJvbml6ZV9vcGVyYXRvcigpOwotICAgICAgICBzeW5jaHJvbml6ZUluMSgp
OwotICAgICAgICBzeW5jaHJvbml6ZVJhZGl1c1goKTsKLSAgICAgICAgc3luY2hyb25pemVSYWRp
dXNZKCk7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3lu
Y2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5h
bWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjpvcGVyYXRvckF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVfb3BlcmF0b3IoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5B
dHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJhZGl1c0F0dHIpIHsKLSAgICAgICAg
c3luY2hyb25pemVSYWRpdXNYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUmFkaXVzWSgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjphdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwot
ICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0ZF
TW9ycGhvbG9neUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0g
ICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
ID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6b3BlcmF0b3JBdHRyLCBBbmlt
YXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OnJhZGl1c0F0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOwotfQotCiBQ
YXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6YnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmls
dGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAkocmV2
aXNpb24gOTA1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCwxOSArNzAsMTcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCBi
b29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVy
RWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiByYWRpdXNYSWRlbnRpZmllcigpOwogICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIHJhZGl1c1lJZGVudGlmaWVyKCk7CiAKLSAgICAvLyBBbmltYXRlZCBw
cm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGlu
MSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKF9vcGVyYXRvciwgX29wZXJhdG9y
LCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFJh
ZGl1c1gsIHJhZGl1c1gpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoUmFkaXVzWSwgcmFk
aXVzWSkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oX29wZXJhdG9yLCBfb3BlcmF0b3Is
IE1vcnBob2xvZ3lPcGVyYXRvclR5cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVS
KFJhZGl1c1gsIHJhZGl1c1gpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFJhZGl1
c1ksIHJhZGl1c1kpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zm
c2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zm
c2V0RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFT2Zmc2V0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE1ICszMSwyNCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25z
Ci1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFT2Zmc2V0RWxlbWVudCwgU1ZHTmFtZXM6Omlu
QXR0ciwgSW4xLCBpbjEpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFT2Zmc2V0RWxlbWVu
dCwgU1ZHTmFtZXM6OmR4QXR0ciwgRHgsIGR4KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdG
RU9mZnNldEVsZW1lbnQsIFNWR05hbWVzOjpkeUF0dHIsIER5LCBkeSkKK0JFR0lOX0RFRklORV9B
TklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRU9mZnNl
dEVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklORV9BTklNQVRF
RF9OVU1CRVIoU1ZHRkVPZmZzZXRFbGVtZW50LCBTVkdOYW1lczo6ZHhBdHRyLCBEeCwgZHgpCisg
ICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRU9mZnNldEVsZW1lbnQsIFNWR05hbWVzOjpk
eUF0dHIsIER5LCBkeSkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9S
RUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFT2Zmc2V0RWxlbWVudCkKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoZHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
ZHkpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJ
RVMKIAogaW5saW5lIFNWR0ZFT2Zmc2V0RWxlbWVudDo6U1ZHRkVPZmZzZXRFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVPZmZzZXRUYWcpKTsKKyAgICByZWdpc3Rl
ckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFT2Zmc2V0RWxlbWVudCgpOwogfQogCiBQYXNzUmVm
UHRyPFNWR0ZFT2Zmc2V0RWxlbWVudD4gU1ZHRkVPZmZzZXRFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTAxLDU1ICsx
MTAsNiBAQCB2b2lkIFNWR0ZFT2Zmc2V0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVPZmZzZXRFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChh
dHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRHgoKTsKLSAgICAg
ICAgc3luY2hyb25pemVEeSgpOwotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHko
YXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZHhBdHRyKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplRHgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZHlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRHko
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIFNWR0ZFT2Zmc2V0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6ZHhBdHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpkeUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsK
LX0KLQogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAg
RmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgp
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgJKHJldmlzaW9u
IDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCwxNSArMzgsMTMgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9y
dGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5j
aHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmls
dGVyKik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNM
QVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJF
UihEeCwgZHgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoRHksIGR5KQorICAgIEJFR0lO
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRU9mZnNldEVsZW1lbnQpCisgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX05VTUJFUihEeCwgZHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKER5LCBk
eSkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzYsMTMgKzM2LDI0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQg
cHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4xLCBpbjEpCi1ERUZJTkVfQU5J
TUFURURfTlVNQkVSKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpzcGVj
dWxhckNvbnN0YW50QXR0ciwgU3BlY3VsYXJDb25zdGFudCwgc3BlY3VsYXJDb25zdGFudCkKLURF
RklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFt
ZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyLCBTcGVjdWxhckV4cG9uZW50LCBzcGVjdWxhckV4cG9u
ZW50KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50
LCBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0ciwgU3VyZmFjZVNjYWxlLCBzdXJmYWNlU2NhbGUp
Ci1ERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwga2VybmVsVW5p
dExlbmd0aFhJZGVudGlmaWVyKCksIEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3Ro
WCkKLURFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBrZXJuZWxV
bml0TGVuZ3RoWUlkZW50aWZpZXIoKSwgS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5n
dGhZKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFU
RURfU1RSSU5HKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIs
IEluMSwgaW4xKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudCwgU1ZHTmFtZXM6OnNwZWN1bGFyQ29uc3RhbnRBdHRyLCBTcGVjdWxhckNvbnN0
YW50LCBzcGVjdWxhckNvbnN0YW50KQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyLCBT
cGVjdWxhckV4cG9uZW50LCBzcGVjdWxhckV4cG9uZW50KQorICAgIERFRklORV9BTklNQVRFRF9O
VU1CRVIoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OnN1cmZhY2VTY2Fs
ZUF0dHIsIFN1cmZhY2VTY2FsZSwgc3VyZmFjZVNjYWxlKQorICAgIERFRklORV9BTklNQVRFRF9O
VU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZH
TmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBrZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIo
KSwgS2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhYKQorICAgIERFRklORV9BTklN
QVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dCwgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBrZXJuZWxVbml0TGVuZ3RoWUlkZW50
aWZpZXIoKSwgS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZKQorRU5EX0RFRklO
RV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShpbjEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
c3BlY3VsYXJDb25zdGFudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShz
cGVjdWxhckV4cG9uZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHN1
cmZhY2VTY2FsZSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrZXJuZWxV
bml0TGVuZ3RoWCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrZXJuZWxV
bml0TGVuZ3RoWSkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCitFTkRfUkVHSVNURVJfQU5JTUFURURf
UFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6U1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXModGFnTmFtZSwgZG9jdW1lbnQpCkBAIC01MSw2ICs2Miw3IEBAIGlubGluZSBTVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50OjpTVkcKICAgICAsIG1fc3VyZmFjZVNjYWxlKDEpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlU3BlY3VsYXJMaWdodGluZ1RhZykpOworICAg
IHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ+IFNWR0ZF
U3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0yMDQsNzEgKzIxNiw2IEBAIHZvaWQgU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6bGlnaHQKICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFu
Z2VkKGF0dHJOYW1lKTsKIH0KIAotdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Ojpz
eW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAg
IGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7
Ci0gICAgICAgIHN5bmNocm9uaXplU3VyZmFjZVNjYWxlKCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
U3BlY3VsYXJDb25zdGFudCgpOwotICAgICAgICBzeW5jaHJvbml6ZVNwZWN1bGFyRXhwb25lbnQo
KTsKLSAgICAgICAgc3luY2hyb25pemVLZXJuZWxVbml0TGVuZ3RoWCgpOwotICAgICAgICBzeW5j
aHJvbml6ZUtlcm5lbFVuaXRMZW5ndGhZKCk7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1l
KSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNo
cm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVJ
bjEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6c3VyZmFjZVNjYWxlQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVN1cmZhY2VTY2Fs
ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjpzcGVjdWxhckNvbnN0YW50QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVNwZWN1bGFy
Q29uc3RhbnQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVT
cGVjdWxhckV4cG9uZW50KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplS2VybmVsVW5pdExlbmd0aFgoKTsKLSAgICAgICAgc3luY2hyb25pemVLZXJuZWxVbml0
TGVuZ3RoWSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwOwotfQotCi12b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKLQotICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Zmls
bFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0
ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6c3BlY3VsYXJDb25zdGFudEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRy
LCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwgQW5p
bWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7Ci19Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBm
aWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0
MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCShyZXZpc2lv
biA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDIxICs0MiwxOSBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFs
IGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpOwogICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigp
OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9B
TklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3Bl
Y3VsYXJDb25zdGFudCwgc3BlY3VsYXJDb25zdGFudCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05V
TUJFUihTcGVjdWxhckV4cG9uZW50LCBzcGVjdWxhckV4cG9uZW50KQotICAgIERFQ0xBUkVfQU5J
TUFURURfTlVNQkVSKFN1cmZhY2VTY2FsZSwgc3VyZmFjZVNjYWxlKQotICAgIERFQ0xBUkVfQU5J
TUFURURfTlVNQkVSKEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWCkKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0
aFkpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4x
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihTcGVjdWxhckNvbnN0YW50LCBzcGVj
dWxhckNvbnN0YW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihTcGVjdWxhckV4
cG9uZW50LCBzcGVjdWxhckV4cG9uZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJF
UihTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9O
VU1CRVIoS2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhYKQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0aFkp
CisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAko
cmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURf
U1RSSU5HKFNWR0ZFVGlsZUVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorQkVH
SU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5H
KFNWR0ZFVGlsZUVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorRU5EX0RFRklO
RV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHRkVUaWxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShpbjEpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BF
UlRJRVMKIAogaW5saW5lIFNWR0ZFVGlsZUVsZW1lbnQ6OlNWR0ZFVGlsZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZVRpbGVUYWcpKTsKKyAgICByZWdpc3RlckFu
aW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFVGlsZUVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxT
VkdGRVRpbGVFbGVtZW50PiBTVkdGRVRpbGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtODYsNDEgKzkzLDYgQEAgdm9p
ZCBTVkdGRVRpbGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZwogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogfQogCi12b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFu
eVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1l
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVU
aWxlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cDsKLX0KLQotdm9pZCBTVkdGRVRpbGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAg
ICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3Ry
aW5nKTsKLX0KLQogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFVGlsZUVsZW1lbnQ6OmJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewog
ICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChp
bjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgJKHJldmlzaW9u
IDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsMTMgKzM3LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRl
ciopOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFS
RV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR0ZFVGlsZUVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RS
SU5HKEluMSwgaW4xKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1
cmJ1bGVuY2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVUdXJidWxlbmNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwx
MyArMzAsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0
eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhT
VkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0dHIsIGJhc2VG
cmVxdWVuY3lYSWRlbnRpZmllcigpLCBCYXNlRnJlcXVlbmN5WCwgYmFzZUZyZXF1ZW5jeVgpCi1E
RUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQsIFNWR05hbWVzOjpiYXNlRnJlcXVlbmN5QXR0ciwgYmFzZUZyZXF1ZW5jeVlJZGVudGlm
aWVyKCksIEJhc2VGcmVxdWVuY3lZLCBiYXNlRnJlcXVlbmN5WSkKLURFRklORV9BTklNQVRFRF9J
TlRFR0VSKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIFNWR05hbWVzOjpudW1PY3RhdmVzQXR0ciwg
TnVtT2N0YXZlcywgbnVtT2N0YXZlcykKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OnNlZWRBdHRyLCBTZWVkLCBzZWVkKQotREVGSU5FX0FO
SU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIFNWR05hbWVzOjpzdGl0
Y2hUaWxlc0F0dHIsIFN0aXRjaFRpbGVzLCBzdGl0Y2hUaWxlcywgU1ZHU3RpdGNoT3B0aW9ucykK
LURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdO
YW1lczo6dHlwZUF0dHIsIFR5cGUsIHR5cGUsIFR1cmJ1bGVuY2VUeXBlKQorQkVHSU5fREVGSU5F
X0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExF
X1dSQVBQRVJTKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIFNWR05hbWVzOjpiYXNlRnJlcXVlbmN5
QXR0ciwgYmFzZUZyZXF1ZW5jeVhJZGVudGlmaWVyKCksIEJhc2VGcmVxdWVuY3lYLCBiYXNlRnJl
cXVlbmN5WCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQsIFNWR05hbWVzOjpiYXNlRnJlcXVlbmN5QXR0ciwgYmFzZUZy
ZXF1ZW5jeVlJZGVudGlmaWVyKCksIEJhc2VGcmVxdWVuY3lZLCBiYXNlRnJlcXVlbmN5WSkKKyAg
ICBERUZJTkVfQU5JTUFURURfSU5URUdFUihTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1l
czo6bnVtT2N0YXZlc0F0dHIsIE51bU9jdGF2ZXMsIG51bU9jdGF2ZXMpCisgICAgREVGSU5FX0FO
SU1BVEVEX05VTUJFUihTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6c2VlZEF0dHIs
IFNlZWQsIHNlZWQpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQsIFNWR05hbWVzOjpzdGl0Y2hUaWxlc0F0dHIsIFN0aXRjaFRpbGVzLCBzdGl0
Y2hUaWxlcywgU1ZHU3RpdGNoT3B0aW9ucykKKyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJ
T04oU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OnR5cGVBdHRyLCBUeXBlLCB0eXBl
LCBUdXJidWxlbmNlVHlwZSkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJ
Tl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoYmFzZUZyZXF1ZW5jeVgpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoYmFzZUZyZXF1ZW5jeVkpCisgICAgUkVH
SVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkobnVtT2N0YXZlcykKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShzZWVkKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVE
X1BST1BFUlRZKHN0aXRjaFRpbGVzKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKHR5cGUpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BS
T1BFUlRJRVMKIAogaW5saW5lIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OlNWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRv
Y3VtZW50KQpAQCAtNDUsNiArNTYsNyBAQCBpbmxpbmUgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6
U1ZHRkVUdXJiCiAgICAgLCBtX3R5cGUoRkVUVVJCVUxFTkNFX1RZUEVfVFVSQlVMRU5DRSkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVUdXJidWxlbmNlVGFnKSk7CisgICAg
cmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRVR1cmJ1bGVuY2VFbGVtZW50KCk7CiB9
CiAKIFBhc3NSZWZQdHI8U1ZHRkVUdXJidWxlbmNlRWxlbWVudD4gU1ZHRkVUdXJidWxlbmNlRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKQEAgLTE2MCw3MSArMTcyLDYgQEAgdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50Ojpz
dmdBdHRyaWJ1dAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0ZFVHVy
YnVsZW5jZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAg
c3luY2hyb25pemVUeXBlKCk7Ci0gICAgICAgIHN5bmNocm9uaXplU3RpdGNoVGlsZXMoKTsKLSAg
ICAgICAgc3luY2hyb25pemVCYXNlRnJlcXVlbmN5WCgpOwotICAgICAgICBzeW5jaHJvbml6ZUJh
c2VGcmVxdWVuY3lZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplU2VlZCgpOwotICAgICAgICBzeW5j
aHJvbml6ZU51bU9jdGF2ZXMoKTsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0g
ICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQ
cm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplVHlwZSgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
OjpzdGl0Y2hUaWxlc0F0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVTdGl0Y2hUaWxlcygpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpi
YXNlRnJlcXVlbmN5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUJhc2VGcmVxdWVuY3lYKCk7
Ci0gICAgICAgIHN5bmNocm9uaXplQmFzZUZyZXF1ZW5jeVkoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c2VlZEF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVTZWVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om51bU9jdGF2ZXNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplTnVtT2N0YXZlcygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRVR1cmJ1
bGVuY2VFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwOwotfQotCi12b2lkIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKLQotICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbFBhc3Nl
ZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmJhc2VGcmVxdWVu
Y3lBdHRyLCBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om51bU9jdGF2ZXNBdHRyLCBBbmltYXRlZEludGVn
ZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6c2VlZEF0
dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OnN0aXRjaFRpbGVzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp0eXBlQXR0ciwgQW5pbWF0ZWRF
bnVtZXJhdGlvbik7Ci19Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAg
ICAgaWYgKGJhc2VGcmVxdWVuY3lYKCkgPCAwIHx8IGJhc2VGcmVxdWVuY3lZKCkgPCAwKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCShyZXZpc2lv
biA5MDU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNSwyMSArMTA1LDE5IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgYm9v
bCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCiAgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYmFzZUZyZXF1ZW5jeVhJZGVudGlmaWVyKCk7CiAg
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYmFzZUZyZXF1ZW5jeVlJZGVudGlmaWVyKCk7
CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FO
SU1BVEVEX05VTUJFUihCYXNlRnJlcXVlbmN5WCwgYmFzZUZyZXF1ZW5jeVgpCi0gICAgREVDTEFS
RV9BTklNQVRFRF9OVU1CRVIoQmFzZUZyZXF1ZW5jeVksIGJhc2VGcmVxdWVuY3lZKQotICAgIERF
Q0xBUkVfQU5JTUFURURfSU5URUdFUihOdW1PY3RhdmVzLCBudW1PY3RhdmVzKQotICAgIERFQ0xB
UkVfQU5JTUFURURfTlVNQkVSKFNlZWQsIHNlZWQpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVN
RVJBVElPTihTdGl0Y2hUaWxlcywgc3RpdGNoVGlsZXMsIFNWR1N0aXRjaE9wdGlvbnMpCi0gICAg
REVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihUeXBlLCB0eXBlLCBUdXJidWxlbmNlVHlwZSkK
KyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVUdXJidWxlbmNlRWxl
bWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQmFzZUZyZXF1ZW5jeVgsIGJh
c2VGcmVxdWVuY3lYKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihCYXNlRnJlcXVl
bmN5WSwgYmFzZUZyZXF1ZW5jeVkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihO
dW1PY3RhdmVzLCBudW1PY3RhdmVzKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihT
ZWVkLCBzZWVkKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFN0aXRjaFRp
bGVzLCBzdGl0Y2hUaWxlcywgU1ZHU3RpdGNoT3B0aW9ucykKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9FTlVNRVJBVElPTihUeXBlLCB0eXBlLCBUdXJidWxlbmNlVHlwZSkKKyAgICBFTkRfREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzYsMjMgKzM2LDM0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5p
bWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihT
VkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyLCBGaWx0ZXJVbml0cywg
ZmlsdGVyVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCi1ERUZJTkVfQU5JTUFURURf
RU5VTUVSQVRJT04oU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OnByaW1pdGl2ZVVuaXRzQXR0
ciwgUHJpbWl0aXZlVW5pdHMsIHByaW1pdGl2ZVVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlKQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6
eEF0dHIsIFgsIHgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlckVsZW1lbnQsIFNW
R05hbWVzOjp5QXR0ciwgWSwgeSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRmlsdGVyRWxl
bWVudCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgV2lkdGgsIHdpZHRoKQotREVGSU5FX0FOSU1BVEVE
X0xFTkdUSChTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBo
ZWlnaHQpCi1ERUZJTkVfQU5JTUFURURfSU5URUdFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGaWx0
ZXJFbGVtZW50LCBTVkdOYW1lczo6ZmlsdGVyUmVzQXR0ciwgZmlsdGVyUmVzWElkZW50aWZpZXIo
KSwgRmlsdGVyUmVzWCwgZmlsdGVyUmVzWCkKLURFRklORV9BTklNQVRFRF9JTlRFR0VSX01VTFRJ
UExFX1dSQVBQRVJTKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpmaWx0ZXJSZXNBdHRyLCBm
aWx0ZXJSZXNZSWRlbnRpZmllcigpLCBGaWx0ZXJSZXNZLCBmaWx0ZXJSZXNZKQotREVGSU5FX0FO
SU1BVEVEX1NUUklORyhTVkdGaWx0ZXJFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJl
ZiwgaHJlZikKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05h
bWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9Q
Uk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZpbHRlckVsZW1l
bnQsIFNWR05hbWVzOjpmaWx0ZXJVbml0c0F0dHIsIEZpbHRlclVuaXRzLCBmaWx0ZXJVbml0cywg
U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJ
T04oU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OnByaW1pdGl2ZVVuaXRzQXR0ciwgUHJpbWl0
aXZlVW5pdHMsIHByaW1pdGl2ZVVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQorICAg
IERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRy
LCBYLCB4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRmlsdGVyRWxlbWVudCwgU1ZH
TmFtZXM6OnlBdHRyLCBZLCB5KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRmlsdGVy
RWxlbWVudCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgV2lkdGgsIHdpZHRoKQorICAgIERFRklORV9B
TklNQVRFRF9MRU5HVEgoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhl
aWdodCwgaGVpZ2h0KQorICAgIERFRklORV9BTklNQVRFRF9JTlRFR0VSX01VTFRJUExFX1dSQVBQ
RVJTKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpmaWx0ZXJSZXNBdHRyLCBmaWx0ZXJSZXNY
SWRlbnRpZmllcigpLCBGaWx0ZXJSZXNYLCBmaWx0ZXJSZXNYKQorICAgIERFRklORV9BTklNQVRF
RF9JTlRFR0VSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpm
aWx0ZXJSZXNBdHRyLCBmaWx0ZXJSZXNZSWRlbnRpZmllcigpLCBGaWx0ZXJSZXNZLCBmaWx0ZXJS
ZXNZKQorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRmlsdGVyRWxlbWVudCwgWExpbmtO
YW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4o
U1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRy
LCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQor
RU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHRmlsdGVyRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShmaWx0ZXJVbml0cykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWShwcmltaXRpdmVVbml0cykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WSh4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHkpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkod2lkdGgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoaGVpZ2h0KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKGZpbHRlclJlc1gpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZmls
dGVyUmVzWSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShocmVmKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHRmlsdGVy
RWxlbWVudDo6U1ZHRmlsdGVyRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KQotICAgICwgU1ZHVVJJUmVmZXJlbmNlKCkKLSAgICAsIFNWR0xhbmdTcGFjZSgpCi0gICAg
LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKICAgICAsIG1fZmlsdGVyVW5pdHMoU1ZH
VW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKQogICAgICwgbV9wcmlt
aXRpdmVVbml0cyhTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpCiAg
ICAgLCBtX3goTGVuZ3RoTW9kZVdpZHRoLCAiLTEwJSIpCkBAIC02Myw2ICs3NCw3IEBAIGlubGlu
ZSBTVkdGaWx0ZXJFbGVtZW50OjpTVkdGaWx0ZXJFbGVtZW4KICAgICAvLyBTcGVjOiBJZiB0aGUg
eC95IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFs
dWUgb2YgIi0xMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIC8vIFNwZWM6IElmIHRoZSB3aWR0aC9o
ZWlnaHQgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2
YWx1ZSBvZiAiMTIwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZH
TmFtZXM6OmZpbHRlclRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZH
RmlsdGVyRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZpbHRlckVsZW1lbnQ+IFNWR0Zp
bHRlckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCkBAIC0xODksOTggKzIwMSw2IEBAIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmcKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCh0cnVlKTsK
IH0KIAotdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgp
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAg
ICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwot
ICAgICAgICBzeW5jaHJvbml6ZUZpbHRlclVuaXRzKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUHJp
bWl0aXZlVW5pdHMoKTsKLSAgICAgICAgc3luY2hyb25pemVGaWx0ZXJSZXNYKCk7Ci0gICAgICAg
IHN5bmNocm9uaXplRmlsdGVyUmVzWSgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIFNW
R1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFt
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikgewotICAgICAgICBz
eW5jaHJvbml6ZVkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aGVpZ2h0QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpmaWx0ZXJVbml0c0F0
dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVGaWx0ZXJVbml0cygpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwcmltaXRpdmVVbml0c0F0
dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVQcmltaXRpdmVVbml0cygpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpmaWx0ZXJSZXNBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplRmlsdGVyUmVzWCgpOwotICAgICAgICBzeW5jaHJvbml6
ZUZpbHRlclJlc1koKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAg
ICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBTVkdGaWx0ZXJFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0ZpbHRlckVsZW1lbnQ6OmZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpmaWx0ZXJVbml0c0F0dHIsIEFu
aW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6cHJpbWl0aXZlVW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExl
bmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0
ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpmaWx0ZXJSZXNBdHRy
LCBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQog
dm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJz
ZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50
RGVsdGEpCiB7CiAgICAgU1ZHU3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRC
eVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NCw5ICs1NCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxk
cmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFu
Z2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsK
IAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKik7CkBAIC02NiwyMSArNjMsMTggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBmaWx0ZXJSZXNYSWRlbnRpZmllcigpOwogICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIGZpbHRlclJlc1lJZGVudGlmaWVyKCk7CiAKLSAgICAvLyBBbmlt
YXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFU
SU9OKEZpbHRlclVuaXRzLCBmaWx0ZXJVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkK
LSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFByaW1pdGl2ZVVuaXRzLCBwcmltaXRp
dmVVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKLSAgICBERUNMQVJFX0FOSU1BVEVE
X0xFTkdUSChYLCB4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCi0gICAgREVD
TEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQotICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIKEhlaWdodCwgaGVpZ2h0KQotICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihGaWx0
ZXJSZXNYLCBmaWx0ZXJSZXNYKQotICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihGaWx0ZXJS
ZXNZLCBmaWx0ZXJSZXNZKQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9B
TklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVyRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9FTlVNRVJBVElPTihGaWx0ZXJVbml0cywgZmlsdGVyVW5pdHMsIFNWR1VuaXRUeXBlczo6
U1ZHVW5pdFR5cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oUHJpbWl0
aXZlVW5pdHMsIHByaW1pdGl2ZVVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX0xFTkdUSChZLCB5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwg
d2lkdGgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoRmlsdGVyUmVzWCwgZmlsdGVyUmVzWCkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9JTlRFR0VSKEZpbHRlclJlc1ksIGZpbHRlclJlc1kp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMK
IH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMSArMzcsMjIgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9M
RU5HVEgoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdOYW1lczo6eEF0
dHIsIFgsIHgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcywgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQotREVGSU5FX0FOSU1BVEVEX0xF
TkdUSChTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR05hbWVzOjp3aWR0
aEF0dHIsIFdpZHRoLCB3aWR0aCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBo
ZWlnaHQpCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcywgU1ZHTmFtZXM6OnJlc3VsdEF0dHIsIFJlc3VsdCwgcmVzdWx0KQorQkVHSU5f
REVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4
KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCisgICAgREVGSU5FX0FOSU1BVEVEX0xF
TkdUSChTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR05hbWVzOjp3aWR0
aEF0dHIsIFdpZHRoLCB3aWR0aCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhlaWdo
dCwgaGVpZ2h0KQorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdOYW1lczo6cmVzdWx0QXR0ciwgUmVzdWx0LCByZXN1bHQp
CitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeCkKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWSh5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZ
KHdpZHRoKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGhlaWdodCkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShyZXN1bHQpCisgICAgUkVHSVNURVJf
UEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkRWxlbWVudCkKK0VORF9SRUdJU1RF
Ul9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0eWxlZEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC01Miw2ICs2Myw3IEBAIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6U1YKIHsKICAgICAvLyBTcGVjOiBJZiB0aGUgeC95IGF0dHJp
YnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjAl
IiB3ZXJlIHNwZWNpZmllZC4KICAgICAvLyBTcGVjOiBJZiB0aGUgd2lkdGgvaGVpZ2h0IGF0dHJp
YnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEw
MCUiIHdlcmUgc3BlY2lmaWVkLgorICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKCk7CiB9CiAKIGJvb2wgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKQEAgLTEyMSw1MSArMTMzLDYgQEAgdm9pZCBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZQogICAgIGludmFsaWRhdGUoKTsKIH0KIAotdm9p
ZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17ICAgIAotICAgIGlmIChhdHRyTmFt
ZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBzeW5j
aHJvbml6ZVkoKTsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICBzeW5jaHJv
bml6ZUhlaWdodCgpOwotICAgICAgICBzeW5jaHJvbml6ZVJlc3VsdCgpOwotICAgICAgICBTVkdT
dHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
Ojp4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVdpZHRoKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omhl
aWdodEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cmVzdWx0QXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZVJlc3VsdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzOjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5v
ZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEp
CiB7CiAgICAgU1ZHU3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNl
ciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKQEAgLTIwNCwx
NyArMTcxLDYgQEAgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZQogICAg
IGZpbHRlckVmZmVjdC0+c2V0RWZmZWN0Qm91bmRhcmllcyhlZmZlY3RCQm94KTsKIH0KIAotdm9p
ZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXApCi17Ci0gICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbFBhc3NlZEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAg
ICAKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBB
bmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExl
bmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyZXN1
bHRBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0KIFJlbmRlck9iamVjdCogU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJl
bmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXJQcmltaXRpdmUodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCShyZXZp
c2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsOCArNTEsNiBAQCBwcm90ZWN0
ZWQ6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAg
IHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci0gICAgdm9pZCBmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5v
ZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgaW5s
aW5lIHZvaWQgaW52YWxpZGF0ZSgpCkBAIC03MywxMiArNzEsMTMgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5k
ZXJpbmdDb250ZXh0Jik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMK
LSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQotICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIKFksIHkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQot
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQotICAgIERFQ0xBUkVf
QU5JTUFURURfU1RSSU5HKFJlc3VsdCwgcmVzdWx0KQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfTEVOR1RIKFksIHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3
aWR0aCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKFJlc3VsdCwgcmVzdWx0KQorICAgIEVORF9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCShyZXZpc2lvbiA5MDQ1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDQsMjAgKzEwNCw2IEBAIGJvb2wgU1ZHRml0VG9WaWV3Qm94OjpwYXJzZU1hcHBl
ZEF0dHJpYnUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgU1ZHRml0VG9WaWV3Qm94Ojpz
eW5jaHJvbml6ZVByb3BlcnRpZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0g
ICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVWaWV3
Qm94KCk7Ci0gICAgICAgIHN5bmNocm9uaXplUHJlc2VydmVBc3BlY3RSYXRpbygpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp2aWV3Qm94
QXR0cikKLSAgICAgICAgc3luY2hyb25pemVWaWV3Qm94KCk7Ci0gICAgZWxzZSBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyKQotICAgICAgICBzeW5jaHJv
bml6ZVByZXNlcnZlQXNwZWN0UmF0aW8oKTsKLX0KLQogYm9vbCBTVkdGaXRUb1ZpZXdCb3g6Omlz
S25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgcmV0
dXJuIGF0dHJOYW1lID09IFNWR05hbWVzOjp2aWV3Qm94QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRml0VG9WaWV3Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
dFRvVmlld0JveC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aXRUb1ZpZXdCb3guaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTQgKzQzLDEwIEBAIHB1YmxpYzoK
ICAgICBib29sIHBhcnNlTWFwcGVkQXR0cmlidXRlKERvY3VtZW50KiwgQXR0cmlidXRlKik7CiAg
ICAgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2b2lk
IGFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMoSGFzaFNldDxRdWFsaWZpZWROYW1lPiYpOwotICAgIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0aWVzKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBzZXRWaWV3Qm94QmFzZVZhbHVlKGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0UHJlc2VydmVBc3BlY3RSYXRpb0Jhc2VWYWx1ZShjb25zdCBTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvJikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
Vmlld0JveCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcmVzZXJ2ZUFzcGVj
dFJhdGlvKCkgPSAwOwotCiBwcml2YXRlOgogICAgIGJvb2wgcGFyc2VWaWV3Qm94KERvY3VtZW50
KiwgY29uc3QgU3RyaW5nJiwgRmxvYXRSZWN0Jik7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZvbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRm9udEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDE0IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25z
Ci1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdGb250RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMK
KyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdGb250RWxlbWVudCwgU1ZHTmFtZXM6OmV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVT
CisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRm9udEVsZW1lbnQpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRF
bGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0Zv
bnRFbGVtZW50OjpTVkdGb250RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KSAKQEAgLTQ1LDYgKzUxLDcgQEAgaW5saW5lIFNWR0ZvbnRFbGVtZW50OjpTVkdGb250RWxl
bWVudChjbwogICAgICwgbV9pc0dseXBoQ2FjaGVWYWxpZChmYWxzZSkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShTVkdOYW1lczo6Zm9udFRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9w
ZXJ0aWVzRm9yU1ZHRm9udEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGb250RWxlbWVu
dD4gU1ZHRm9udEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCkBAIC01MiwxNCArNTksNiBAQCBQYXNzUmVmUHRyPFNWR0ZvbnRF
bGVtZW50PiBTVkdGb250RWxlbWVuCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdGb250RWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIFNWR0ZvbnRFbGVtZW50OjpzeW5j
aHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIFNW
R1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotCi0gICAgaWYg
KGF0dHJOYW1lID09IGFueVFOYW1lKCkgfHwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCgpOwotfQotCiB2b2lkIFNWR0ZvbnRFbGVtZW50OjppbnZhbGlkYXRl
R2x5cGhDYWNoZSgpCiB7CiAgICAgaWYgKG1faXNHbHlwaENhY2hlVmFsaWQpIHsKQEAgLTI1OSwx
NyArMjU4LDYgQEAgR2x5cGggU1ZHRm9udEVsZW1lbnQ6Om1pc3NpbmdHbHlwaCgpCiAgICAgcmV0
dXJuIG1fbWlzc2luZ0dseXBoOwogfQogCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZH
Rm9udEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXA7Ci19Ci0KLXZvaWQgU1ZHRm9udEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCi17Ci0gICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkpOwotfQotCiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoU1ZHX0ZPTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zv
bnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVt
ZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDE4ICs3MywxNCBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIFNWR0ZvbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwog
Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJp
bmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0gIAotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdm9pZCBlbnN1
cmVHbHlwaENhY2hlKCk7CiAgICAgdm9pZCByZWdpc3RlckxpZ2F0dXJlc0luR2x5cGhDYWNoZShW
ZWN0b3I8U3RyaW5nPiYpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25z
Ci0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklN
QVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZvbnRF
bGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICBLZXJuaW5nUGFpclZlY3RvciBtX2hvcml6b250YWxL
ZXJuaW5nUGFpcnM7CiAgICAgS2VybmluZ1BhaXJWZWN0b3IgbV92ZXJ0aWNhbEtlcm5pbmdQYWly
czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50
LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMyArMzQsMjUgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVG
SU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnhB
dHRyLCBYLCB4KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGb3JlaWduT2JqZWN0RWxlbWVu
dCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGb3Jl
aWduT2JqZWN0RWxlbWVudCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgV2lkdGgsIHdpZHRoKQotREVG
SU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTmFtZXM6Omhl
aWdodEF0dHIsIEhlaWdodCwgaGVpZ2h0KQotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGb3Jl
aWduT2JqZWN0RWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCi1ERUZJ
TkVfQU5JTUFURURfQk9PTEVBTihTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTmFtZXM6OmV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJ
RVMKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBT
VkdOYW1lczo6eEF0dHIsIFgsIHgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGb3Jl
aWduT2JqZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQorICAgIERFRklORV9BTklN
QVRFRF9MRU5HVEgoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIs
IFdpZHRoLCB3aWR0aCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQpCisgICAgREVG
SU5FX0FOSU1BVEVEX1NUUklORyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgWExpbmtOYW1lczo6
aHJlZkF0dHIsIEhyZWYsIGhyZWYpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0
ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkK
K0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh3aWR0aCkKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShoZWlnaHQpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KQorICAgIFJF
R0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVS
X0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpT
VkdGb3JlaWduT2JqZWN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkKQEAgLTUwLDYgKzYyLDcgQEAgaW5saW5lIFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50OjpTVkdGb3JlaQogICAgICwgbV9oZWlnaHQoTGVuZ3RoTW9kZUhlaWdodCkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZykpOworICAgIHJl
Z2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQoKTsKIH0K
IAogUGFzc1JlZlB0cjxTVkdGb3JlaWduT2JqZWN0RWxlbWVudD4gU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCkBAIC0xMzQsNzYgKzE0Nyw2IEBAIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6
OnN2Z0F0dHJpYnUKICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQ
YXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlcik7CiB9CiAKLXZvaWQgU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAg
c3luY2hyb25pemVYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICBzeW5jaHJv
bml6ZVdpZHRoKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHN5bmNo
cm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhy
ZWYoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRy
TmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICgh
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpIHsK
LSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWSgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
Ojp3aWR0aEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3Bl
cnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdG
b3JlaWduT2JqZWN0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsgICAgCi0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxs
UGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIs
IEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVk
TGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6
aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQogUmVuZGVyT2JqZWN0KiBTVkdGb3JlaWdu
T2JqZWN0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJT
dHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Qo
dGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMjYgKzQ1LDI1IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAg
IHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihO
b2RlKikgY29uc3Q7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKTsKIAogICAgIHZpcnR1YWwgYm9v
bCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9w
ZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQotICAg
IERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoV2lkdGgsIHdpZHRoKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVp
Z2h0KQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJ
TkcoSHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIKFgsIHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfU1RSSU5HKEhyZWYsIGhyZWYpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAg
IEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3RzCisgICAg
dmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5
bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5j
aHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWly
ZWRFeHRlbnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVt
TGFuZ3VhZ2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxl
bWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTMgKzMxLDIxIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi1ERUZJTkVfQU5J
TUFURURfQk9PTEVBTihTVkdHRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5J
TUFURURfQk9PTEVBTihTVkdHRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVS
X0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHR0VsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9Q
QVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkK
KyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9S
RUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIFNWR0dFbGVtZW50OjpTVkdHRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBB
U1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6Z1RhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQ
cm9wZXJ0aWVzRm9yU1ZHR0VsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdHRWxlbWVudD4g
U1ZHR0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCkBAIC04OSw0NCArOTcsNiBAQCB2b2lkIFNWR0dFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvCiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0
QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVyZXIpOwogfQogCi12b2lkIFNWR0dF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBTVkdUZXN0czo6c3luY2hy
b25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHR0VsZW1lbnQ6OmF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7
Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZH
R0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpKTsKLX0KLQogUmVuZGVyT2JqZWN0KiBT
VkdHRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHls
ZSogc3R5bGUpCiB7CiAgICAgLy8gU1ZHIDEuMSB0ZXN0c3VpdGUgZXhwbGljaXRlbHkgdXNlcyBj
b25zdHJ1Y3RzIGxpa2UgPGcgZGlzcGxheT0ibm9uZSI+PGxpbmVhckdyYWRpZW50PgpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDE2ICs1MSwxNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29u
c3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRl
Y2xhcmF0aW9ucworICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdHRWxl
bWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVElFUwogCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAot
ICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXpl
UmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJl
cXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNp
b25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2Uo
KSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVt
ZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDIwICsxMjksNiBAQCBzdGF0aWMgaW5s
aW5lIGZsb2F0IHBhcnNlU1ZHR2x5cGhBdHRyaWJ1CiAgICAgcmV0dXJuIHZhbHVlLnRvRmxvYXQo
KTsKIH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0dseXBoRWxlbWVudDo6YXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgp
KTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBT
VkdHbHlwaEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAg
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0g
dGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZEVsZW1l
bnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjpkQXR0ciwgQW5pbWF0ZWRQYXRoKTsKLX0KLQogU1ZHR2x5cGggU1ZHR2x5cGhFbGVtZW50Ojpi
dWlsZEdlbmVyaWNHbHlwaElkZW50aWZpZXIoY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkKIHsK
ICAgICBTVkdHbHlwaCBpZGVudGlmaWVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ds
eXBoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVs
ZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDggQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBTVkdHbHlwaEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7
CiAKKyAgICAvLyBGSVhNRTogc3ZnQXR0cmlidXRlQ2hhbmdlZCBtaXNzaW5nLgogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVkRnJvbURvY3VtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGll
bnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGll
bnRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTggKzM4LDI5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMK
LURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVz
OjpzcHJlYWRNZXRob2RBdHRyLCBTcHJlYWRNZXRob2QsIHNwcmVhZE1ldGhvZCwgU1ZHU3ByZWFk
TWV0aG9kVHlwZSkKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdHcmFkaWVudEVsZW1l
bnQsIFNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0ciwgR3JhZGllbnRVbml0cywgZ3JhZGllbnRV
bml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKLURFRklORV9BTklNQVRFRF9UUkFOU0ZP
Uk1fTElTVChTVkdHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0
dHIsIEdyYWRpZW50VHJhbnNmb3JtLCBncmFkaWVudFRyYW5zZm9ybSkKLURFRklORV9BTklNQVRF
RF9TVFJJTkcoU1ZHR3JhZGllbnRFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwg
aHJlZikKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0dyYWRpZW50RWxlbWVudCwgU1ZHTmFt
ZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotCitCRUdJTl9ERUZJTkVfQU5JTUFURURf
UFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdHcmFkaWVudEVs
ZW1lbnQsIFNWR05hbWVzOjpzcHJlYWRNZXRob2RBdHRyLCBTcHJlYWRNZXRob2QsIHNwcmVhZE1l
dGhvZCwgU1ZHU3ByZWFkTWV0aG9kVHlwZSkKKyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJ
T04oU1ZHR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6Z3JhZGllbnRVbml0c0F0dHIsIEdyYWRp
ZW50VW5pdHMsIGdyYWRpZW50VW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAg
REVGSU5FX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFNWR0dyYWRpZW50RWxlbWVudCwgU1ZHTmFt
ZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0ciwgR3JhZGllbnRUcmFuc2Zvcm0sIGdyYWRpZW50VHJh
bnNmb3JtKQorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHR3JhZGllbnRFbGVtZW50LCBY
TGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKKyAgICBERUZJTkVfQU5JTUFURURfQk9P
TEVBTihTVkdHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR0dyYWRpZW50RWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NB
TF9BTklNQVRFRF9QUk9QRVJUWShzcHJlYWRNZXRob2QpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoZ3JhZGllbnRVbml0cykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShncmFkaWVudFRyYW5zZm9ybSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShocmVmKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHU3R5bGVkRWxlbWVudCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJU
SUVTCisgCiBTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR0dyYWRpZW50RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9zcHJlYWRNZXRob2QoU1ZHU3ByZWFk
TWV0aG9kUGFkKQogICAgICwgbV9ncmFkaWVudFVuaXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRf
VFlQRV9PQkpFQ1RCT1VORElOR0JPWCkKIHsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGll
c0ZvclNWR0dyYWRpZW50RWxlbWVudCgpOwogfQogCiBib29sIFNWR0dyYWRpZW50RWxlbWVudDo6
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBAIC0x
MTYsNjEgKzEyNyw2IEBAIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGEK
ICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQogICAgICAgICBvYmpl
Y3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQotCi12b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAg
ICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUdyYWRp
ZW50VW5pdHMoKTsKLSAgICAgICAgc3luY2hyb25pemVHcmFkaWVudFRyYW5zZm9ybSgpOwotICAg
ICAgICBzeW5jaHJvbml6ZVNwcmVhZE1ldGhvZCgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAg
ICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShh
dHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplR3JhZGll
bnRVbml0cygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVH
cmFkaWVudFRyYW5zZm9ybSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjpzcHJlYWRNZXRob2RBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplU3ByZWFkTWV0aG9kKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsK
LSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFNWR0dy
YWRpZW50RWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCkKLXsKLSAg
ICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotCi0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjpzcHJlYWRNZXRob2RBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9u
KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmdyYWRpZW50
VW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0ciwgQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1l
czo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KICAgICAKIHZvaWQgU1ZHR3JhZGllbnRF
bGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9y
ZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiA5MDU2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNzMsNyArNzMsNiBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHU3ByZWFkTWV0
aG9kCiAgICAgfQogfTsKIAotCiBjbGFzcyBTVkdHcmFkaWVudEVsZW1lbnQgOiBwdWJsaWMgU1ZH
U3R5bGVkRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklS
ZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCB7CkBAIC05MywyNCArOTIsMTkgQEAgcHJvdGVjdGVkOgogICAgIGJv
b2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZv
aWQgZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG5lZWRzUGVuZGluZ1Jl
c291cmNlSGFuZGxpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2
b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBi
ZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVs
dGEgPSAwKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERF
Q0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oU3ByZWFkTWV0aG9kLCBzcHJlYWRNZXRob2QsIFNW
R1NwcmVhZE1ldGhvZFR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihHcmFk
aWVudFVuaXRzLCBncmFkaWVudFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQotICAg
IERFQ0xBUkVfQU5JTUFURURfVFJBTlNGT1JNX0xJU1QoR3JhZGllbnRUcmFuc2Zvcm0sIGdyYWRp
ZW50VHJhbnNmb3JtKQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklN
QVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHR3JhZGllbnRFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX0VOVU1FUkFUSU9OKFNwcmVhZE1ldGhvZCwgc3ByZWFkTWV0aG9kLCBTVkdTcHJlYWRNZXRo
b2RUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKEdyYWRpZW50VW5p
dHMsIGdyYWRpZW50VW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfVFJBTlNGT1JNX0xJU1QoR3JhZGllbnRUcmFuc2Zvcm0sIGdyYWRpZW50
VHJhbnNmb3JtKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTQgKzM2
LDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVm
aW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1l
czo6eEF0dHIsIFgsIHgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ltYWdlRWxlbWVudCwg
U1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdJbWFnZUVs
ZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKLURFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBo
ZWlnaHQpCi1ERUZJTkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhTVkdJbWFnZUVsZW1l
bnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgUHJlc2VydmVBc3BlY3RSYXRp
bywgcHJlc2VydmVBc3BlY3RSYXRpbykKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHSW1hZ2VF
bGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKLURFRklORV9BTklNQVRF
RF9CT09MRUFOKFNWR0ltYWdlRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR0ltYWdlRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQorICAg
IERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIs
IFksIHkpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdJbWFnZUVsZW1lbnQsIFNWR05h
bWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RI
KFNWR0ltYWdlRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhlaWdodCwgaGVpZ2h0KQor
ICAgIERFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR0ltYWdlRWxlbWVudCwg
U1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBw
cmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHSW1hZ2VF
bGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKKyAgICBERUZJTkVfQU5J
TUFURURfQk9PTEVBTihTVkdJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJ
U1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ltYWdlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWSh4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKHkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkod2lkdGgpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaGVpZ2h0KQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BB
UkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KQor
ICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5EX1JF
R0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ltYWdlRWxlbWVudDo6U1ZH
SW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKICAgICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KQpAQCAtNTQsNiArNjcsNyBAQCBpbmxpbmUgU1ZHSW1hZ2VFbGVtZW50OjpTVkdJbWFnZUVs
ZW1lbnQoCiAgICAgLCBtX2ltYWdlTG9hZGVyKHRoaXMpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05h
bWUoU1ZHTmFtZXM6OmltYWdlVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNG
b3JTVkdJbWFnZUVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdJbWFnZUVsZW1lbnQ+IFNW
R0ltYWdlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKQEAgLTE3Myw4OCArMTg3LDYgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lk
IFNWR0ltYWdlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAg
ICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHN5bmNo
cm9uaXplV2lkdGgoKTsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVQcmVzZXJ2ZUFzcGVjdFJhdGlvKCk7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAg
ICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAg
ICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVYKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OnlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIp
IHsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplUHJlc2VydmVBc3BlY3RSYXRpbygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRp
ZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdJbWFn
ZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7
Ci19Ci0KLXZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0ZWRM
ZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6d2lk
dGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwg
QW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQogYm9v
bCBTVkdJbWFnZUVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdAogewogICAg
IHJldHVybiB4KCkuaXNSZWxhdGl2ZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxl
bWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsOSArNTEsNiBAQCBwcml2YXRlOgogICAgIGJv
b2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZp
cnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFs
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwogCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRl
ZEludG9Eb2N1bWVudCgpOwpAQCAtNjgsMTggKzY1LDIwIEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5
IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCi0gICAgREVD
TEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChX
aWR0aCwgd2lkdGgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQp
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0
UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCi0KLSAgICAvLyBTVkdVUklSZWZlcmVuY2UKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQotCi0gICAgLy8gU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJFR0lO
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdJbWFnZUVsZW1lbnQpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVO
R1RIKFksIHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCisgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlv
LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhI
cmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJl
cXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1
aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9u
cyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkg
eyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogCiAgICAgU1ZH
SW1hZ2VMb2FkZXIgbV9pbWFnZUxvYWRlcjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGluZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
aW5lRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xpbmVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDIzIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURF
RklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZUVsZW1lbnQsIFNWR05hbWVzOjp4MUF0dHIsIFgx
LCB4MSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZUVsZW1lbnQsIFNWR05hbWVzOjp5
MUF0dHIsIFkxLCB5MSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZUVsZW1lbnQsIFNW
R05hbWVzOjp4MkF0dHIsIFgyLCB4MikKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZUVs
ZW1lbnQsIFNWR05hbWVzOjp5MkF0dHIsIFkyLCB5MikKLURFRklORV9BTklNQVRFRF9CT09MRUFO
KFNWR0xpbmVFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIs
IEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitC
RUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9MRU5H
VEgoU1ZHTGluZUVsZW1lbnQsIFNWR05hbWVzOjp4MUF0dHIsIFgxLCB4MSkKKyAgICBERUZJTkVf
QU5JTUFURURfTEVOR1RIKFNWR0xpbmVFbGVtZW50LCBTVkdOYW1lczo6eTFBdHRyLCBZMSwgeTEp
CisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6Ongy
QXR0ciwgWDIsIHgyKQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZUVsZW1lbnQs
IFNWR05hbWVzOjp5MkF0dHIsIFkyLCB5MikKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihT
VkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorRU5E
X0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHTGluZUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkoeDEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeTEpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeDIpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoeTIpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJU1RF
Ul9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklN
QVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdMaW5lRWxlbWVudDo6U1ZHTGluZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDog
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC00OCw2
ICs1OSw3IEBAIGlubGluZSBTVkdMaW5lRWxlbWVudDo6U1ZHTGluZUVsZW1lbnQoY28KICAgICAs
IG1feTIoTGVuZ3RoTW9kZUhlaWdodCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1l
czo6bGluZVRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHTGluZUVs
ZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdMaW5lRWxlbWVudD4gU1ZHTGluZUVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CkBAIC0xNDUsNzQgKzE1Nyw2IEBAIHZvaWQgU1ZHTGluZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdMaW5lRWxlbWVu
dDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsK
LSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVgx
KCk7Ci0gICAgICAgIHN5bmNocm9uaXplWTEoKTsKLSAgICAgICAgc3luY2hyb25pemVYMigpOwot
ICAgICAgICBzeW5jaHJvbml6ZVkyKCk7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVz
KHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
Ojp4MUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYMSgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5MUF0dHIpIHsKLSAgICAgICAg
c3luY2hyb25pemVZMSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjp4MkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYMigpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5MkF0
dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVZMigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3du
QXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9w
ZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZH
TGluZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXA7Ci19Ci0KLXZvaWQgU1ZHTGluZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAg
IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eDFBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5MUF0dHIsIEFuaW1h
dGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OngyQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6eTJBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci19Ci0KIHZvaWQgU1ZHTGlu
ZUVsZW1lbnQ6OnRvUGF0aERhdGEoUGF0aCYgcGF0aCkgY29uc3QKIHsKICAgICBBU1NFUlQocGF0
aC5pc0VtcHR5KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgJKHJldmlz
aW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ3LDkgKzQ3LDYgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVk
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VN
YXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1
YWwgdm9pZCB0b1BhdGhEYXRhKFBhdGgmKSBjb25zdDsKIApAQCAtNTcsMTQgKzU0LDE4IEBAIHBy
aXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0
OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9B
TklNQVRFRF9MRU5HVEgoWDEsIHgxKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFkxLCB5
MSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYMiwgeDIpCi0gICAgREVDTEFSRV9BTklN
QVRFRF9MRU5HVEgoWTIsIHkyKQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdMaW5lRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoWDEsIHgxKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZMSwgeTEpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgyLCB4MikKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9MRU5HVEgoWTIsIHkyKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBF
TkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5j
aHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVk
RXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxh
bmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDExICs0MCwyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1h
dGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OngxQXR0ciwgWDEsIHgxKQotREVGSU5FX0FOSU1B
VEVEX0xFTkdUSChTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjp5MUF0dHIsIFkx
LCB5MSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBT
VkdOYW1lczo6eDJBdHRyLCBYMiwgeDIpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OnkyQXR0ciwgWTIsIHkyKQorQkVHSU5fREVGSU5F
X0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OngxQXR0ciwgWDEsIHgxKQorICAgIERFRklORV9B
TklNQVRFRF9MRU5HVEgoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6eTFBdHRy
LCBZMSwgeTEpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQsIFNWR05hbWVzOjp4MkF0dHIsIFgyLCB4MikKKyAgICBERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OnkyQXR0ciwgWTIsIHkyKQor
RU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKHgxKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKHkxKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgyKQorICAgIFJF
R0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHkyKQorICAgIFJFR0lTVEVSX1BBUkVOVF9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR0dyYWRpZW50RWxlbWVudCkKK0VORF9SRUdJU1RFUl9BTklN
QVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OlNWR0xp
bmVhckdyYWRpZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgOiBTVkdHcmFkaWVudEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
CkBAIC01NSw2ICs2NCw3IEBAIGlubGluZSBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OlNWR0xp
bmUKIHsKICAgICAvLyBTcGVjOiBJZiB0aGUgeDIgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQs
IHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmxpbmVhckdyYWRpZW50VGFnKSk7CisgICAg
cmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQoKTsK
IH0KIAogUGFzc1JlZlB0cjxTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ+IFNWR0xpbmVhckdyYWRp
ZW50RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKQEAgLTExOSw2MiArMTI5LDYgQEAgdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQ6OnN2Z0F0dHJpYgogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwog
fQogCi12b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsgICAgCi0gICAgaWYgKGF0dHJOYW1lID09
IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVYMSgpOwotICAgICAgICBzeW5jaHJv
bml6ZVkxKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWDIoKTsKLSAgICAgICAgc3luY2hyb25pemVZ
MigpOwotICAgICAgICBTVkdHcmFkaWVudEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0
ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHR3JhZGllbnRFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0gICAKLQotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eDFBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
WDEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6eTFBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWTEoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eDJBdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplWDIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6eTJBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWTIoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQot
Ci1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Ojph
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
KCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lk
IFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZH
R3JhZGllbnRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6eDFBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5MUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OngyQXR0ciwgQW5pbWF0
ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
eTJBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci19Ci0KIFJlbmRlck9iamVjdCogU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0
eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJH
cmFkaWVudCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxOSArNDIsMTcg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
Kik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKICAgICB2aXJ0dWFsIGJvb2wg
c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWDEsIHgxKQotICAg
IERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFkxLCB5MSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSChYMiwgeDIpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWTIsIHkyKQorICAgIEJF
R0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgxLCB4MSkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoWTEsIHkxKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdU
SChYMiwgeDIpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFkyLCB5MikKKyAgICBF
TkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24g
OTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsMTQgKzI4LDIxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8g
QW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZH
TVBhdGhFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKLURFRklORV9B
TklNQVRFRF9CT09MRUFOKFNWR01QYXRoRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJ
TkVfQU5JTUFURURfU1RSSU5HKFNWR01QYXRoRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIs
IEhyZWYsIGhyZWYpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHTVBhdGhFbGVtZW50
LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1B
VEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdN
UGF0aEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR01Q
YXRoRWxlbWVudDo6U1ZHTVBhdGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6Om1wYXRoVGFnKSk7CisgICAgcmVn
aXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdNUGF0aEVsZW1lbnQoKTsKIH0KIAogUGFzc1Jl
ZlB0cjxTVkdNUGF0aEVsZW1lbnQ+IFNWR01QYXRoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTY4LDQxICs3NSw2IEBA
IHZvaWQgU1ZHTVBhdGhFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnUKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdNUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09
IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdVUklSZWZl
cmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
SHJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdNUGF0aEVsZW1lbnQ6OmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAo
KSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQg
U1ZHTVBhdGhFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBB
bmltYXRlZFN0cmluZyk7Ci19Ci0KIFNWR1BhdGhFbGVtZW50KiBTVkdNUGF0aEVsZW1lbnQ6OnBh
dGhFbGVtZW50KCkKIHsKICAgICBFbGVtZW50KiB0YXJnZXQgPSB0cmVlU2NvcGUoKS0+Z2V0RWxl
bWVudEJ5SWQoZ2V0VGFyZ2V0KGhyZWYoKSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R01QYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0
aEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBh
dGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE3ICs0NCwxMSBAQCBwcml2YXRlOgog
ICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFuZ2VkIG1pc3NpbmcuCiAgICAgYm9vbCBpc1N1
cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwotICAgIHZpcnR1YWwgdm9pZCBzeW5j
aHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAotICAgIC8v
IEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNl
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBC
RUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHTVBhdGhFbGVtZW50KQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2Vy
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA5MDU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJr
ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTcgKzMyLDQ2IEBACiAjaW5jbHVk
ZSAiU1ZHU1ZHRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEFuaW1hdGVk
IHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01hcmtlckVs
ZW1lbnQsIFNWR05hbWVzOjpyZWZYQXR0ciwgUmVmWCwgcmVmWCkKLURFRklORV9BTklNQVRFRF9M
RU5HVEgoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6OnJlZllBdHRyLCBSZWZZLCByZWZZKQot
REVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6bWFya2Vy
V2lkdGhBdHRyLCBNYXJrZXJXaWR0aCwgbWFya2VyV2lkdGgpCi1ERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjptYXJrZXJIZWlnaHRBdHRyLCBNYXJrZXJI
ZWlnaHQsIG1hcmtlckhlaWdodCkKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdNYXJr
ZXJFbGVtZW50LCBTVkdOYW1lczo6bWFya2VyVW5pdHNBdHRyLCBNYXJrZXJVbml0cywgbWFya2Vy
VW5pdHMsIFNWR01hcmtlclVuaXRzVHlwZSkKLURFRklORV9BTklNQVRFRF9BTkdMRV9NVUxUSVBM
RV9XUkFQUEVSUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6b3JpZW50QXR0ciwgb3JpZW50
QW5nbGVJZGVudGlmaWVyKCksIE9yaWVudEFuZ2xlLCBvcmllbnRBbmdsZSkKLURFRklORV9BTklN
QVRFRF9CT09MRUFOKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKLURFRklORV9BTklNQVRFRF9SRUNUKFNWR01hcmtlckVsZW1lbnQsIFNWR05h
bWVzOjp2aWV3Qm94QXR0ciwgVmlld0JveCwgdmlld0JveCkKLURFRklORV9BTklNQVRFRF9QUkVT
RVJWRUFTUEVDVFJBVElPKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVj
dFJhdGlvQXR0ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAK
Ky8vIERlZmluZSBjdXN0b20gYW5pbWF0ZWQgcHJvcGVydHkgJ29yaWVudFR5cGUnLgorY29uc3Qg
U1ZHUHJvcGVydHlJbmZvKiBTVkdNYXJrZXJFbGVtZW50OjpvcmllbnRUeXBlUHJvcGVydHlJbmZv
KCkKK3sKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBzX3Byb3BlcnR5SW5mbyA9
IDA7CisgICAgaWYgKCFzX3Byb3BlcnR5SW5mbykgeworICAgICAgICBzX3Byb3BlcnR5SW5mbyA9
IG5ldyBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRFbnVtZXJhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpvcmllbnRBdHRyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZW50VHlwZUlkZW50
aWZpZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZT
VkdNYXJrZXJFbGVtZW50OjpzeW5jaHJvbml6ZU9yaWVudFR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU1ZHTWFya2VyRWxlbWVudDo6bG9va3VwT3JD
cmVhdGVPcmllbnRUeXBlV3JhcHBlcik7CisgICAgfQorICAgIHJldHVybiBzX3Byb3BlcnR5SW5m
bzsKK30KKworQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjpyZWZYQXR0ciwgUmVmWCwg
cmVmWCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01hcmtlckVsZW1lbnQsIFNWR05h
bWVzOjpyZWZZQXR0ciwgUmVmWSwgcmVmWSkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNW
R01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjptYXJrZXJXaWR0aEF0dHIsIE1hcmtlcldpZHRoLCBt
YXJrZXJXaWR0aCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01hcmtlckVsZW1lbnQs
IFNWR05hbWVzOjptYXJrZXJIZWlnaHRBdHRyLCBNYXJrZXJIZWlnaHQsIG1hcmtlckhlaWdodCkK
KyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFt
ZXM6Om1hcmtlclVuaXRzQXR0ciwgTWFya2VyVW5pdHMsIG1hcmtlclVuaXRzLCBTVkdNYXJrZXJV
bml0c1R5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX0FOR0xFX01VTFRJUExFX1dSQVBQRVJTKFNW
R01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjpvcmllbnRBdHRyLCBvcmllbnRBbmdsZUlkZW50aWZp
ZXIoKSwgT3JpZW50QW5nbGUsIG9yaWVudEFuZ2xlKQorICAgIERFRklORV9BTklNQVRFRF9CT09M
RUFOKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
QXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCkKKyAgICBERUZJTkVfQU5JTUFURURfUkVDVChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6
dmlld0JveEF0dHIsIFZpZXdCb3gsIHZpZXdCb3gpCisgICAgREVGSU5FX0FOSU1BVEVEX1BSRVNF
UlZFQVNQRUNUUkFUSU8oU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0
UmF0aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorRU5E
X0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHTWFya2VyRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWShyZWZYKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHJlZlkp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkobWFya2VyV2lkdGgpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkobWFya2VySGVpZ2h0KQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKG1hcmtlclVuaXRzKQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKG9yaWVudEFuZ2xlKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKG9yaWVudFR5cGUpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWSh2aWV3Qm94KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHU3R5bGVkRWxlbWVudCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9Q
RVJUSUVTCiAKIGlubGluZSBTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0
eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC01NSw2ICs4NCw3IEBAIGlubGluZSBT
VkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJFbGVtZW4KIHsKICAgICAvLyBTcGVjOiBJZiB0aGUg
bWFya2VyV2lkdGgvbWFya2VySGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUg
ZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjMiIHdlcmUgc3BlY2lmaWVkLgogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjptYXJrZXJUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVk
UHJvcGVydGllc0ZvclNWR01hcmtlckVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdNYXJr
ZXJFbGVtZW50PiBTVkdNYXJrZXJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTcwLDkxICsyMDAsNiBAQCB2b2lkIFNW
R01hcmtlckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nCiAgICAgICAgIG9iamVjdC0+c2V0TmVl
ZHNMYXlvdXQodHJ1ZSk7CiB9CiAKLXZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c3luY2hyb25pemVQ
cm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5h
bWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZU1hcmtlclVuaXRzKCk7Ci0g
ICAgICAgIHN5bmNocm9uaXplUmVmWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVJlZlkoKTsKLSAg
ICAgICAgc3luY2hyb25pemVNYXJrZXJXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZU1hcmtl
ckhlaWdodCgpOwotICAgICAgICBzeW5jaHJvbml6ZU9yaWVudEFuZ2xlKCk7Ci0gICAgICAgIHN5
bmNocm9uaXplT3JpZW50VHlwZSgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHRml0VG9WaWV3Qm94OjpzeW5jaHJvbml6ZVByb3Bl
cnRpZXMoYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjptYXJrZXJVbml0c0F0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVNYXJrZXJVbml0cygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpyZWZYQXR0cikgewotICAgICAgICBzeW5jaHJv
bml6ZVJlZlgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6cmVmWUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVSZWZZKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1hcmtl
cldpZHRoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZU1hcmtlcldpZHRoKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1hcmtlckhl
aWdodEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVNYXJrZXJIZWlnaHQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6b3JpZW50QXR0
cikgewotICAgICAgICBzeW5jaHJvbml6ZU9yaWVudEFuZ2xlKCk7Ci0gICAgICAgIHN5bmNocm9u
aXplT3JpZW50VHlwZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRml0VG9WaWV3Qm94OjpzeW5jaHJvbml6ZVByb3Bl
cnRpZXMoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdNYXJrZXJF
bGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwot
fQotCi12b2lkIFNWR01hcmtlckVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNW
R1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjpyZWZYQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cmVmWUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om1hcmtlcldpZHRo
QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6bWFya2VySGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6bWFya2VyVW5pdHNBdHRyLCBBbmlt
YXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6Om9yaWVudEF0dHIsIEFuaW1hdGVkQW5nbGUpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6dmlld0JveEF0dHIsIEFuaW1hdGVkUmVjdCk7Ci19Ci0K
IHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFy
c2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3Vu
dERlbHRhKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2Vk
QnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkBA
IC0yNzAsOSArMjE1LDEyIEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50VG9BdXRv
KCkKIHsKICAgICBzZXRPcmllbnRUeXBlQmFzZVZhbHVlKFNWR01hcmtlck9yaWVudEF1dG8pOwog
ICAgIHNldE9yaWVudEFuZ2xlQmFzZVZhbHVlKFNWR0FuZ2xlKCkpOwotCi0gICAgaWYgKFJlbmRl
ck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xh
eW91dCh0cnVlKTsKKyAKKyAgICAvLyBNYXJrIG9yaWVudEF0dHIgZGlydHkgLSB0aGUgbmV4dCBY
TUwgRE9NIGFjY2VzcyBvZiB0aGF0IGF0dHJpYnV0ZSBraWNrcyBpbiBzeW5jaHJvbml6YXRpb24u
CisgICAgbV9vcmllbnRBbmdsZS5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7CisgICAgbV9vcmll
bnRUeXBlLnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKKyAgICBpbnZhbGlkYXRlU1ZHQXR0cmli
dXRlcygpOworICAgIHN2Z0F0dHJpYnV0ZUNoYW5nZWQob3JpZW50QW5nbGVQcm9wZXJ0eUluZm8o
KS0+YXR0cmlidXRlTmFtZSk7CiB9CiAKIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50
VG9BbmdsZShjb25zdCBTVkdBbmdsZSYgYW5nbGUpCkBAIC0yODAsOCArMjI4LDExIEBAIHZvaWQg
U1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50VG9BbmdsZSgKICAgICBzZXRPcmllbnRUeXBlQmFz
ZVZhbHVlKFNWR01hcmtlck9yaWVudEFuZ2xlKTsKICAgICBzZXRPcmllbnRBbmdsZUJhc2VWYWx1
ZShhbmdsZSk7CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQot
ICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOworICAgIC8vIE1hcmsgb3JpZW50
QXR0ciBkaXJ0eSAtIHRoZSBuZXh0IFhNTCBET00gYWNjZXNzIG9mIHRoYXQgYXR0cmlidXRlIGtp
Y2tzIGluIHN5bmNocm9uaXphdGlvbi4KKyAgICBtX29yaWVudEFuZ2xlLnNob3VsZFN5bmNocm9u
aXplID0gdHJ1ZTsKKyAgICBtX29yaWVudFR5cGUuc2hvdWxkU3luY2hyb25pemUgPSB0cnVlOwor
ICAgIGludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7CisgICAgc3ZnQXR0cmlidXRlQ2hhbmdlZChv
cmllbnRBbmdsZVByb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lKTsKIH0KIAogUmVuZGVyT2Jq
ZWN0KiBTVkdNYXJrZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEs
IFJlbmRlclN0eWxlKikKQEAgLTI5NywyNCArMjQ4LDM0IEBAIGJvb2wgU1ZHTWFya2VyRWxlbWVu
dDo6c2VsZkhhc1JlbGF0aXZlTGUKICAgICAgICAgfHwgbWFya2VySGVpZ2h0KCkuaXNSZWxhdGl2
ZSgpOwogfQogCi12b2lkIFNWR01hcmtlckVsZW1lbnQ6OnN5bmNocm9uaXplT3JpZW50VHlwZSgp
Cit2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnN5bmNocm9uaXplT3JpZW50VHlwZSh2b2lkKiBjb250
ZXh0RWxlbWVudCkKIHsKLSAgICBpZiAoIW1fb3JpZW50VHlwZS5zaG91bGRTeW5jaHJvbml6ZSkK
KyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgIFNWR01hcmtlckVsZW1lbnQqIG93bmVy
VHlwZSA9IHN0YXRpY19jYXN0PFNWR01hcmtlckVsZW1lbnQqPihjb250ZXh0RWxlbWVudCk7Cisg
ICAgaWYgKCFvd25lclR5cGUtPm1fb3JpZW50VHlwZS5zaG91bGRTeW5jaHJvbml6ZSkKICAgICAg
ICAgcmV0dXJuOwotICAgIAorCiAgICAgQXRvbWljU3RyaW5nIHZhbHVlOwotICAgIGlmIChtX29y
aWVudFR5cGUudmFsdWUgPT0gU1ZHTWFya2VyT3JpZW50QXV0bykKKyAgICBpZiAob3duZXJUeXBl
LT5tX29yaWVudFR5cGUudmFsdWUgPT0gU1ZHTWFya2VyT3JpZW50QXV0bykKICAgICAgICAgdmFs
dWUgPSAiYXV0byI7Ci0gICAgZWxzZSBpZiAobV9vcmllbnRUeXBlLnZhbHVlID09IFNWR01hcmtl
ck9yaWVudEFuZ2xlKQotICAgICAgICB2YWx1ZSA9IG9yaWVudEFuZ2xlKCkudmFsdWVBc1N0cmlu
ZygpOworICAgIGVsc2UgaWYgKG93bmVyVHlwZS0+bV9vcmllbnRUeXBlLnZhbHVlID09IFNWR01h
cmtlck9yaWVudEFuZ2xlKQorICAgICAgICB2YWx1ZSA9IG93bmVyVHlwZS0+bV9vcmllbnRBbmds
ZS52YWx1ZS52YWx1ZUFzU3RyaW5nKCk7CiAKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hy
b25pemVyPHRydWU+OjpzeW5jaHJvbml6ZSh0aGlzLCBTVkdOYW1lczo6b3JpZW50QXR0ciwgdmFs
dWUpOworICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5bmNocm9u
aXplKG93bmVyVHlwZSwgb3JpZW50VHlwZVByb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lLCB2
YWx1ZSk7CiB9CiAKK1Bhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gU1ZHTWFya2VyRWxl
bWVudDo6bG9va3VwT3JDcmVhdGVPcmllbnRUeXBlV3JhcHBlcih2b2lkKiBjb250ZXh0RWxlbWVu
dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgIFNWR01hcmtlckVsZW1lbnQq
IG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR01hcmtlckVsZW1lbnQqPihjb250ZXh0RWxlbWVu
dCk7CisgICAgcmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBl
cjxTVkdNYXJrZXJFbGVtZW50LCBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2Zm
PFNWR01hcmtlck9yaWVudFR5cGU+LCBTVkdNYXJrZXJPcmllbnRUeXBlLCB0cnVlPgorICAgICAg
ICAgICAob3duZXJUeXBlLCBvcmllbnRUeXBlUHJvcGVydHlJbmZvKCksIG93bmVyVHlwZS0+bV9v
cmllbnRUeXBlLnZhbHVlKTsKK30KKyAgCiBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRp
b25Qcm9wZXJ0eVRlYXJPZmY8U1ZHTWFya2VyT3JpZW50VHlwZT4gPiBTVkdNYXJrZXJFbGVtZW50
OjpvcmllbnRUeXBlQW5pbWF0ZWQoKQogewogICAgIG1fb3JpZW50VHlwZS5zaG91bGRTeW5jaHJv
bml6ZSA9IHRydWU7Ci0gICAgcmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3Jl
YXRlV3JhcHBlcjxTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmPFNWR01hcmtl
ck9yaWVudFR5cGU+LCBTVkdNYXJrZXJPcmllbnRUeXBlPih0aGlzLCBTVkdOYW1lczo6b3JpZW50
QXR0ciwgb3JpZW50VHlwZUlkZW50aWZpZXIoKSwgbV9vcmllbnRUeXBlLnZhbHVlKTsKKyAgICBy
ZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlU
ZWFyT2ZmPFNWR01hcmtlck9yaWVudFR5cGU+ID4obG9va3VwT3JDcmVhdGVPcmllbnRUeXBlV3Jh
cHBlcih0aGlzKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1l
bnQuaAkocmV2aXNpb24gOTA1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNiArMTIwLDggQEAgcHVibGljOgogICAgIHZv
aWQgc2V0T3JpZW50VG9BdXRvKCk7CiAgICAgdm9pZCBzZXRPcmllbnRUb0FuZ2xlKGNvbnN0IFNW
R0FuZ2xlJik7CiAKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBvcmllbnRUeXBl
UHJvcGVydHlJbmZvKCk7CisKIHByaXZhdGU6CiAgICAgU1ZHTWFya2VyRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApAQCAtMTI4LDkgKzEzMCw2IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAg
IHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRC
eVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5n
ZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CkBAIC0xMzgs
MzMgKzEzNywzMyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2
ZUxlbmd0aHMoKSBjb25zdDsKIAorICAgIHZvaWQgc3luY2hyb25pemVPcmllbnRUeXBlKCk7CisK
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBvcmllbnRUeXBlSWRlbnRpZmllcigpOwog
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG9yaWVudEFuZ2xlSWRlbnRpZmllcigpOwot
Ci0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklN
QVRFRF9MRU5HVEgoUmVmWCwgcmVmWCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSZWZZ
LCByZWZZKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKE1hcmtlcldpZHRoLCBtYXJrZXJX
aWR0aCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChNYXJrZXJIZWlnaHQsIG1hcmtlckhl
aWdodCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKE1hcmtlclVuaXRzLCBtYXJr
ZXJVbml0cywgU1ZHTWFya2VyVW5pdHNUeXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURfQU5HTEUo
T3JpZW50QW5nbGUsIG9yaWVudEFuZ2xlKQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotCi0gICAgLy8gU1ZHRml0VG9WaWV3
Qm94Ci0gICAgREVDTEFSRV9BTklNQVRFRF9SRUNUKFZpZXdCb3gsIHZpZXdCb3gpCi0gICAgREVD
TEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHBy
ZXNlcnZlQXNwZWN0UmF0aW8pCi0KKyAKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHTWFya2VyRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgo
UmVmWCwgcmVmWCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUmVmWSwgcmVmWSkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoTWFya2VyV2lkdGgsIG1hcmtlcldpZHRo
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChNYXJrZXJIZWlnaHQsIG1hcmtlckhl
aWdodCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihNYXJrZXJVbml0cywg
bWFya2VyVW5pdHMsIFNWR01hcmtlclVuaXRzVHlwZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9BTkdMRShPcmllbnRBbmdsZSwgb3JpZW50QW5nbGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1JFQ1QoVmlld0JveCwgdmlld0JveCkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNw
ZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURf
UFJPUEVSVElFUworICAKIHB1YmxpYzoKLSAgICAvLyBDdXN0b20gYW5pbWF0ZWQgcHJvcGVydHk6
IG9yaWVudFR5cGUKKyAgICAvLyBDdXN0b20gJ29yaWVudFR5cGUnIHByb3BlcnR5LgorICAgIHN0
YXRpYyB2b2lkIHN5bmNocm9uaXplT3JpZW50VHlwZSh2b2lkKiBjb250ZXh0RWxlbWVudCk7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVP
cmllbnRUeXBlV3JhcHBlcih2b2lkKiBjb250ZXh0RWxlbWVudCk7CiAgICAgU1ZHTWFya2VyT3Jp
ZW50VHlwZSYgb3JpZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50VHlwZS52YWx1ZTsg
fQogICAgIFNWR01hcmtlck9yaWVudFR5cGUmIG9yaWVudFR5cGVCYXNlVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX29yaWVudFR5cGUudmFsdWU7IH0KICAgICB2b2lkIHNldE9yaWVudFR5cGVCYXNl
VmFsdWUoY29uc3QgU1ZHTWFya2VyT3JpZW50VHlwZSYgdHlwZSkgeyBtX29yaWVudFR5cGUudmFs
dWUgPSB0eXBlOyB9CiAgICAgUGFzc1JlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVy
dHlUZWFyT2ZmPFNWR01hcmtlck9yaWVudFR5cGU+ID4gb3JpZW50VHlwZUFuaW1hdGVkKCk7CiAK
IHByaXZhdGU6Ci0gICAgdm9pZCBzeW5jaHJvbml6ZU9yaWVudFR5cGUoKTsKICAgICBtdXRhYmxl
IFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdNYXJrZXJPcmllbnRUeXBlPiBt
X29yaWVudFR5cGU7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5j
cHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTQgKzM2LDI3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRF
RF9FTlVNRVJBVElPTihTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6Om1hc2tVbml0c0F0dHIsIE1h
c2tVbml0cywgbWFza1VuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQotREVGSU5FX0FO
SU1BVEVEX0VOVU1FUkFUSU9OKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6bWFza0NvbnRlbnRV
bml0c0F0dHIsIE1hc2tDb250ZW50VW5pdHMsIG1hc2tDb250ZW50VW5pdHMsIFNWR1VuaXRUeXBl
czo6U1ZHVW5pdFR5cGUpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01hc2tFbGVtZW50LCBT
VkdOYW1lczo6eEF0dHIsIFgsIHgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01hc2tFbGVt
ZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01h
c2tFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0aCwgd2lkdGgpCi1ERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0
LCBoZWlnaHQpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdNYXNrRWxlbWVudCwgU1ZHTmFt
ZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BS
T1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHTWFza0VsZW1lbnQs
IFNWR05hbWVzOjptYXNrVW5pdHNBdHRyLCBNYXNrVW5pdHMsIG1hc2tVbml0cywgU1ZHVW5pdFR5
cGVzOjpTVkdVbml0VHlwZSkKKyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHTWFz
a0VsZW1lbnQsIFNWR05hbWVzOjptYXNrQ29udGVudFVuaXRzQXR0ciwgTWFza0NvbnRlbnRVbml0
cywgbWFza0NvbnRlbnRVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICBERUZJ
TkVfQU5JTUFURURfTEVOR1RIKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgp
CisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6OnlB
dHRyLCBZLCB5KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTWFza0VsZW1lbnQsIFNW
R05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQp
CisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHTWFza0VsZW1lbnQsIFNWR05hbWVzOjpl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwg
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElF
UworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR01hc2tFbGVtZW50KQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKG1hc2tVbml0cykKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShtYXNrQ29udGVudFVuaXRzKQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh3aWR0
aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShoZWlnaHQpCisgICAgUkVH
SVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkK
KyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRMb2NhdGFi
bGVFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rl
c3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR01hc2tF
bGVtZW50OjpTVkdNYXNrRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KQpAQCAtNTcsNiArNzAsNyBAQCBpbmxpbmUgU1ZHTWFza0VsZW1lbnQ6OlNWR01h
c2tFbGVtZW50KGNvCiAgICAgLy8gU3BlYzogSWYgdGhlIHgveSBhdHRyaWJ1dGUgaXMgbm90IHNw
ZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICItMTAlIiB3ZXJlIHNwZWNp
ZmllZC4KICAgICAvLyBTcGVjOiBJZiB0aGUgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qg
c3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEyMCUiIHdlcmUgc3Bl
Y2lmaWVkLgogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjptYXNrVGFnKSk7CisgICAg
cmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdNYXNrRWxlbWVudCgpOwogfQogCiBQYXNz
UmVmUHRyPFNWR01hc2tFbGVtZW50PiBTVkdNYXNrRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTE1MSw4OCArMTY1LDYg
QEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgICAgICBvYmpl
Y3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCi12b2lkIFNWR01hc2tFbGVtZW50OjpzeW5j
aHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlm
IChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplTWFza1VuaXRz
KCk7Ci0gICAgICAgIHN5bmNocm9uaXplTWFza0NvbnRlbnRVbml0cygpOwotICAgICAgICBzeW5j
aHJvbml6ZVgoKTsKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
V2lkdGgoKTsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAgICAgc3luY2hyb25p
emVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRFbGVtZW50
OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNW
R1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjptYXNrVW5pdHNB
dHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplTWFza1VuaXRzKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1hc2tDb250ZW50VW5pdHNB
dHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplTWFza0NvbnRlbnRVbml0cygpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVZKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OndpZHRoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVdpZHRoKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsK
LSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVy
dGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR01h
c2tFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
OwotfQotCi12b2lkIFNWR01hc2tFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBT
VkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0
aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om1hc2tVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVy
YXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6bWFz
a0NvbnRlbnRVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotfQotCiB2b2lkIFNWR01h
c2tFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJl
Zm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAg
ICAgU1ZHU3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVm
b3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNYXNrRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNYXNrRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwyNSArNTAsMjYgQEAg
cHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7
CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wg
Y2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFm
dGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCBS
ZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsK
IAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKLSAg
ICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVE
X0VOVU1FUkFUSU9OKE1hc2tVbml0cywgbWFza1VuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oTWFza0NvbnRlbnRVbml0cywg
bWFza0NvbnRlbnRVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKLSAgICBERUNMQVJF
X0FOSU1BVEVEX0xFTkdUSChYLCB4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkp
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQotICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJFR0lOX0RFQ0xB
UkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdNYXNrRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9FTlVNRVJBVElPTihNYXNrVW5pdHMsIG1hc2tVbml0cywgU1ZHVW5pdFR5cGVzOjpT
VkdVbml0VHlwZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihNYXNrQ29u
dGVudFVuaXRzLCBtYXNrQ29udGVudFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX0xFTkdUSChZLCB5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0
aCwgd2lkdGgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVh
dHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVu
c2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0
czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogfTsKIAogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50LmNwcAkocmV2aXNpb24g
OTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDE3ICszNiw2IEBAIFBhc3NSZWZQdHI8U1ZHTWlzc2luZ0ds
eXBoRWxlbWVudD4gU1ZHTWkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR01pc3NpbmdHbHlw
aEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHTWlzc2luZ0dseXBoRWxlbWVudDo6
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBTVkdTdHlsZWRFbGVtZW50
OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKSk7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkdfRk9OVFMpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50LmgJKHJldmlzaW9u
IDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNW
R01pc3NpbmdHbHlwaEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAg
dmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKLQogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVS
ZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKQEAgLTQyLDUgKzM5LDMg
QEAgcHJpdmF0ZToKIAogI2VuZGlmIC8vIEVOQUJMRShTVkdfRk9OVFMpCiAjZW5kaWYKLQotLy8g
dmltOnRzPTQ6bm9ldApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDMyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9OVU1C
RVIoU1ZHUGF0aEVsZW1lbnQsIFNWR05hbWVzOjpwYXRoTGVuZ3RoQXR0ciwgUGF0aExlbmd0aCwg
cGF0aExlbmd0aCkKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1BhdGhFbGVtZW50LCBTVkdO
YW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisvLyBEZWZpbmUgY3VzdG9tIGFuaW1h
dGVkIHByb3BlcnR5ICdkJy4KK2NvbnN0IFNWR1Byb3BlcnR5SW5mbyogU1ZHUGF0aEVsZW1lbnQ6
OmRQcm9wZXJ0eUluZm8oKQoreworICAgIHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIHNf
cHJvcGVydHlJbmZvID0gMDsKKyAgICBpZiAoIXNfcHJvcGVydHlJbmZvKSB7CisgICAgICAgIHNf
cHJvcGVydHlJbmZvID0gbmV3IFNWR1Byb3BlcnR5SW5mbyhBbmltYXRlZFBhdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6ZEF0dHIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6ZEF0
dHIubG9jYWxOYW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmU1ZHUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplRCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZTVkdQYXRoRWxlbWVudDo6bG9va3VwT3JDcmVhdGVE
V3JhcHBlcik7CisgICAgfQorICAgIHJldHVybiBzX3Byb3BlcnR5SW5mbzsKK30KKworQkVHSU5f
REVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNW
R1BhdGhFbGVtZW50LCBTVkdOYW1lczo6cGF0aExlbmd0aEF0dHIsIFBhdGhMZW5ndGgsIHBhdGhM
ZW5ndGgpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHUGF0aEVsZW1lbnQsIFNWR05h
bWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJP
UEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1BhdGhFbGVt
ZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGQpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocGF0aExlbmd0aCkKKyAgICBSRUdJU1RFUl9MT0NB
TF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lT
VEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQor
RU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1BhdGhFbGVtZW50
OjpTVkdQYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKQEAgLTU2LDYgKzc5LDcgQEAgaW5saW5lIFNWR1BhdGhFbGVtZW50OjpTVkdQYXRo
RWxlbWVudChjbwogICAgICwgbV9wYXRoU2VnTGlzdChQYXRoU2VnVW5hbHRlcmVkUm9sZSkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6cGF0aFRhZykpOworICAgIHJlZ2lzdGVy
QW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHUGF0aEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxT
VkdQYXRoRWxlbWVudD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0yMzgsNyArMjYyLDcgQEAgdm9pZCBT
VkdQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgIFJlbmRlclNWR1BhdGgqIHJl
bmRlcmVyID0gc3RhdGljX2Nhc3Q8UmVuZGVyU1ZHUGF0aCo+KHRoaXMtPnJlbmRlcmVyKCkpOwog
CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkQXR0cikgewotICAgICAgICBpZiAobV9h
bmltYXRhYmxlUGF0aFNlZ0xpc3QpIHsKKyAgICAgICAgaWYgKFNWR0FuaW1hdGVkUHJvcGVydHk6
Omxvb2t1cFdyYXBwZXI8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4odGhp
cywgZFByb3BlcnR5SW5mbygpKSkgewogICAgICAgICAgICAgU1ZHUGF0aFNlZ0xpc3QgbmV3TGlz
dChQYXRoU2VnVW5hbHRlcmVkUm9sZSk7CiAgICAgICAgICAgICBTVkdQYXRoUGFyc2VyRmFjdG9y
eSogZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7CiAgICAgICAgICAgICBm
YWN0b3J5LT5idWlsZFNWR1BhdGhTZWdMaXN0RnJvbUJ5dGVTdHJlYW0obV9wYXRoQnl0ZVN0cmVh
bS5nZXQoKSwgdGhpcywgbmV3TGlzdCwgVW5hbHRlcmVkUGFyc2luZyk7CkBAIC0yNTMsODAgKzI3
NywzMiBAQCB2b2lkIFNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkCiAgICAgICAg
IFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlk
YXRpb24ocmVuZGVyZXIpOwogfQogCi12b2lkIFNWR1BhdGhFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQorUGFzc1JlZlB0cjxTVkdBbmlt
YXRlZFByb3BlcnR5PiBTVkdQYXRoRWxlbWVudDo6bG9va3VwT3JDcmVhdGVEV3JhcHBlcih2b2lk
KiBjb250ZXh0RWxlbWVudCkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewot
ICAgICAgICBzeW5jaHJvbml6ZUQoKTsKLSAgICAgICAgc3luY2hyb25pemVQYXRoTGVuZ3RoKCk7
Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAg
ICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAg
ICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0
ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkQXR0cikgewotICAgICAgICBzeW5j
aHJvbml6ZUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6cGF0aExlbmd0aEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVQYXRoTGVu
Z3RoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICBTVkdQYXRoRWxlbWVudCogb3du
ZXJUeXBlID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aEVsZW1lbnQqPihjb250ZXh0RWxlbWVudCk7CiAK
LSAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAg
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQorICAgIFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBmYWN0b3J5ID0gU1ZH
UGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKKyAgICBmYWN0b3J5LT5idWlsZFNWR1BhdGhTZWdM
aXN0RnJvbUJ5dGVTdHJlYW0ob3duZXJUeXBlLT5tX3BhdGhCeXRlU3RyZWFtLmdldCgpLCBvd25l
clR5cGUsIG93bmVyVHlwZS0+bV9wYXRoU2VnTGlzdC52YWx1ZSwgVW5hbHRlcmVkUGFyc2luZyk7
CiAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR1BhdGhFbGVtZW50LCBTVkdBbmltYXRlZFBh
dGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLCBTVkdQYXRoU2VnTGlzdCwgdHJ1ZT4KKyAgICAgICAg
ICAgKG93bmVyVHlwZSwgZFByb3BlcnR5SW5mbygpLCBvd25lclR5cGUtPm1fcGF0aFNlZ0xpc3Qu
dmFsdWUpOwogfQogCi12b2lkIFNWR1BhdGhFbGVtZW50OjpzeW5jaHJvbml6ZUQoKQordm9pZCBT
VkdQYXRoRWxlbWVudDo6c3luY2hyb25pemVEKHZvaWQqIGNvbnRleHRFbGVtZW50KQogewotICAg
IGlmICghbV9wYXRoU2VnTGlzdC5zaG91bGRTeW5jaHJvbml6ZSkKKyAgICBBU1NFUlQoY29udGV4
dEVsZW1lbnQpOworICAgIFNWR1BhdGhFbGVtZW50KiBvd25lclR5cGUgPSBzdGF0aWNfY2FzdDxT
VkdQYXRoRWxlbWVudCo+KGNvbnRleHRFbGVtZW50KTsKKyAgICBpZiAoIW93bmVyVHlwZS0+bV9w
YXRoU2VnTGlzdC5zaG91bGRTeW5jaHJvbml6ZSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUodGhpcywgU1ZH
TmFtZXM6OmRBdHRyLCBtX3BhdGhTZWdMaXN0LnZhbHVlLnZhbHVlQXNTdHJpbmcoKSk7Ci19Ci0K
LUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdQYXRoRWxlbWVudDo6YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICBy
ZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdQYXRoRWxl
bWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjpkQXR0ciwgQW5pbWF0ZWRQYXRoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUob3duZXJUeXBl
LCBkUHJvcGVydHlJbmZvKCktPmF0dHJpYnV0ZU5hbWUsIG93bmVyVHlwZS0+bV9wYXRoU2VnTGlz
dC52YWx1ZS52YWx1ZUFzU3RyaW5nKCkpOwogfQogCiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVh
ck9mZiogU1ZHUGF0aEVsZW1lbnQ6OnBhdGhTZWdMaXN0KCkKIHsKLSAgICBpZiAoIW1fYW5pbWF0
YWJsZVBhdGhTZWdMaXN0KSB7Ci0gICAgICAgIG1fcGF0aFNlZ0xpc3Quc2hvdWxkU3luY2hyb25p
emUgPSB0cnVlOwotCi0gICAgICAgIFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBmYWN0b3J5ID0gU1ZH
UGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKLSAgICAgICAgZmFjdG9yeS0+YnVpbGRTVkdQYXRo
U2VnTGlzdEZyb21CeXRlU3RyZWFtKG1fcGF0aEJ5dGVTdHJlYW0uZ2V0KCksIHRoaXMsIG1fcGF0
aFNlZ0xpc3QudmFsdWUsIFVuYWx0ZXJlZFBhcnNpbmcpOwotCi0gICAgICAgIG1fYW5pbWF0YWJs
ZVBhdGhTZWdMaXN0ID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVy
PFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYsIFNWR1BhdGhTZWdMaXN0Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMsIFNWR05hbWVzOjpkQXR0ciwg
U1ZHTmFtZXM6OmRBdHRyLmxvY2FsTmFtZSgpLCBtX3BhdGhTZWdMaXN0LnZhbHVlKTsKLSAgICB9
Ci0KKyAgICBtX3BhdGhTZWdMaXN0LnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKKyAgICBpZiAo
IW1fYW5pbWF0YWJsZVBhdGhTZWdMaXN0KQorICAgICAgICBtX2FuaW1hdGFibGVQYXRoU2VnTGlz
dCA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVh
ck9mZj4obG9va3VwT3JDcmVhdGVEV3JhcHBlcih0aGlzKSk7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmKj4obV9hbmltYXRhYmxlUGF0aFNlZ0xp
c3QtPmJhc2VWYWwoUGF0aFNlZ1VuYWx0ZXJlZFJvbGUpKTsKIH0KIApAQCAtMzM4LDE2ICszMTQs
OSBAQCBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZiogU1ZHUGF0aEVsCiAKIFNWR1BhdGhT
ZWdMaXN0UHJvcGVydHlUZWFyT2ZmKiBTVkdQYXRoRWxlbWVudDo6YW5pbWF0ZWRQYXRoU2VnTGlz
dCgpCiB7Ci0gICAgaWYgKCFtX2FuaW1hdGFibGVQYXRoU2VnTGlzdCkgewotICAgICAgICBtX3Bh
dGhTZWdMaXN0LnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKLQotICAgICAgICBTVkdQYXRoUGFy
c2VyRmFjdG9yeSogZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7Ci0gICAg
ICAgIGZhY3RvcnktPmJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbShtX3BhdGhCeXRl
U3RyZWFtLmdldCgpLCB0aGlzLCBtX3BhdGhTZWdMaXN0LnZhbHVlLCBVbmFsdGVyZWRQYXJzaW5n
KTsKLQotICAgICAgICBtX2FuaW1hdGFibGVQYXRoU2VnTGlzdCA9IFNWR0FuaW1hdGVkUHJvcGVy
dHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlU
ZWFyT2ZmLCBTVkdQYXRoU2VnTGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICh0aGlzLCBTVkdOYW1lczo6ZEF0dHIsIFNWR05hbWVzOjpkQXR0ci5sb2NhbE5hbWUoKSwgbV9w
YXRoU2VnTGlzdC52YWx1ZSk7Ci0gICAgfQotCisgICAgbV9wYXRoU2VnTGlzdC5zaG91bGRTeW5j
aHJvbml6ZSA9IHRydWU7CisgICAgaWYgKCFtX2FuaW1hdGFibGVQYXRoU2VnTGlzdCkKKyAgICAg
ICAgbV9hbmltYXRhYmxlUGF0aFNlZ0xpc3QgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR0FuaW1h
dGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+KGxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIodGhp
cykpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9m
Zio+KG1fYW5pbWF0YWJsZVBhdGhTZWdMaXN0LT5hbmltVmFsKFBhdGhTZWdVbmFsdGVyZWRSb2xl
KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCShyZXZpc2lvbiA5
MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC05MSwxMSArOTEsMTIgQEAgcHVibGljOgogICAgIFNWR1BhdGhTZWdMaXN0UHJvcGVy
dHlUZWFyT2ZmKiBhbmltYXRlZE5vcm1hbGl6ZWRQYXRoU2VnTGlzdCgpOwogCiAgICAgU1ZHUGF0
aEJ5dGVTdHJlYW0qIHBhdGhCeXRlU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9wYXRoQnl0ZVN0
cmVhbS5nZXQoKTsgfQotICAgIFNWR0FuaW1hdGVkUHJvcGVydHkqIGFuaW1hdGFibGVQYXRoU2Vn
TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0YWJsZVBhdGhTZWdMaXN0LmdldCgpOyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgdG9QYXRoRGF0YShQYXRoJikgY29uc3Q7CiAgICAgdm9pZCBwYXRo
U2VnTGlzdENoYW5nZWQoU1ZHUGF0aFNlZ1JvbGUpOwogCisgICAgc3RhdGljIGNvbnN0IFNWR1By
b3BlcnR5SW5mbyogZFByb3BlcnR5SW5mbygpOworCiBwcml2YXRlOgogICAgIFNWR1BhdGhFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCkBAIC0xMDQsMjEgKzEwNSwy
NCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSopOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzTWFya2Vy
cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRl
Y2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFBhdGhMZW5ndGgsIHBhdGhM
ZW5ndGgpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFS
RV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQpCisgICAgLy8gQ3VzdG9tICdkJyBwcm9wZXJ0eQorICAgIHN0YXRpYyB2
b2lkIHN5bmNocm9uaXplRCh2b2lkKiBjb250ZXh0RWxlbWVudCk7CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVEV3JhcHBlcih2b2lkKiBj
b250ZXh0RWxlbWVudCk7CisKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHUGF0aEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFBhdGhMZW5n
dGgsIHBhdGhMZW5ndGgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRl
bnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3Vh
Z2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiAKLSAg
ICB2b2lkIHN5bmNocm9uaXplRCgpOwotCi1wcm90ZWN0ZWQ6Citwcml2YXRlOgogICAgIE93blB0
cjxTVkdQYXRoQnl0ZVN0cmVhbT4gbV9wYXRoQnl0ZVN0cmVhbTsKICAgICBtdXRhYmxlIFNWR1N5
bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdQYXRoU2VnTGlzdD4gbV9wYXRoU2VnTGlz
dDsKICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4gbV9h
bmltYXRhYmxlUGF0aFNlZ0xpc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNl
Z1dpdGhDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhT
ZWdXaXRoQ29udGV4dC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoU2VnV2l0aENvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBw
dWJsaWM6CiAgICAgICAgIGNhc2UgUGF0aFNlZ1VuZGVmaW5lZFJvbGU6CiAgICAgICAgICAgICBy
ZXR1cm4gMDsKICAgICAgICAgY2FzZSBQYXRoU2VnVW5hbHRlcmVkUm9sZToKLSAgICAgICAgICAg
IHJldHVybiBtX2VsZW1lbnQtPmFuaW1hdGFibGVQYXRoU2VnTGlzdCgpOworICAgICAgICAgICAg
cmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cFdyYXBwZXI8U1ZHQW5pbWF0ZWRQYXRo
U2VnTGlzdFByb3BlcnR5VGVhck9mZj4obV9lbGVtZW50LmdldCgpLCBTVkdQYXRoRWxlbWVudDo6
ZFByb3BlcnR5SW5mbygpKTsKICAgICAgICAgY2FzZSBQYXRoU2VnTm9ybWFsaXplZFJvbGU6CiAg
ICAgICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NDEyIC0gSW1wbGVtZW50IG5vcm1hbGl6ZWQgcGF0aCBzZWdtZW50IGxpc3RzIQogICAg
ICAgICAgICAgcmV0dXJuIDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxl
bWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRl
cm5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTggKzQyLDM1IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklO
RV9BTklNQVRFRF9MRU5HVEgoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwg
eCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjp5
QXR0ciwgWSwgeSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUGF0dGVybkVsZW1lbnQsIFNW
R05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgo
U1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdodCkK
LURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6
OnBhdHRlcm5Vbml0c0F0dHIsIFBhdHRlcm5Vbml0cywgcGF0dGVyblVuaXRzLCBTVkdVbml0VHlw
ZXM6OlNWR1VuaXRUeXBlKQotREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR1BhdHRlcm5F
bGVtZW50LCBTVkdOYW1lczo6cGF0dGVybkNvbnRlbnRVbml0c0F0dHIsIFBhdHRlcm5Db250ZW50
VW5pdHMsIHBhdHRlcm5Db250ZW50VW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCi1E
RUZJTkVfQU5JTUFURURfVFJBTlNGT1JNX0xJU1QoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVz
OjpwYXR0ZXJuVHJhbnNmb3JtQXR0ciwgUGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblRyYW5zZm9y
bSkgCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR1BhdHRlcm5FbGVtZW50LCBYTGlua05hbWVz
OjpocmVmQXR0ciwgSHJlZiwgaHJlZikKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1BhdHRl
cm5FbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi1ERUZJTkVf
QU5JTUFURURfUkVDVChTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBW
aWV3Qm94LCB2aWV3Qm94KQotREVGSU5FX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oU1ZH
UGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgUHJlc2Vy
dmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykgCitCRUdJTl9ERUZJTkVfQU5JTUFU
RURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUGF0dGVybkVsZW1l
bnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNW
R1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCisgICAgREVGSU5FX0FOSU1B
VEVEX0xFTkdUSChTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgV2lkdGgs
IHdpZHRoKQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUGF0dGVybkVsZW1lbnQsIFNW
R05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdodCkKKyAgICBERUZJTkVfQU5JTUFURURf
RU5VTUVSQVRJT04oU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRy
LCBQYXR0ZXJuVW5pdHMsIHBhdHRlcm5Vbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkK
KyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05h
bWVzOjpwYXR0ZXJuQ29udGVudFVuaXRzQXR0ciwgUGF0dGVybkNvbnRlbnRVbml0cywgcGF0dGVy
bkNvbnRlbnRVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICBERUZJTkVfQU5J
TUFURURfVFJBTlNGT1JNX0xJU1QoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjpwYXR0ZXJu
VHJhbnNmb3JtQXR0ciwgUGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblRyYW5zZm9ybSkgCisgICAg
REVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdQYXR0ZXJuRWxlbWVudCwgWExpbmtOYW1lczo6aHJl
ZkF0dHIsIEhyZWYsIGhyZWYpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHUGF0dGVy
bkVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBERUZJ
TkVfQU5JTUFURURfUkVDVChTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnZpZXdCb3hBdHRy
LCBWaWV3Qm94LCB2aWV3Qm94KQorICAgIERFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJB
VElPKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIs
IFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pIAorRU5EX0RFRklORV9B
TklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHUGF0dGVybkVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
eCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5KQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHdpZHRoKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1B
VEVEX1BST1BFUlRZKGhlaWdodCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShwYXR0ZXJuVW5pdHMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocGF0
dGVybkNvbnRlbnRVbml0cykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShw
YXR0ZXJuVHJhbnNmb3JtKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGhy
ZWYpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh2aWV3Qm94
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHByZXNlcnZlQXNwZWN0UmF0
aW8pIAorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVs
ZW1lbnQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMp
CitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHUGF0dGVybkVs
ZW1lbnQ6OlNWR1BhdHRlcm5FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCkBAIC02NSw2ICs4Miw3IEBAIGlubGluZSBTVkdQYXR0ZXJuRWxlbWVudDo6U1ZHUGF0dGVy
bkVsZW0KICAgICAsIG1fcGF0dGVybkNvbnRlbnRVbml0cyhTVkdVbml0VHlwZXM6OlNWR19VTklU
X1RZUEVfVVNFUlNQQUNFT05VU0UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6
OnBhdHRlcm5UYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1BhdHRl
cm5FbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHUGF0dGVybkVsZW1lbnQ+IFNWR1BhdHRl
cm5FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQpAQCAtMTgwLDExMCArMTk4LDYgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbgogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwog
fQogCi12b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoteyAgICAKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5h
bWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVBhdHRlcm5Vbml0cygpOwotICAgICAgICBzeW5j
aHJvbml6ZVBhdHRlcm5Db250ZW50VW5pdHMoKTsKLSAgICAgICAgc3luY2hyb25pemVQYXR0ZXJu
VHJhbnNmb3JtKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6
ZVkoKTsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhl
aWdodCgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsK
LSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIFNWR0ZpdFRvVmlld0JveDo6c3lu
Y2hyb25pemVQcm9wZXJ0aWVzKGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9u
aXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZH
U3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBhdHRlcm5Vbml0
c0F0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVQYXR0ZXJuVW5pdHMoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cGF0dGVybkNvbnRl
bnRVbml0c0F0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVQYXR0ZXJuQ29udGVudFVuaXRzKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnBhdHRlcm5UcmFuc2Zvcm1BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplUGF0dGVyblRyYW5z
Zm9ybSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjp4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVdpZHRo
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmhlaWdodEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChT
VkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNW
R0ZpdFRvVmlld0JveDo6c3luY2hyb25pemVQcm9wZXJ0aWVzKGF0dHJOYW1lKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJO
YW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHUGF0dGVybkVsZW1lbnQ6OmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAo
KSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQg
U1ZHUGF0dGVybkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0g
ICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
ID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZEVs
ZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgp
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0
ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6cGF0dGVyblVuaXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwYXR0ZXJuQ29udGVudFVuaXRz
QXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjpwYXR0ZXJuVHJhbnNmb3JtQXR0ciwgQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJl
ZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBBbmltYXRlZFJlY3QpOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIEFu
aW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7Ci19Ci0KIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdl
LCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKICAgICBTVkdTdHls
ZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2Us
IGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdHRlcm5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdHRlcm5FbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdHRlcm5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDMzICs2MCwzMCBAQCBw
cml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBj
aGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0
ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwog
CiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIAotICAg
IC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIKFgsIHgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKLSAgICBERUNM
QVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwgd2lkdGgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEgoSGVpZ2h0LCBoZWlnaHQpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihQ
YXR0ZXJuVW5pdHMsIHBhdHRlcm5Vbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFBhdHRlcm5Db250ZW50VW5pdHMsIHBhdHRl
cm5Db250ZW50VW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCi0gICAgREVDTEFSRV9B
TklNQVRFRF9UUkFOU0ZPUk1fTElTVChQYXR0ZXJuVHJhbnNmb3JtLCBwYXR0ZXJuVHJhbnNmb3Jt
KQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkco
SHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKLQotICAgIC8vIFNWR1BhdHRlcm5FbGVtZW50Ci0gICAgREVD
TEFSRV9BTklNQVRFRF9SRUNUKFZpZXdCb3gsIHZpZXdCb3gpCi0gICAgREVDTEFSRV9BTklNQVRF
RF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0
UmF0aW8pIAorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdQYXR0ZXJu
RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEgoV2lkdGgsIHdpZHRoKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWln
aHQsIGhlaWdodCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihQYXR0ZXJu
VW5pdHMsIHBhdHRlcm5Vbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihQYXR0ZXJuQ29udGVudFVuaXRzLCBwYXR0ZXJu
Q29udGVudFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFBhdHRlcm5UcmFuc2Zvcm0sIHBhdHRlcm5UcmFuc2Zv
cm0pCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCisgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1JFQ1QoVmll
d0JveCwgdmlld0JveCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJB
VElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pIAorICAgIEVORF9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRl
bnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3Vh
Z2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9s
eUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxl
bWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTIgKzM1LDM1IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9B
TklNQVRFRF9CT09MRUFOKFNWR1BvbHlFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQpCisvLyBEZWZpbmUgY3VzdG9tIGFuaW1hdGVkIHByb3BlcnR5ICdwb2ludHMn
LgorY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBTVkdQb2x5RWxlbWVudDo6cG9pbnRzUHJvcGVydHlJ
bmZvKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBzX3Byb3BlcnR5SW5m
byA9IDA7CisgICAgaWYgKCFzX3Byb3BlcnR5SW5mbykgeworICAgICAgICBzX3Byb3BlcnR5SW5m
byA9IG5ldyBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRQb2ludHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6cG9pbnRzQXR0ciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpwb2ludHNB
dHRyLmxvY2FsTmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJlNWR1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVBvaW50cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTVkdQb2x5RWxlbWVudDo6bG9va3VwT3JD
cmVhdGVQb2ludHNXcmFwcGVyKTsKKyAgICB9CisgICAgcmV0dXJuIHNfcHJvcGVydHlJbmZvOwor
fQorCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRF
RF9CT09MRUFOKFNWR1BvbHlFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdQb2x5RWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWShwb2ludHMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJ
U1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTCiAKIFNWR1BvbHlFbGVtZW50OjpTVkdQb2x5RWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKKyAgICByZWdp
c3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1BvbHlFbGVtZW50KCk7ICAgIAogfQogCiBib29s
IFNWR1BvbHlFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKQEAgLTY4LDggKzkxLDggQEAgdm9pZCBTVkdQb2x5RWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dAogICAgICAgICBpZiAoIXBvaW50c0xpc3RGcm9tU1ZHRGF0YShuZXdMaXN0
LCB2YWx1ZSkpCiAgICAgICAgICAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCkt
PnJlcG9ydEVycm9yKCJQcm9ibGVtIHBhcnNpbmcgcG9pbnRzPVwiIiArIHZhbHVlICsgIlwiIik7
CiAKLSAgICAgICAgaWYgKFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExp
c3Q+KiBsaXN0ID0gbV9hbmltYXRhYmxlUG9pbnRzTGlzdC5nZXQoKSkKLSAgICAgICAgICAgIGxp
c3QtPmRldGFjaExpc3RXcmFwcGVycyhuZXdMaXN0LnNpemUoKSk7CisgICAgICAgIGlmIChTVkdB
bmltYXRlZFByb3BlcnR5KiB3cmFwcGVyID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwV3Jh
cHBlcjxTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiA+KHRoaXMs
IHBvaW50c1Byb3BlcnR5SW5mbygpKSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFNWR0FuaW1h
dGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3Q+Kj4od3JhcHBlciktPmRldGFjaExp
c3RXcmFwcGVycyhuZXdMaXN0LnNpemUoKSk7CiAKICAgICAgICAgbV9wb2ludHMudmFsdWUgPSBu
ZXdMaXN0OwogICAgICAgICByZXR1cm47CkBAIC0xMTUsNjcgKzEzOCwzMyBAQCB2b2lkIFNWR1Bv
bHlFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLXZvaWQgU1ZHUG9seUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCit2b2lkIFNWR1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVBv
aW50cyh2b2lkKiBjb250ZXh0RWxlbWVudCkKIHsKLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQoKTsKLSAgICAgICAgc3luY2hyb25pemVQb2ludHMoKTsKLSAgICAgICAgU1ZHVGVz
dHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7CisgICAgQVNTRVJUKGNv
bnRleHRFbGVtZW50KTsKKyAgICBTVkdQb2x5RWxlbWVudCogb3duZXJUeXBlID0gc3RhdGljX2Nh
c3Q8U1ZHUG9seUVsZW1lbnQqPihjb250ZXh0RWxlbWVudCk7CisgICAgaWYgKCFvd25lclR5cGUt
Pm1fcG9pbnRzLnNob3VsZFN5bmNocm9uaXplKQogICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKQotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsK
LSAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXR0cikKLSAgICAgICAg
c3luY2hyb25pemVQb2ludHMoKTsKLSAgICBlbHNlIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXMo
dGhpcywgYXR0ck5hbWUpOworICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1
ZT46OnN5bmNocm9uaXplKG93bmVyVHlwZSwgcG9pbnRzUHJvcGVydHlJbmZvKCktPmF0dHJpYnV0
ZU5hbWUsIG93bmVyVHlwZS0+bV9wb2ludHMudmFsdWUudmFsdWVBc1N0cmluZygpKTsKIH0KIAot
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1BvbHlFbGVtZW50OjphdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCitQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IFNWR1BvbHlF
bGVtZW50Ojpsb29rdXBPckNyZWF0ZVBvaW50c1dyYXBwZXIodm9pZCogY29udGV4dEVsZW1lbnQp
CiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
c19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR1BvbHlFbGVtZW50OjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3Nl
ZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnBvaW50c0F0dHIs
IEFuaW1hdGVkUG9pbnRzKTsKLX0KLQotdm9pZCBTVkdQb2x5RWxlbWVudDo6c3luY2hyb25pemVQ
b2ludHMoKQotewotICAgIGlmICghbV9wb2ludHMuc2hvdWxkU3luY2hyb25pemUpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5
bmNocm9uaXplKHRoaXMsIFNWR05hbWVzOjpwb2ludHNBdHRyLCBtX3BvaW50cy52YWx1ZS52YWx1
ZUFzU3RyaW5nKCkpOworICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7CisgICAgU1ZHUG9seUVs
ZW1lbnQqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR1BvbHlFbGVtZW50Kj4oY29udGV4dEVs
ZW1lbnQpOworICAgIHJldHVybiBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBPckNyZWF0ZVdy
YXBwZXI8U1ZHUG9seUVsZW1lbnQsIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQ
b2ludExpc3Q+LCBTVkdQb2ludExpc3QsIHRydWU+CisgICAgICAgICAgIChvd25lclR5cGUsIHBv
aW50c1Byb3BlcnR5SW5mbygpLCBvd25lclR5cGUtPm1fcG9pbnRzLnZhbHVlKTsKIH0KIAogU1ZH
TGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3Q+KiBTVkdQb2x5RWxlbWVudDo6cG9pbnRz
KCkKIHsKLSAgICBpZiAoIW1fYW5pbWF0YWJsZVBvaW50c0xpc3QpIHsKLSAgICAgICAgbV9wb2lu
dHMuc2hvdWxkU3luY2hyb25pemUgPSB0cnVlOwotICAgICAgICBtX2FuaW1hdGFibGVQb2ludHNM
aXN0ID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR0FuaW1h
dGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3Q+ICwgU1ZHUG9pbnRMaXN0PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMsIFNWR05hbWVzOjpwb2ludHNBdHRy
LCBTVkdOYW1lczo6cG9pbnRzQXR0ci5sb2NhbE5hbWUoKSwgbV9wb2ludHMudmFsdWUpOwotICAg
IH0KLQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1Bv
aW50TGlzdD4qPihtX2FuaW1hdGFibGVQb2ludHNMaXN0LT5iYXNlVmFsKCkpOworICAgIG1fcG9p
bnRzLnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZH
TGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3Q+Kj4oc3RhdGljX3BvaW50ZXJfY2FzdDxT
VkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiA+KGxvb2t1cE9yQ3Jl
YXRlUG9pbnRzV3JhcHBlcih0aGlzKSktPmJhc2VWYWwoKSk7CiB9CiAKIFNWR0xpc3RQcm9wZXJ0
eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiogU1ZHUG9seUVsZW1lbnQ6OmFuaW1hdGVkUG9pbnRzKCkK
IHsKLSAgICBpZiAoIW1fYW5pbWF0YWJsZVBvaW50c0xpc3QpIHsKLSAgICAgICAgbV9wb2ludHMu
c2hvdWxkU3luY2hyb25pemUgPSB0cnVlOwotICAgICAgICBtX2FuaW1hdGFibGVQb2ludHNMaXN0
ID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR0FuaW1hdGVk
TGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3Q+ICwgU1ZHUG9pbnRMaXN0PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMsIFNWR05hbWVzOjpwb2ludHNBdHRyLCBT
VkdOYW1lczo6cG9pbnRzQXR0ci5sb2NhbE5hbWUoKSwgbV9wb2ludHMudmFsdWUpOwotICAgIH0K
LQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50
TGlzdD4qPihtX2FuaW1hdGFibGVQb2ludHNMaXN0LT5hbmltVmFsKCkpOworICAgIG1fcG9pbnRz
LnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHTGlz
dFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3Q+Kj4oc3RhdGljX3BvaW50ZXJfY2FzdDxTVkdB
bmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiA+KGxvb2t1cE9yQ3JlYXRl
UG9pbnRzV3JhcHBlcih0aGlzKSktPmFuaW1WYWwoKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQb2x5RWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQb2x5RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBAIHB1
YmxpYzoKIAogICAgIFNWR1BvaW50TGlzdCYgcG9pbnRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9w
b2ludHMudmFsdWU7IH0KIAorICAgIHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIHBvaW50
c1Byb3BlcnR5SW5mbygpOworCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHUG9seUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKQEAgLTUxLDIwICs1MywyNCBAQCBwcml2YXRl
OgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsgCiAgICAg
dmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwot
ICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0g
ICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c01hcmtlcnMoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAKLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi0KLSAgICB2b2lkIHN5bmNocm9uaXplUG9pbnRzKCk7
CisgICAgLy8gQ3VzdG9tICdwb2ludHMnIHByb3BlcnR5CisgICAgc3RhdGljIHZvaWQgc3luY2hy
b25pemVQb2ludHModm9pZCogY29udGV4dEVsZW1lbnQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNWR0FuaW1hdGVkUHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlUG9pbnRzV3JhcHBlcih2b2lkKiBj
b250ZXh0RWxlbWVudCk7CisKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHUG9seUVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRl
bnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3Vh
Z2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiAKIHBy
b3RlY3RlZDoKICAgICBtdXRhYmxlIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxT
VkdQb2ludExpc3Q+IG1fcG9pbnRzOwotICAgIFJlZlB0cjxTVkdBbmltYXRlZExpc3RQcm9wZXJ0
eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiA+IG1fYW5pbWF0YWJsZVBvaW50c0xpc3Q7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDAsMTIgKzQwLDIyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJv
cGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50LCBTVkdOYW1lczo6Y3hBdHRyLCBDeCwgY3gpCi1ERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmN5QXR0ciwgQ3ksIGN5KQot
REVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVz
OjpyQXR0ciwgUiwgcikKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50LCBTVkdOYW1lczo6ZnhBdHRyLCBGeCwgZngpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RI
KFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmZ5QXR0ciwgRnksIGZ5KQorQkVH
SU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RI
KFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmN4QXR0ciwgQ3gsIGN4KQorICAg
IERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdOYW1l
czo6Y3lBdHRyLCBDeSwgY3kpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpyQXR0ciwgUiwgcikKKyAgICBERUZJTkVfQU5JTUFU
RURfTEVOR1RIKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmZ4QXR0ciwgRngs
IGZ4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
LCBTVkdOYW1lczo6ZnlBdHRyLCBGeSwgZnkpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJ
RVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoY3gpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoY3kpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkocikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShmeCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShmeSkKKyAgICBSRUdJ
U1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdHcmFkaWVudEVsZW1lbnQpCitFTkRf
UkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50OjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHR3JhZGllbnRFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQpAQCAtNTcsNiArNjcsNyBAQCBpbmxpbmUgU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50OjpTVkdSYWRpCiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIGN4L2N5L3IgYXR0cmlidXRl
IGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiNTAlIiB3
ZXJlIHNwZWNpZmllZC4KICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6cmFkaWFsR3Jh
ZGllbnRUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dD4gU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTI5LDY5ICsxNDAsNiBAQCB2b2lkIFNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmliCiAgICAgICAgIG9iamVjdC0+c2V0TmVl
ZHNMYXlvdXQodHJ1ZSk7CiB9CiAKLXZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpzeW5j
aHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlm
IChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplQ3goKTsKLSAg
ICAgICAgc3luY2hyb25pemVDeSgpOwotICAgICAgICBzeW5jaHJvbml6ZUZ4KCk7Ci0gICAgICAg
IHN5bmNocm9uaXplRnkoKTsKLSAgICAgICAgc3luY2hyb25pemVSKCk7Ci0gICAgICAgIFNWR0dy
YWRpZW50RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewotICAgICAgICBTVkdHcmFkaWVudEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5h
bWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjpjeEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVDeCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpjeUF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVDeSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjpmeEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVGeCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpm
eUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVGeSgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpyQXR0cikgewotICAgICAgICBzeW5j
aHJvbml6ZVIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
OwotfQotCi12b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwotCi0gICAgU1ZHR3JhZGllbnRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Y3hBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpjeUF0dHIsIEFuaW1hdGVk
TGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnJB
dHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjpmeEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmZ5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotfQotCiBS
ZW5kZXJPYmplY3QqIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEp
IFJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQodGhpcyk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsMjAgKzQyLDE4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHls
ZSopOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsK
IAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5J
TUFURURfTEVOR1RIKEN4LCBjeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeSwgY3kp
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUiwgcikKLSAgICBERUNMQVJFX0FOSU1BVEVE
X0xFTkdUSChGeCwgZngpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoRnksIGZ5KQorICAg
IEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN4LCBjeCkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9MRU5HVEgoQ3ksIGN5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSChSLCByKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChGeCwgZngpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEZ5LCBmeSkKKyAgICBFTkRfREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTQg
KzMyLDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkg
ZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05h
bWVzOjp4QXR0ciwgWCwgeCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQs
IFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVs
ZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKLURFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhl
aWdodCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjpy
eEF0dHIsIFJ4LCByeCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNW
R05hbWVzOjpyeUF0dHIsIFJ5LCByeSkKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1JlY3RF
bGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJ
TkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVj
dEVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCisgICAgREVGSU5FX0FO
SU1BVEVEX0xFTkdUSChTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgV2lkdGgs
IHdpZHRoKQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05h
bWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdodCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6cnhBdHRyLCBSeCwgcngpCisgICAgREVGSU5F
X0FOSU1BVEVEX0xFTkdUSChTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnJ5QXR0ciwgUnksIHJ5
KQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJ
RVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdSZWN0RWxlbWVudCkK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh4KQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKHkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkod2lkdGgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaGVpZ2h0
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHJ4KQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHJ5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVE
X1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5U
X0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAg
UkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNU
RVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHUmVjdEVsZW1lbnQ6OlNWR1JlY3RF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
ICAgICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQpA
QCAtNTEsNiArNjQsNyBAQCBpbmxpbmUgU1ZHUmVjdEVsZW1lbnQ6OlNWR1JlY3RFbGVtZW50KGNv
CiAgICAgLCBtX3J5KExlbmd0aE1vZGVIZWlnaHQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
U1ZHTmFtZXM6OnJlY3RUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNW
R1JlY3RFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHUmVjdEVsZW1lbnQ+IFNWR1JlY3RF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQpAQCAtMTcwLDg4ICsxODQsNiBAQCB2b2lkIFNWR1JlY3RFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHUmVj
dEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hy
b25pemVYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICBzeW5jaHJvbml6ZVdp
ZHRoKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
UngoKTsKLSAgICAgICAgc3luY2hyb25pemVSeSgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJv
cGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAg
ICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6eEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVXaWR0
aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjpoZWlnaHRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJ4QXR0cikg
ewotICAgICAgICBzeW5jaHJvbml6ZVJ4KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJ5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6
ZVJ5KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0g
ICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0K
LUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdSZWN0RWxlbWVudDo6YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICBy
ZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdSZWN0RWxl
bWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgp
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0
ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6cnhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyeUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLX0KLQogdm9p
ZCBTVkdSZWN0RWxlbWVudDo6dG9QYXRoRGF0YShQYXRoJiBwYXRoKSBjb25zdAogewogICAgIEFT
U0VSVChwYXRoLmlzRW1wdHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQu
aAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcsMjQgKzQ3LDI1IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVh
bCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgdG9QYXRoRGF0YShQYXRoJikgY29uc3Q7CiAKICAgICB2aXJ0dWFs
IGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCi0gICAgLy8gQW5pbWF0ZWQg
cHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkK
LSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQotICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIKFdpZHRoLCB3aWR0aCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQs
IGhlaWdodCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSeCwgcngpCi0gICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoUnksIHJ5KQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdSZWN0RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9MRU5HVEgoWCwgeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9MRU5HVEgoUngsIHJ4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSeSwg
cnkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRG
ZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0
ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKHRoaXMp
OyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSB7IFNWR1Rl
c3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZp
c2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTYsMTQgKzU2LDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Ly8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9MRU5HVEgo
U1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQotREVGSU5FX0FOSU1BVEVEX0xF
TkdUSChTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCi1ERUZJTkVfQU5JTUFU
RURfTEVOR1RIKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0
aCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdo
dEF0dHIsIEhlaWdodCwgaGVpZ2h0KQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHU1ZHRWxl
bWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotREVGSU5FX0FOSU1B
VEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oU1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZl
QXNwZWN0UmF0aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlv
KQotREVGSU5FX0FOSU1BVEVEX1JFQ1QoU1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OnZpZXdCb3hB
dHRyLCBWaWV3Qm94LCB2aWV3Qm94KQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMK
KyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjp4QXR0
ciwgWCwgeCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1NWR0VsZW1lbnQsIFNWR05h
bWVzOjp5QXR0ciwgWSwgeSkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1NWR0VsZW1l
bnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKKyAgICBERUZJTkVfQU5JTUFU
RURfTEVOR1RIKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhl
aWdodCkKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdTVkdFbGVtZW50LCBTVkdOYW1l
czo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgREVGSU5FX0FOSU1BVEVEX1BSRVNF
UlZFQVNQRUNUUkFUSU8oU1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0
aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgIERF
RklORV9BTklNQVRFRF9SRUNUKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjp2aWV3Qm94QXR0ciwg
Vmlld0JveCwgdmlld0JveCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJ
Tl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1NWR0VsZW1lbnQpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWSh5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHdpZHRo
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGhlaWdodCkKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHZpZXdCb3gpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICBSRUdJ
U1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50
KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5E
X1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1NWR0VsZW1lbnQ6OlNW
R1NWR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykK
ICAgICA6IFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jKQpAQCAtNzcsNiAr
OTAsNyBAQCBpbmxpbmUgU1ZHU1ZHRWxlbWVudDo6U1ZHU1ZHRWxlbWVudChjb25zCiAgICAgLCBt
X2hhc1NldENvbnRhaW5lclNpemUoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZH
TmFtZXM6OnN2Z1RhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHU1ZH
RWxlbWVudCgpOwogICAgIGRvYy0+cmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFj
a3ModGhpcyk7CiB9CiAKQEAgLTM1NSw1NSArMzY5LDYgQEAgdm9pZCBTVkdTVkdFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKAogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoYXR0ck5hbWUpOwogfQogCi12b2lkIFNWR1NWR0VsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1l
ID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHN5bmNo
cm9uaXplWSgpOwotICAgICAgICBzeW5jaHJvbml6ZVdpZHRoKCk7Ci0gICAgICAgIHN5bmNocm9u
aXplSGVpZ2h0KCk7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCgpOwotICAgICAgICBTVkdGaXRUb1ZpZXdCb3g6OnN5bmNocm9uaXplUHJvcGVydGllcyhhdHRy
TmFtZSk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0
ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgIGVsc2UgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAg
ZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgc3luY2hy
b25pemVXaWR0aCgpOwotICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRB
dHRyKQotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgIGVsc2UgaWYgKFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAg
ICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICBlbHNlIGlmIChT
VkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSAKLSAgICAgICAgU1ZH
Rml0VG9WaWV3Qm94OjpzeW5jaHJvbml6ZVByb3BlcnRpZXMoYXR0ck5hbWUpOwotICAgIGVsc2Ug
aWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKLSAgICAgICAgU1ZHVGVz
dHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgZWxzZQotICAg
ICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLX0K
LQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1NWR0VsZW1lbnQ6OmF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAg
cmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHU1ZHRWxl
bWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1h
dGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBBbmltYXRlZFJlY3QpOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0
dHIsIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7Ci19Ci0KIHVuc2lnbmVkIFNWR1NWR0Vs
ZW1lbnQ6OnN1c3BlbmRSZWRyYXcodW5zaWduZWQgLyogbWF4V2FpdE1pbGxpc2Vjb25kcyAqLykK
IHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1lIChzZWUgYnVnIDExMjc1KQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NSwyNyArMTQ1LDI2
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3Ro
cygpIGNvbnN0OwogCiAgICAgdm9pZCBpbmhlcml0Vmlld0F0dHJpYnV0ZXMoU1ZHVmlld0VsZW1l
bnQqKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xB
UkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwg
eSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwgd2lkdGgpCi0gICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi0KLSAgICAvLyBTVkdG
aXRUb1ZpZXdCb3gKLSAgICBERUNMQVJFX0FOSU1BVEVEX1JFQ1QoVmlld0JveCwgdmlld0JveCkK
LSAgICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oUHJlc2VydmVBc3BlY3RS
YXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKLSAKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHU1ZHRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoWCwgeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9C
T09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUkVDVChWaWV3Qm94LCB2aWV3Qm94KQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oUHJlc2VydmVBc3BlY3RS
YXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJl
cXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMo
dGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMo
KSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3lu
Y2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQorCiAgICAgdmlydHVhbCB2b2lkIGRvY3Vt
ZW50V2lsbEJlY29tZUluYWN0aXZlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50RGlkQmVj
b21lQWN0aXZlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5j
cHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwyMSArMjgsMjkgQEAKICNpbmNsdWRlICJFdmVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNp
bmNsdWRlICJTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oIgogI2luY2x1ZGUgIlNW
R0VsZW1lbnRJbnN0YW5jZS5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXZlbnRMaXN0ZW5lci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVk
IHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR1NjcmlwdEVs
ZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQotREVGSU5FX0FOSU1BVEVE
X0JPT0xFQU4oU1ZHU2NyaXB0RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5J
TUFURURfU1RSSU5HKFNWR1NjcmlwdEVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVm
LCBocmVmKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1NjcmlwdEVsZW1lbnQsIFNW
R05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURf
UFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Njcmlw
dEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1Njcmlw
dEVsZW1lbnQ6OlNWR1NjcmlwdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHdhc0luc2VydGVkQnlQYXJzZXIsIGJvb2wgYWxyZWFk
eVN0YXJ0ZWQpCiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgU2Ny
aXB0RWxlbWVudCh0aGlzLCB3YXNJbnNlcnRlZEJ5UGFyc2VyLCBhbHJlYWR5U3RhcnRlZCkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6c2NyaXB0VGFnKSk7CisgICAgcmVnaXN0
ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdTY3JpcHRFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQ
dHI8U1ZHU2NyaXB0RWxlbWVudD4gU1ZHU2NyaXB0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBpbnNlcnRlZEJ5UGFy
c2VyKQpAQCAtMTIwLDQ0ICsxMjgsNiBAQCB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHU2NyaXB0
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJv
bml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgc3luY2hyb25pemVIcmVm
KCk7Ci0gICAgICAgIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRy
TmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9ICAgCi0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAg
c3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgU1ZHU2NyaXB0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQot
ewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNf
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdTY3JpcHRFbGVtZW50OjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0KIHZvaWQg
U1ZHU2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewogICAgIFNWR0VsZW1l
bnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U2NyaXB0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3Jp
cHRFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Nj
cmlwdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsOSArNTEsNiBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBm
YWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQg
Y2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgYm9v
bCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZmlu
aXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAKQEAgLTc1LDEzICs3MiwxMCBAQCBwcml2YXRlOgogCiAg
ICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENo
aWxkcmVuKCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMK
LQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhy
ZWYsIGhyZWYpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVD
TEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR1NjcmlwdEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYs
IGhyZWYpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMKIAogICAgIFN0cmluZyBtX3R5cGU7CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE0ICsz
MywyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRl
ZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR1N0b3BFbGVtZW50LCBTVkdOYW1l
czo6b2Zmc2V0QXR0ciwgT2Zmc2V0LCBvZmZzZXQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJP
UEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHU3RvcEVsZW1lbnQsIFNWR05h
bWVzOjpvZmZzZXRBdHRyLCBPZmZzZXQsIG9mZnNldCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJP
UEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0b3BFbGVt
ZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKG9mZnNldCkKKyAgICBS
RUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRFbGVtZW50KQorRU5E
X1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1N0b3BFbGVtZW50OjpT
VkdTdG9wRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwg
bV9vZmZzZXQoMCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6c3RvcFRhZykp
OworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHU3RvcEVsZW1lbnQoKTsKIH0K
IAogUGFzc1JlZlB0cjxTVkdTdG9wRWxlbWVudD4gU1ZHU3RvcEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC05NSw0MSAr
MTAyLDYgQEAgdm9pZCBTVkdTdG9wRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR1N0b3BFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRy
TmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplT2Zmc2V0KCk7Ci0gICAg
ICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShh
dHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6Om9mZnNldEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVPZmZzZXQoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1B
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHU3RvcEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0
dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHU3RvcEVsZW1l
bnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNz
ZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpvZmZzZXRBdHRy
LCBBbmltYXRlZExlbmd0aCk7Ci19Ci0KIFJlbmRlck9iamVjdCogU1ZHU3RvcEVsZW1lbnQ6OmNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJl
dHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdHcmFkaWVudFN0b3AodGhpcyk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTYgKzM5LDE0
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0
ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNHcmFkaWVudFN0b3Ao
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCi0gICAgLy8gQW5pbWF0
ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoT2Zm
c2V0LCBvZmZzZXQpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0
b3BFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihPZmZzZXQsIG9mZnNl
dCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTEgKzQ0LDE3IEBACiAjaW5jbHVkZSAiU1ZHVXNl
RWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRF
RF9TVFJJTkcoU1ZHU3R5bGVkRWxlbWVudCwgSFRNTE5hbWVzOjpjbGFzc0F0dHIsIENsYXNzTmFt
ZSwgY2xhc3NOYW1lKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJ
TkVfQU5JTUFURURfU1RSSU5HKFNWR1N0eWxlZEVsZW1lbnQsIEhUTUxOYW1lczo6Y2xhc3NBdHRy
LCBDbGFzc05hbWUsIGNsYXNzTmFtZSkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUwor
CitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVsZW1lbnQpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoY2xhc3NOYW1lKQorRU5EX1JFR0lT
VEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogdXNpbmcgbmFtZXNwYWNlIFNWR05hbWVzOwogCkBA
IC02Miw2ICs2OCw3IEBAIHZvaWQgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShIYXNoTWFwPEEK
IFNWR1N0eWxlZEVsZW1lbnQ6OlNWR1N0eWxlZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKIHsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1N0eWxlZEVs
ZW1lbnQoKTsKIH0KIAogU1ZHU3R5bGVkRWxlbWVudDo6flNWR1N0eWxlZEVsZW1lbnQoKQpAQCAt
MjA1LDEwICsyMTIsMTEgQEAgaW50IFNWR1N0eWxlZEVsZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JT
VgogICAgIHJldHVybiBwcm9wZXJ0eU5hbWVUb0lkTWFwLT5nZXQoYXR0ck5hbWUubG9jYWxOYW1l
KCkuaW1wbCgpKTsKIH0KIAordHlwZWRlZiBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVk
UHJvcGVydHlUeXBlPiBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKIHN0YXRpYyBpbmxpbmUg
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGNzc1Byb3BlcnR5VG9UeXBlTWFwKCkKIHsKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2Nzc1By
b3BlcnR5TWFwLCAoKSk7Ci0gICAgCisKICAgICBpZiAoIXNfY3NzUHJvcGVydHlNYXAuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gc19jc3NQcm9wZXJ0eU1hcDsKIApAQCAtMjY5LDEyICsyNzcs
MTUgQEAgc3RhdGljIGlubGluZSBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcAogICAgIHJldHVy
biBzX2Nzc1Byb3BlcnR5TWFwOwogfQogCi1BbmltYXRlZEF0dHJpYnV0ZVR5cGUgU1ZHU3R5bGVk
RWxlbWVudDo6YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JDU1NQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKK3ZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6YW5pbWF0ZWRQcm9wZXJ0
eVR5cGVGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIFZlY3RvcjxB
bmltYXRlZFByb3BlcnR5VHlwZT4mIHByb3BlcnR5VHlwZXMpCiB7CisgICAgU1ZHRWxlbWVudDo6
YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUoYXR0ck5hbWUsIHByb3BlcnR5VHlwZXMp
OworICAgIGlmICghcHJvcGVydHlUeXBlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwog
ICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBjc3NQcm9wZXJ0eVR5cGVNYXAgPSBjc3NQ
cm9wZXJ0eVRvVHlwZU1hcCgpOwogICAgIGlmIChjc3NQcm9wZXJ0eVR5cGVNYXAuY29udGFpbnMo
YXR0ck5hbWUpKQotICAgICAgICByZXR1cm4gY3NzUHJvcGVydHlUeXBlTWFwLmdldChhdHRyTmFt
ZSk7Ci0gICAgcmV0dXJuIEFuaW1hdGVkVW5rbm93bjsKKyAgICAgICAgcHJvcGVydHlUeXBlcy5h
cHBlbmQoY3NzUHJvcGVydHlUeXBlTWFwLmdldChhdHRyTmFtZSkpOwogfQogCiBib29sIFNWR1N0
eWxlZEVsZW1lbnQ6OmlzQW5pbWF0YWJsZUNTU1Byb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQpAQCAtMjgyLDExICsyOTMsNiBAQCBib29sIFNWR1N0eWxlZEVsZW1lbnQ6Omlz
QW5pbWF0YWJsZUNTU1ByCiAgICAgcmV0dXJuIGNzc1Byb3BlcnR5VG9UeXBlTWFwKCkuY29udGFp
bnMoYXR0ck5hbWUpOwogfQogCi12b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXApCi17Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KEhUTUxOYW1lczo6Y2xhc3NBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0KIGJvb2wgU1ZH
U3R5bGVkRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwg
TWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKIHsKICAgICBpZiAoU1ZHU3R5bGVk
RWxlbWVudDo6Y3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoYXR0ck5hbWUpID4gMCkg
ewpAQCAtMzUxLDEyICszNTcsNiBAQCB2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nCiAgICAgfQogfQogCi12b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1l
ID09IGFueVFOYW1lKCkgfHwgYXR0ck5hbWUgPT0gSFRNTE5hbWVzOjpjbGFzc0F0dHIpCi0gICAg
ICAgIHN5bmNocm9uaXplQ2xhc3NOYW1lKCk7Ci19Ci0KIHZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6
YXR0YWNoKCkKIHsKICAgICBTVkdFbGVtZW50OjphdHRhY2goKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBA
IHB1YmxpYzoKICAgICBib29sIGhhc1BlbmRpbmdSZXNvdXJjZXMoKSBjb25zdDsKICAgICB2b2lk
IHNldEhhc1BlbmRpbmdSZXNvdXJjZXMoYm9vbCk7CiAKLSAgICBBbmltYXRlZEF0dHJpYnV0ZVR5
cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JDU1NQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CisgICAgdmlydHVhbCB2b2lkIGFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBWZWN0b3I8QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+Jik7CiAgICAg
c3RhdGljIGJvb2wgaXNBbmltYXRhYmxlQ1NTUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogCiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxDb29yZGluYXRlU3BhY2VUcmFu
c2Zvcm0oU1ZHTG9jYXRhYmxlOjpDVE1TY29wZSkgY29uc3Q7CkBAIC02MiwxNSArNjIsMTEgQEAg
cHVibGljOgogCiBwcm90ZWN0ZWQ6IAogICAgIFNWR1N0eWxlZEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Kik7Ci0KICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCBib29sIG1hcFRv
RW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JikgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAg
IHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci0KLSAgICB2b2lkIGZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYpOwogCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwpAQCAtOTQsOCArOTAsOSBA
QCBwcml2YXRlOgogCiAgICAgSGFzaFNldDxTVkdTdHlsZWRFbGVtZW50Kj4gbV9lbGVtZW50c1dp
dGhSZWxhdGl2ZUxlbmd0aHM7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlv
bnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhDbGFzc05hbWUsIGNsYXNzTmFtZSkKKyAg
ICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkRWxlbWVudCkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoQ2xhc3NOYW1lLCBjbGFzc05hbWUpCisgICAg
RU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDEyICszMiwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3Bl
cnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfVFJBTlNGT1JNX0xJU1QoU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQsIFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLCBUcmFuc2Zvcm0s
IHRyYW5zZm9ybSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5F
X0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LCBT
VkdOYW1lczo6dHJhbnNmb3JtQXR0ciwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCitFTkRfREVGSU5F
X0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWSh0cmFuc2Zvcm0pCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCkKK0VORF9SRUdJU1RFUl9BTklNQVRF
RF9QUk9QRVJUSUVTCiAKIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KQogeworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQoKTsKIH0KIAogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6
On5TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCgpCkBAIC0xMTksMjcgKzEyNiw2IEBAIHZv
aWQgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN2Z0EKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAotdm9pZCBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAo
YXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVRyYW5zZm9ybSgp
OwotICAgICAgICBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1l
bnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplVHJhbnNmb3JtKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQogU1ZHRWxlbWVudCogU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQ6Om5lYXJlc3RWaWV3cG9ydEVsZW1lbnQoKSBjb25zdAogewogICAgIHJl
dHVybiBTVkdUcmFuc2Zvcm1hYmxlOjpuZWFyZXN0Vmlld3BvcnRFbGVtZW50KHRoaXMpOwpAQCAt
MTYxLDEzICsxNDcsNiBAQCBSZW5kZXJPYmplY3QqIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1BhdGgodGhpcyk7CiB9CiAKLXZvaWQg
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXApCi17Ci0gICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICAKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIsIEFu
aW1hdGVkVHJhbnNmb3JtTGlzdCk7Ci19Ci0KIHZvaWQgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQ6OnRvQ2xpcFBhdGgoUGF0aCYgcGF0aCkgY29uc3QKIHsKICAgICB0b1BhdGhEYXRhKHBh
dGgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDExICs1
OCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0
dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdm9pZCBmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmKTsKIAotICAgIC8vIEFuaW1hdGVk
IHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfVFJBTlNGT1JNX0xJ
U1QoVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX1RSQU5TRk9STV9MSVNUKFRyYW5zZm9ybSwgdHJhbnNmb3JtKQorICAgIEVORF9ERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNT
dHlsZWRUcmFuc2Zvcm1hYmxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDEzICsyOCwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3Bl
cnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdTd2l0Y2hFbGVtZW50
LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5J
TUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1N3aXRjaEVs
ZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVf
QU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR1N3aXRjaEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9Q
QVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRF
RF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdTd2l0Y2hFbGVtZW50OjpTVkdTd2l0Y2hFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6
IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpzd2l0Y2hUYWcpKTsKKyAgICByZWdpc3RlckFu
aW1hdGVkUHJvcGVydGllc0ZvclNWR1N3aXRjaEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxT
VkdTd2l0Y2hFbGVtZW50PiBTVkdTd2l0Y2hFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNjUsMzMgKzczLDYgQEAgUmVu
ZGVyT2JqZWN0KiBTVkdTd2l0Y2hFbGVtZW50OjpjcmVhdGVSZQogICAgIHJldHVybiBuZXcgKGFy
ZW5hKSBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKHRoaXMpOwogfQogCi12b2lkIFNW
R1N3aXRjaEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCi17Ci0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9u
aXplUHJvcGVydHkoYXR0ck5hbWUpOwotCi0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkp
IHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAg
ICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAgICBzeW5jaHJvbml6ZUV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICBlbHNlIGlmIChTVkdUZXN0czo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRp
ZXModGhpcywgYXR0ck5hbWUpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZH
U3dpdGNoRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcDsKLX0KLQotdm9pZCBTVkdTd2l0Y2hFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQotewotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsUGFz
c2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KSk7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTd2l0Y2hFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N3aXRjaEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTUgKzQ2LDE1IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9k
ZSopIGNvbnN0OwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQ
cm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgIAotICAgIHZpcnR1YWwgdm9pZCBm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCi0gICAgLy8g
QW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR1N3aXRjaEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
Qk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAotICAgIC8vIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAv
LyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMo
KSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpz
eW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBz
eW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1M
YW5ndWFnZSh0aGlzKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDE1ICsyOSwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHBy
b3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdTeW1ib2xFbGVt
ZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi1ERUZJTkVfQU5JTUFU
RURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhTVkdTeW1ib2xFbGVtZW50LCBTVkdOYW1lczo6cHJlc2Vy
dmVBc3BlY3RSYXRpb0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0
aW8pIAotREVGSU5FX0FOSU1BVEVEX1JFQ1QoU1ZHU3ltYm9sRWxlbWVudCwgU1ZHTmFtZXM6OnZp
ZXdCb3hBdHRyLCBWaWV3Qm94LCB2aWV3Qm94KQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdTeW1ib2xFbGVtZW50LCBTVkdO
YW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgREVGSU5FX0FOSU1BVEVEX1BS
RVNFUlZFQVNQRUNUUkFUSU8oU1ZHU3ltYm9sRWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQXNw
ZWN0UmF0aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSAK
KyAgICBERUZJTkVfQU5JTUFURURfUkVDVChTVkdTeW1ib2xFbGVtZW50LCBTVkdOYW1lczo6dmll
d0JveEF0dHIsIFZpZXdCb3gsIHZpZXdCb3gpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVS
VElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N5bWJvbEVsZW1l
bnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh2aWV3Qm94
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHByZXNlcnZlQXNwZWN0UmF0
aW8pIAorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVs
ZW1lbnQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHU3lt
Ym9sRWxlbWVudDo6U1ZHU3ltYm9sRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpzeW1ib2xUYWcpKTsK
KyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1N5bWJvbEVsZW1lbnQoKTsKIH0K
IAogUGFzc1JlZlB0cjxTVkdTeW1ib2xFbGVtZW50PiBTVkdTeW1ib2xFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtODcs
NDggKzk2LDYgQEAgdm9pZCBTVkdTeW1ib2xFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZwogICAg
ICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwogfQogCi12b2lkIFNWR1N5
bWJvbEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR0ZpdFRvVmll
d0JveDo6c3luY2hyb25pemVQcm9wZXJ0aWVzKGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHU3R5bGVk
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAg
ICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChTVkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAg
ICAgIFNWR0ZpdFRvVmlld0JveDo6c3luY2hyb25pemVQcm9wZXJ0aWVzKGF0dHJOYW1lKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1B
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHU3ltYm9sRWxlbWVudDo6YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICBy
ZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdTeW1ib2xF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxs
UGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dmlld0Jv
eEF0dHIsIEFuaW1hdGVkUmVjdCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVj
dFJhdGlvKTsKLX0KLQogYm9vbCBTVkdTeW1ib2xFbGVtZW50OjpzZWxmSGFzUmVsYXRpdmVMZW5n
dGhzKCkgY29uc3QKIHsKICAgICByZXR1cm4gaGFzQXR0cmlidXRlKFNWR05hbWVzOjp2aWV3Qm94
QXR0cik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgJKHJldmlzaW9u
IDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsMjEgKzQ3LDE1IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVh
bCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJl
dHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMo
KSBjb25zdDsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotCi0gICAg
Ly8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9P
TEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQotIAotICAgIC8vIFNWR0ZpdFRvVmlld0JveAotICAgIERFQ0xBUkVfQU5JTUFURURfUkVDVChW
aWV3Qm94LCB2aWV3Qm94KQotICAgIERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJ
TyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSAKKyAgICBCRUdJTl9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3ltYm9sRWxlbWVudCkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUkVDVChWaWV3Qm94
LCB2aWV3Qm94KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8o
UHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykgCisgICAgRU5EX0RFQ0xB
UkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDEzICszNywyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHBy
b3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR1RSZWZFbGVtZW50
LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKK0JFR0lOX0RFRklORV9BTklNQVRF
RF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdUUmVmRWxlbWVudCwg
WExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BS
T1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUUmVmRWxl
bWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShocmVmKQorICAgIFJF
R0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHVFJlZkVs
ZW1lbnQ6OlNWR1RSZWZFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRyZWZUYWcpKTsK
KyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1RSZWZFbGVtZW50KCk7CiB9CiAK
IFBhc3NSZWZQdHI8U1ZHVFJlZkVsZW1lbnQ+IFNWR1RSZWZFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTY0LDQxICsx
NzEsNiBAQCB2b2lkIFNWR1RSZWZFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHVFJlZkVsZW1lbnQ6OnN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJO
YW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAg
IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAg
ICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHVFJl
ZkVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7
Ci19Ci0KLXZvaWQgU1ZHVFJlZkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0K
IFJlbmRlck9iamVjdCogU1ZHVFJlZkVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJT
VkdJbmxpbmUodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAkocmV2
aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDIsOSArNDIsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5
bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikg
Y29uc3Q7CkBAIC01NiwxMCArNTMsOSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGJ1
aWxkUGVuZGluZ1Jlc291cmNlKCk7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJh
dGlvbnMKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RS
SU5HKEhyZWYsIGhyZWYpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R1RSZWZFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVm
KQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogICAgIFJlZlB0cjxTdWJ0
cmVlTW9kaWZpY2F0aW9uRXZlbnRMaXN0ZW5lcj4gbV9ldmVudExpc3RlbmVyOwogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03NCwxOSArNzQsNiBAQCBib29sIFNWR1RTcGFuRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChj
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZH
VFNwYW5FbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwOwotfQotCi12b2lkIFNWR1RTcGFuRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKLXsgICAgICAgIAotICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmZpbGxQ
YXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpKTsKLX0KLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKLQotLy8gdmltOnRzPTQ6bm9l
dApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDkgKzM2LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwotCi0gICAg
dmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1
YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGVzdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0
cy5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCisvLyBEZWZpbmUgY3VzdG9tIG5vbi1hbmltYXRlZCBwcm9wZXJ0eSAncmVxdWlyZWRGZWF0
dXJlcycuCitjb25zdCBTVkdQcm9wZXJ0eUluZm8qIFNWR1Rlc3RzOjpyZXF1aXJlZEZlYXR1cmVz
UHJvcGVydHlJbmZvKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBzX3By
b3BlcnR5SW5mbyA9IDA7CisgICAgaWYgKCFzX3Byb3BlcnR5SW5mbykgeworICAgICAgICBzX3By
b3BlcnR5SW5mbyA9IG5ldyBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRVbmtub3duLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6OnJlcXVpcmVk
RmVhdHVyZXNBdHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU1ZHTmFtZXM6OnJlcXVpcmVkRmVhdHVyZXNBdHRyLmxvY2FsTmFtZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNWR0VsZW1lbnQ6OnN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDApOworICAgIH0KKyAgICByZXR1cm4gc19wcm9wZXJ0eUluZm87Cit9CisKKwor
Ly8gRGVmaW5lIGN1c3RvbSBub24tYW5pbWF0ZWQgcHJvcGVydHkgJ3JlcXVpcmVkRXh0ZW5zaW9u
cycuCitjb25zdCBTVkdQcm9wZXJ0eUluZm8qIFNWR1Rlc3RzOjpyZXF1aXJlZEV4dGVuc2lvbnNQ
cm9wZXJ0eUluZm8oKQoreworICAgIHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIHNfcHJv
cGVydHlJbmZvID0gMDsKKyAgICBpZiAoIXNfcHJvcGVydHlJbmZvKSB7CisgICAgICAgIHNfcHJv
cGVydHlJbmZvID0gbmV3IFNWR1Byb3BlcnR5SW5mbyhBbmltYXRlZFVua25vd24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6cmVxdWlyZWRF
eHRlbnNpb25zQXR0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNWR05hbWVzOjpyZXF1aXJlZEV4dGVuc2lvbnNBdHRyLmxvY2FsTmFtZSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNWR0VsZW1lbnQ6OnN5bmNo
cm9uaXplUmVxdWlyZWRFeHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCk7CisgICAgfQorICAgIHJldHVybiBzX3Byb3BlcnR5SW5mbzsKK30K
KworLy8gRGVmaW5lIGN1c3RvbSBub24tYW5pbWF0ZWQgcHJvcGVydHkgJ3N5c3RlbUxhbmd1YWdl
Jy4KK2NvbnN0IFNWR1Byb3BlcnR5SW5mbyogU1ZHVGVzdHM6OnN5c3RlbUxhbmd1YWdlUHJvcGVy
dHlJbmZvKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBzX3Byb3BlcnR5
SW5mbyA9IDA7CisgICAgaWYgKCFzX3Byb3BlcnR5SW5mbykgeworICAgICAgICBzX3Byb3BlcnR5
SW5mbyA9IG5ldyBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRVbmtub3duLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6OnN5c3RlbUxhbmd1YWdl
QXR0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05h
bWVzOjpzeXN0ZW1MYW5ndWFnZUF0dHIubG9jYWxOYW1lKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmU1ZHRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1M
YW5ndWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAp
OworICAgIH0KKyAgICByZXR1cm4gc19wcm9wZXJ0eUluZm87Cit9CisKIFNWR1Rlc3RzOjpTVkdU
ZXN0cygpCiAgICAgOiBtX3JlcXVpcmVkRmVhdHVyZXMoU1ZHTmFtZXM6OnJlcXVpcmVkRmVhdHVy
ZXNBdHRyKQogICAgICwgbV9yZXF1aXJlZEV4dGVuc2lvbnMoU1ZHTmFtZXM6OnJlcXVpcmVkRXh0
ZW5zaW9uc0F0dHIpCkBAIC0zOSw2ICs4MiwxNyBAQCBTVkdUZXN0czo6U1ZHVGVzdHMoKQogewog
fQogCitTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBTVkdUZXN0czo6YXR0cmlidXRlVG9Qcm9w
ZXJ0eU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTVkdBdHRyaWJ1dGVUb1Byb3Bl
cnR5TWFwLCBtYXAsICgpKTsKKyAgICBpZiAoIW1hcC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBtYXA7CisgICAgbWFwLmFkZFByb3BlcnR5KHJlcXVpcmVkRmVhdHVyZXNQcm9wZXJ0eUluZm8o
KSk7CisgICAgbWFwLmFkZFByb3BlcnR5KHJlcXVpcmVkRXh0ZW5zaW9uc1Byb3BlcnR5SW5mbygp
KTsKKyAgICBtYXAuYWRkUHJvcGVydHkoc3lzdGVtTGFuZ3VhZ2VQcm9wZXJ0eUluZm8oKSk7Cisg
ICAgcmV0dXJuIG1hcDsKK30KKwogYm9vbCBTVkdUZXN0czo6aGFzRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBtZSEKQEAgLTExNSw0NSAr
MTY5LDMxIEBAIHZvaWQgU1ZHVGVzdHM6OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMoSGEKICAgICBz
dXBwb3J0ZWRBdHRyaWJ1dGVzLmFkZChTVkdOYW1lczo6c3lzdGVtTGFuZ3VhZ2VBdHRyKTsKIH0K
IAotdm9pZCBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKFNWR0VsZW1lbnQqIGNvbnRl
eHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0
ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVy
ZXMoY29udGV4dEVsZW1lbnQpOwotICAgICAgICBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9u
cyhjb250ZXh0RWxlbWVudCk7Ci0gICAgICAgIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoY29u
dGV4dEVsZW1lbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpyZXF1aXJlZEZlYXR1cmVzQXR0cikKLSAgICAgICAgc3luY2hyb25pemVS
ZXF1aXJlZEZlYXR1cmVzKGNvbnRleHRFbGVtZW50KTsKLSAgICBlbHNlIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6cmVxdWlyZWRFeHRlbnNpb25zQXR0cikKLSAgICAgICAgc3luY2hyb25pemVS
ZXF1aXJlZEV4dGVuc2lvbnMoY29udGV4dEVsZW1lbnQpOwotICAgIGVsc2UgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpzeXN0ZW1MYW5ndWFnZUF0dHIpCi0gICAgICAgIHN5bmNocm9uaXplU3lz
dGVtTGFuZ3VhZ2UoY29udGV4dEVsZW1lbnQpOwotfQotCiB2b2lkIFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVJlcXVpcmVkRmVhdHVyZXMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiB7CisgICAg
QVNTRVJUKGNvbnRleHRFbGVtZW50KTsKICAgICBpZiAoIW1fcmVxdWlyZWRGZWF0dXJlcy5zaG91
bGRTeW5jaHJvbml6ZSkKICAgICAgICAgcmV0dXJuOwogICAgIEF0b21pY1N0cmluZyB2YWx1ZSht
X3JlcXVpcmVkRmVhdHVyZXMudmFsdWUudmFsdWVBc1N0cmluZygpKTsKLSAgICBTVkdBbmltYXRl
ZFByb3BlcnR5U3luY2hyb25pemVyPHRydWU+OjpzeW5jaHJvbml6ZShjb250ZXh0RWxlbWVudCwg
U1ZHTmFtZXM6OnJlcXVpcmVkRmVhdHVyZXNBdHRyLCB2YWx1ZSk7CisgICAgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUoY29udGV4dEVsZW1lbnQsIHJl
cXVpcmVkRmVhdHVyZXNQcm9wZXJ0eUluZm8oKS0+YXR0cmlidXRlTmFtZSwgdmFsdWUpOwogfQog
CiB2b2lkIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyhTVkdFbGVtZW50
KiBjb250ZXh0RWxlbWVudCkKIHsKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwogICAgIGlm
ICghbV9yZXF1aXJlZEV4dGVuc2lvbnMuc2hvdWxkU3luY2hyb25pemUpCiAgICAgICAgIHJldHVy
bjsKICAgICBBdG9taWNTdHJpbmcgdmFsdWUobV9yZXF1aXJlZEV4dGVuc2lvbnMudmFsdWUudmFs
dWVBc1N0cmluZygpKTsKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPHRydWU+
OjpzeW5jaHJvbml6ZShjb250ZXh0RWxlbWVudCwgU1ZHTmFtZXM6OnJlcXVpcmVkRXh0ZW5zaW9u
c0F0dHIsIHZhbHVlKTsKKyAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPHRydWU+
OjpzeW5jaHJvbml6ZShjb250ZXh0RWxlbWVudCwgcmVxdWlyZWRFeHRlbnNpb25zUHJvcGVydHlJ
bmZvKCktPmF0dHJpYnV0ZU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBTVkdUZXN0czo6c3luY2hy
b25pemVTeXN0ZW1MYW5ndWFnZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKIHsKKyAgICBB
U1NFUlQoY29udGV4dEVsZW1lbnQpOwogICAgIGlmICghbV9zeXN0ZW1MYW5ndWFnZS5zaG91bGRT
eW5jaHJvbml6ZSkKICAgICAgICAgcmV0dXJuOwogICAgIEF0b21pY1N0cmluZyB2YWx1ZShtX3N5
c3RlbUxhbmd1YWdlLnZhbHVlLnZhbHVlQXNTdHJpbmcoKSk7Ci0gICAgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUoY29udGV4dEVsZW1lbnQsIFNWR05h
bWVzOjpzeXN0ZW1MYW5ndWFnZUF0dHIsIHZhbHVlKTsKKyAgICBTVkdBbmltYXRlZFByb3BlcnR5
U3luY2hyb25pemVyPHRydWU+OjpzeW5jaHJvbml6ZShjb250ZXh0RWxlbWVudCwgc3lzdGVtTGFu
Z3VhZ2VQcm9wZXJ0eUluZm8oKS0+YXR0cmlidXRlTmFtZSwgdmFsdWUpOwogfQogCiBTVkdTdHJp
bmdMaXN0JiBTVkdUZXN0czo6cmVxdWlyZWRGZWF0dXJlcygpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGVzdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVz
dHMuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBTVkdUZXN0c19oCiAKICNp
ZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHkuaCIKICNpbmNsdWRl
ICJTVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmgiCiAjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdC5o
IgogCkBAIC00NSwxOCArNDYsMjcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRTdXBwb3J0ZWRB
dHRyaWJ1dGVzKEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4mKTsKICAgICBib29sIGhhbmRsZUF0dHJp
YnV0ZUNoYW5nZShjb25zdCBTVkdFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAg
IHZvaWQgc3luY2hyb25pemVQcm9wZXJ0aWVzKFNWR0VsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWRO
YW1lJik7CisKKyAgICBzdGF0aWMgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eU1hcCgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHVGVzdHMoKTsKIAotcHJpdmF0
ZToKLSAgICB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyhTVkdFbGVtZW50Kik7Ci0g
ICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyhTVkdFbGVtZW50Kik7Ci0gICAg
dm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKFNWR0VsZW1lbnQqKTsKKyAgICB2b2lkIHN5
bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7Cisg
ICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyhTVkdFbGVtZW50KiBjb250ZXh0
RWxlbWVudCk7CisgICAgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKFNWR0VsZW1lbnQq
IGNvbnRleHRFbGVtZW50KTsKIAorcHJpdmF0ZToKKyAgICAvLyBDdXN0b20gJ3JlcXVpcmVkRmVh
dHVyZXMnIHByb3BlcnR5CisgICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogcmVxdWly
ZWRGZWF0dXJlc1Byb3BlcnR5SW5mbygpOwogICAgIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQ
cm9wZXJ0eTxTVkdTdHJpbmdMaXN0PiBtX3JlcXVpcmVkRmVhdHVyZXM7CisKKyAgICAvLyBDdXN0
b20gJ3JlcXVpcmVkRXh0ZW5zaW9ucycgcHJvcGVydHkKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJv
cGVydHlJbmZvKiByZXF1aXJlZEV4dGVuc2lvbnNQcm9wZXJ0eUluZm8oKTsKICAgICBTVkdTeW5j
aHJvbml6YWJsZUFuaW1hdGVkUHJvcGVydHk8U1ZHU3RyaW5nTGlzdD4gbV9yZXF1aXJlZEV4dGVu
c2lvbnM7CisKKyAgICAvLyBDdXN0b20gJ3N5c3RlbUxhbmd1YWdlJyBwcm9wZXJ0eQorICAgIHN0
YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIHN5c3RlbUxhbmd1YWdlUHJvcGVydHlJbmZvKCk7
CiAgICAgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5PFNWR1N0cmluZ0xpc3Q+IG1f
c3lzdGVtTGFuZ3VhZ2U7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENv
bnRlbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4
dENvbnRlbnRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjUgKzM3
LDU5IEBACiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCi0v
LyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFU
SU9OKFNWR1RleHRDb250ZW50RWxlbWVudCwgU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIsIExl
bmd0aEFkanVzdCwgbGVuZ3RoQWRqdXN0LCBTVkdMZW5ndGhBZGp1c3RUeXBlKQotREVGSU5FX0FO
SU1BVEVEX0JPT0xFQU4oU1ZHVGV4dENvbnRlbnRFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCisgCisvLyBEZWZpbmUgY3VzdG9tIGFuaW1hdGVkIHByb3BlcnR5
ICd0ZXh0TGVuZ3RoJy4KK2NvbnN0IFNWR1Byb3BlcnR5SW5mbyogU1ZHVGV4dENvbnRlbnRFbGVt
ZW50Ojp0ZXh0TGVuZ3RoUHJvcGVydHlJbmZvKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJv
cGVydHlJbmZvKiBzX3Byb3BlcnR5SW5mbyA9IDA7CisgICAgaWYgKCFzX3Byb3BlcnR5SW5mbykg
eworICAgICAgICBzX3Byb3BlcnR5SW5mbyA9IG5ldyBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRM
ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdO
YW1lczo6dGV4dExlbmd0aEF0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTVkdOYW1lczo6dGV4dExlbmd0aEF0dHIubG9jYWxOYW1lKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU1ZHVGV4dENvbnRlbnRFbGVt
ZW50OjpzeW5jaHJvbml6ZVRleHRMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojpsb29rdXBPckNyZWF0ZVRl
eHRMZW5ndGhXcmFwcGVyKTsKKyAgICB9CisgICAgcmV0dXJuIHNfcHJvcGVydHlJbmZvOworfQor
CitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9F
TlVNRVJBVElPTihTVkdUZXh0Q29udGVudEVsZW1lbnQsIFNWR05hbWVzOjpsZW5ndGhBZGp1c3RB
dHRyLCBMZW5ndGhBZGp1c3QsIGxlbmd0aEFkanVzdCwgU1ZHTGVuZ3RoQWRqdXN0VHlwZSkKKyAg
ICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdUZXh0Q29udGVudEVsZW1lbnQsIFNWR05hbWVz
OjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVS
VElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1RleHRDb250ZW50
RWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh0ZXh0TGVuZ3Ro
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGxlbmd0aEFkanVzdCkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVs
ZW1lbnQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMp
CitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBTVkdUZXh0Q29udGVudEVsZW1l
bnQ6OlNWR1RleHRDb250ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KQotICAgICwgbV9zcGVjaWZpZWRUZXh0TGVuZ3RoKExlbmd0aE1vZGVPdGhlcikKICAgICAs
IG1fdGV4dExlbmd0aChMZW5ndGhNb2RlT3RoZXIpCisgICAgLCBtX3NwZWNpZmllZFRleHRMZW5n
dGgoTGVuZ3RoTW9kZU90aGVyKQogICAgICwgbV9sZW5ndGhBZGp1c3QoU1ZHTGVuZ3RoQWRqdXN0
U3BhY2luZykKIHsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1RleHRDb250
ZW50RWxlbWVudCgpOwogfQogCi12b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6c3luY2hyb25p
emVUZXh0TGVuZ3RoKCkKK3ZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzeW5jaHJvbml6ZVRl
eHRMZW5ndGgodm9pZCogY29udGV4dEVsZW1lbnQpCiB7Ci0gICAgaWYgKCFtX3RleHRMZW5ndGgu
c2hvdWxkU3luY2hyb25pemUpCisgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICBTVkdU
ZXh0Q29udGVudEVsZW1lbnQqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR1RleHRDb250ZW50
RWxlbWVudCo+KGNvbnRleHRFbGVtZW50KTsKKyAgICBpZiAoIW93bmVyVHlwZS0+bV90ZXh0TGVu
Z3RoLnNob3VsZFN5bmNocm9uaXplKQogICAgICAgICByZXR1cm47Ci0gICAgQXRvbWljU3RyaW5n
IHZhbHVlKFNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aD46OnRvU3RyaW5nKG1fc3BlY2lmaWVk
VGV4dExlbmd0aCkpOwotICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46
OnN5bmNocm9uaXplKHRoaXMsIFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0ciwgdmFsdWUpOworICAg
IEF0b21pY1N0cmluZyB2YWx1ZShTVkdQcm9wZXJ0eVRyYWl0czxTVkdMZW5ndGg+Ojp0b1N0cmlu
Zyhvd25lclR5cGUtPm1fc3BlY2lmaWVkVGV4dExlbmd0aCkpOworICAgIFNWR0FuaW1hdGVkUHJv
cGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5bmNocm9uaXplKG93bmVyVHlwZSwgdGV4dExlbmd0
aFByb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lLCB2YWx1ZSk7Cit9CisKK1Bhc3NSZWZQdHI8
U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojpsb29rdXBPckNyZWF0
ZVRleHRMZW5ndGhXcmFwcGVyKHZvaWQqIGNvbnRleHRFbGVtZW50KQoreworICAgIEFTU0VSVChj
b250ZXh0RWxlbWVudCk7CisgICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50KiBvd25lclR5cGUgPSBz
dGF0aWNfY2FzdDxTVkdUZXh0Q29udGVudEVsZW1lbnQqPihjb250ZXh0RWxlbWVudCk7CisgICAg
cmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdUZXh0
Q29udGVudEVsZW1lbnQsIFNWR0FuaW1hdGVkTGVuZ3RoLCBTVkdMZW5ndGgsIHRydWU+CisgICAg
ICAgICAgIChvd25lclR5cGUsIHRleHRMZW5ndGhQcm9wZXJ0eUluZm8oKSwgb3duZXJUeXBlLT5t
X3RleHRMZW5ndGgudmFsdWUpOwogfQogCiBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiBT
VkdUZXh0Q29udGVudEVsZW1lbnQ6OnRleHRMZW5ndGhBbmltYXRlZCgpCkBAIC02OCw3ICsxMDIs
OCBAQCBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiBTVkdUZXh0Q29uCiAgICAgfQogCiAg
ICAgbV90ZXh0TGVuZ3RoLnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKLSAgICByZXR1cm4gU1ZH
QW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR0FuaW1hdGVkTGVuZ3Ro
LCBTVkdMZW5ndGg+KHRoaXMsIFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0ciwgU1ZHTmFtZXM6OnRl
eHRMZW5ndGhBdHRyLmxvY2FsTmFtZSgpLCBtX3RleHRMZW5ndGgudmFsdWUpOworICAgIHJldHVy
biBzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR0FuaW1hdGVkTGVuZ3RoPihsb29rdXBPckNyZWF0ZVRl
eHRMZW5ndGhXcmFwcGVyKHRoaXMpKTsKKwogfQogCiB1bnNpZ25lZCBTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6OmdldE51bWJlck9mQ2hhcnMoKSBjb25zdApAQCAtMjM2LDQ1ICsyNzEsNiBAQCB2b2lk
IFNWR1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKLXZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9
PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplTGVuZ3RoQWRqdXN0KCk7Ci0gICAg
ICAgIHN5bmNocm9uaXplVGV4dExlbmd0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVy
dGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9u
aXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkRWxl
bWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIpIHsK
LSAgICAgICAgc3luY2hyb25pemVMZW5ndGhBZGp1c3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dGV4dExlbmd0aEF0dHIpIHsKLSAg
ICAgICAgc3luY2hyb25pemVUZXh0TGVuZ3RoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3Bl
cnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlm
ICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CkBAIC0yOTQsMTQgKzI5MCw2IEBA
IHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGUKICAgICAgICAgUmVuZGVy
U1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihy
ZW5kZXJlcik7CiB9CiAKLXZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpmaWxsUGFzc2VkQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKQotewotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNz
ZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7
Ci0KLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRleHRMZW5n
dGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjpsZW5ndGhBZGp1c3RBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLX0K
LQogYm9vbCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBj
b25zdAogewogICAgIC8vIEFueSBlbGVtZW50IG9mIHRoZSA8dGV4dD4gc3VidHJlZSBpcyBhZHZl
cnRpemVkIGFzIHVzaW5nIHJlbGF0aXZlIGxlbmd0aHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCShyZXZpc2lvbiA5MDU2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTUs
NiArOTUsNyBAQCBwdWJsaWM6CiAgICAgLy8gYXMgaXRzIGdldHRlciBuZWVkcyBzcGVjaWFsIGhh
bmRsaW5nIChyZXR1cm4gZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCksIGluc3RlYWQgb2YgbV90ZXh0
TGVuZ3RoKS4KICAgICBTVkdMZW5ndGgmIHNwZWNpZmllZFRleHRMZW5ndGgoKSB7IHJldHVybiBt
X3NwZWNpZmllZFRleHRMZW5ndGg7IH0KICAgICBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3Ro
PiB0ZXh0TGVuZ3RoQW5pbWF0ZWQoKTsKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZv
KiB0ZXh0TGVuZ3RoUHJvcGVydHlJbmZvKCk7CiAKIHByb3RlY3RlZDoKICAgICBTVkdUZXh0Q29u
dGVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CkBAIC0xMDQsOCAr
MTA1LDYgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShB
dHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZvaWQgZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJik7CiAKICAgICB2aXJ0dWFsIGJv
b2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hh
bmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7
CkBAIC0xMTMsMTQgKzExMiwyMSBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCBpc1RleHRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgLy8gQW5p
bWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgdm9pZCBzeW5jaHJvbml6ZVRleHRMZW5n
dGgoKTsKLSAgICBTVkdMZW5ndGggbV9zcGVjaWZpZWRUZXh0TGVuZ3RoOworICAgIC8vIEN1c3Rv
bSAndGV4dExlbmd0aCcgcHJvcGVydHkKKyAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZVRleHRM
ZW5ndGgodm9pZCogY29udGV4dEVsZW1lbnQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0Fu
aW1hdGVkUHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlVGV4dExlbmd0aFdyYXBwZXIodm9pZCogY29u
dGV4dEVsZW1lbnQpOwogICAgIG11dGFibGUgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3Bl
cnR5PFNWR0xlbmd0aD4gbV90ZXh0TGVuZ3RoOwotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVS
QVRJT04oTGVuZ3RoQWRqdXN0LCBsZW5ndGhBZGp1c3QsIFNWR0xlbmd0aEFkanVzdFR5cGUpCi0K
LSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRF
RF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpIAorICAgIFNWR0xlbmd0aCBtX3NwZWNpZmllZFRleHRMZW5ndGg7CisgIAorICAgIEJF
R0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0Q29udGVudEVsZW1lbnQpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oTGVuZ3RoQWRqdXN0LCBsZW5ndGhB
ZGp1c3QsIFNWR0xlbmd0aEFkanVzdFR5cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9P
TEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KSAKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0
cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rl
c3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0
aGlzKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEzICszNSwyMCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRp
b25zCi1ERUZJTkVfQU5JTUFURURfVFJBTlNGT1JNX0xJU1QoU1ZHVGV4dEVsZW1lbnQsIFNWR05h
bWVzOjp0cmFuc2Zvcm1BdHRyLCBUcmFuc2Zvcm0sIHRyYW5zZm9ybSkKK0JFR0lOX0RFRklORV9B
TklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFNW
R1RleHRFbGVtZW50LCBTVkdOYW1lczo6dHJhbnNmb3JtQXR0ciwgVHJhbnNmb3JtLCB0cmFuc2Zv
cm0pCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR1RleHRFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKHRyYW5zZm9ybSkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1B
VEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1RleHRFbGVtZW50OjpTVkdUZXh0RWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudCh0YWdOYW1lLCBkb2MpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05h
bWUoU1ZHTmFtZXM6OnRleHRUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0Zv
clNWR1RleHRFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHVGV4dEVsZW1lbnQ+IFNWR1Rl
eHRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQpAQCAtMTYwLDQxICsxNjcsNiBAQCB2b2lkIFNWR1RleHRFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZH
VGV4dEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVUcmFuc2Zvcm0oKTsKLSAgICAgICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6
c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdU
ZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dHJh
bnNmb3JtQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVRyYW5zZm9ybSgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdUZXh0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19h
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdUZXh0RWxlbWVudDo6Zmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6ZmlsbFBh
c3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRyYW5zZm9y
bUF0dHIsIEFuaW1hdGVkVHJhbnNmb3JtTGlzdCk7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaAkocmV2aXNpb24gOTA0
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTYsMTIgKzU2LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OwogICAgICAgICAgICAgCiAgICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmly
dHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xB
UkVfQU5JTUFURURfVFJBTlNGT1JNX0xJU1QoVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCisgICAgQkVH
SU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1RleHRFbGVtZW50KQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFRyYW5zZm9ybSwgdHJhbnNmb3JtKQorICAg
IEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogICAgIC8vIFVzZWQgYnkgPGFuaW1h
dGVNb3Rpb24+CiAgICAgT3duUHRyPEFmZmluZVRyYW5zZm9ybT4gbV9zdXBwbGVtZW50YWxUcmFu
c2Zvcm07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAko
cmV2aXNpb24gOTA1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTEgKzMxLDIwIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHVGV4dFBhdGhFbGVtZW50LCBTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyLCBT
dGFydE9mZnNldCwgc3RhcnRPZmZzZXQpCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZH
VGV4dFBhdGhFbGVtZW50LCBTVkdOYW1lczo6bWV0aG9kQXR0ciwgTWV0aG9kLCBtZXRob2QsIFNW
R1RleHRQYXRoTWV0aG9kVHlwZSkKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdUZXh0
UGF0aEVsZW1lbnQsIFNWR05hbWVzOjpzcGFjaW5nQXR0ciwgU3BhY2luZywgc3BhY2luZywgU1ZH
VGV4dFBhdGhTcGFjaW5nVHlwZSkKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHVGV4dFBhdGhF
bGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKK0JFR0lOX0RFRklORV9B
TklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdUZXh0UGF0
aEVsZW1lbnQsIFNWR05hbWVzOjpzdGFydE9mZnNldEF0dHIsIFN0YXJ0T2Zmc2V0LCBzdGFydE9m
ZnNldCkKKyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHVGV4dFBhdGhFbGVtZW50
LCBTVkdOYW1lczo6bWV0aG9kQXR0ciwgTWV0aG9kLCBtZXRob2QsIFNWR1RleHRQYXRoTWV0aG9k
VHlwZSkKKyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHVGV4dFBhdGhFbGVtZW50
LCBTVkdOYW1lczo6c3BhY2luZ0F0dHIsIFNwYWNpbmcsIHNwYWNpbmcsIFNWR1RleHRQYXRoU3Bh
Y2luZ1R5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdUZXh0UGF0aEVsZW1lbnQs
IFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQorRU5EX0RFRklORV9BTklNQVRFRF9Q
Uk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGV4dFBh
dGhFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHN0YXJ0T2Zm
c2V0KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKG1ldGhvZCkKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShzcGFjaW5nKQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKGhyZWYpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHVGV4dENvbnRlbnRFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVE
X1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1RleHRQYXRoRWxlbWVudDo6U1ZHVGV4dFBhdGhFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICA6IFNWR1RleHRDb250ZW50RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTQ0LDYgKzUz
LDcgQEAgaW5saW5lIFNWR1RleHRQYXRoRWxlbWVudDo6U1ZHVGV4dFBhdGhFbAogICAgICwgbV9z
cGFjaW5nKFNWR1RleHRQYXRoU3BhY2luZ0V4YWN0KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KFNWR05hbWVzOjp0ZXh0UGF0aFRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVz
Rm9yU1ZHVGV4dFBhdGhFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHVGV4dFBhdGhFbGVt
ZW50PiBTVkdUZXh0UGF0aEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xMTIsNjIgKzEyMiw2IEBAIHZvaWQgU1ZHVGV4
dFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGEKICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6
Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihvYmplY3QpOwogfQog
Ci12b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkg
ewotICAgICAgICBzeW5jaHJvbml6ZVN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
TWV0aG9kKCk7Ci0gICAgICAgIHN5bmNocm9uaXplU3BhY2luZygpOwotICAgICAgICBzeW5jaHJv
bml6ZUhyZWYoKTsKLSAgICAgICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1RleHRDb250ZW50RWxl
bWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZVN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjptZXRob2RBdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplTWV0aG9kKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpzcGFjaW5nQXR0cikgewotICAgICAgICBzeW5j
aHJvbml6ZVNwYWNpbmcoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBpZiAo
U1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBz
eW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHVGV4dFBh
dGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
OwotfQotCi12b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0g
ICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyLCBBbmltYXRlZExlbmd0aCk7
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjptZXRob2RBdHRy
LCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnNwYWNpbmdBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVk
U3RyaW5nKTsKLX0KLQogUmVuZGVyT2JqZWN0KiBTVkdUZXh0UGF0aEVsZW1lbnQ6OmNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBu
ZXcgKGFyZW5hKSBSZW5kZXJTVkdUZXh0UGF0aCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgJKHJldmlzaW9uIDkwNTYwKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw0OCArMzks
NiBAQCBlbnVtIFNWR1RleHRQYXRoU3BhY2luZ1R5cGUgewogICAgIFNWR1RleHRQYXRoU3BhY2lu
Z0V4YWN0CiB9OwogCi1jbGFzcyBTVkdUZXh0UGF0aEVsZW1lbnQgOiBwdWJsaWMgU1ZHVGV4dENv
bnRlbnRFbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1VSSVJl
ZmVyZW5jZSB7Ci1wdWJsaWM6Ci0gICAgLy8gRm9yd2FyZCBkZWNsYXJlIGVudW1lcmF0aW9ucyBp
biB0aGUgVzNDIG5hbWluZyBzY2hlbWUsIGZvciBJREwgZ2VuZXJhdGlvbi4KLSAgICBlbnVtIHsK
LSAgICAgICAgVEVYVFBBVEhfTUVUSE9EVFlQRV9VTktOT1dOID0gU1ZHVGV4dFBhdGhNZXRob2RV
bmtub3duLAotICAgICAgICBURVhUUEFUSF9NRVRIT0RUWVBFX0FMSUdOID0gU1ZHVGV4dFBhdGhN
ZXRob2RBbGlnbiwKLSAgICAgICAgVEVYVFBBVEhfTUVUSE9EVFlQRV9TVFJFVENIID0gU1ZHVGV4
dFBhdGhNZXRob2RTdHJldGNoLAotICAgICAgICBURVhUUEFUSF9TUEFDSU5HVFlQRV9VTktOT1dO
ID0gU1ZHVGV4dFBhdGhTcGFjaW5nVW5rbm93biwKLSAgICAgICAgVEVYVFBBVEhfU1BBQ0lOR1RZ
UEVfQVVUTyA9IFNWR1RleHRQYXRoU3BhY2luZ0F1dG8sCi0gICAgICAgIFRFWFRQQVRIX1NQQUNJ
TkdUWVBFX0VYQUNUID0gU1ZHVGV4dFBhdGhTcGFjaW5nRXhhY3QKLSAgICB9OwotCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8U1ZHVGV4dFBhdGhFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Kik7Ci0gCi1wcml2YXRlOgotICAgIFNWR1RleHRQYXRoRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIHZpcnR1YWwgdm9pZCBpbnNl
cnRlZEludG9Eb2N1bWVudCgpOwotCi0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSopOwotICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwotICAgIHZpcnR1
YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKLSAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwot
Ci0gICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKLQotICAg
IC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIKFN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VO
VU1FUkFUSU9OKE1ldGhvZCwgbWV0aG9kLCBTVkdUZXh0UGF0aE1ldGhvZFR5cGUpCi0gICAgREVD
TEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihTcGFjaW5nLCBzcGFjaW5nLCBTVkdUZXh0UGF0aFNw
YWNpbmdUeXBlKQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRF
RF9TVFJJTkcoSHJlZiwgaHJlZikKLX07Ci0KIHRlbXBsYXRlPD4KIHN0cnVjdCBTVkdQcm9wZXJ0
eVRyYWl0czxTVkdUZXh0UGF0aE1ldGhvZFR5cGU+IHsKICAgICBzdGF0aWMgU1ZHVGV4dFBhdGhN
ZXRob2RUeXBlIGhpZ2hlc3RFbnVtVmFsdWUoKSB7IHJldHVybiBTVkdUZXh0UGF0aE1ldGhvZFN0
cmV0Y2g7IH0KQEAgLTEzOSw2ICs5Nyw0NCBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZH
VGV4dFBhdGhTcGFjCiAgICAgfQogfTsKIAorY2xhc3MgU1ZHVGV4dFBhdGhFbGVtZW50IDogcHVi
bGljIFNWR1RleHRDb250ZW50RWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBTVkdVUklSZWZlcmVuY2UgeworcHVibGljOgorICAgIC8vIEZvcndhcmQgZGVjbGFyZSBl
bnVtZXJhdGlvbnMgaW4gdGhlIFczQyBuYW1pbmcgc2NoZW1lLCBmb3IgSURMIGdlbmVyYXRpb24u
CisgICAgZW51bSB7CisgICAgICAgIFRFWFRQQVRIX01FVEhPRFRZUEVfVU5LTk9XTiA9IFNWR1Rl
eHRQYXRoTWV0aG9kVW5rbm93biwKKyAgICAgICAgVEVYVFBBVEhfTUVUSE9EVFlQRV9BTElHTiA9
IFNWR1RleHRQYXRoTWV0aG9kQWxpZ24sCisgICAgICAgIFRFWFRQQVRIX01FVEhPRFRZUEVfU1RS
RVRDSCA9IFNWR1RleHRQYXRoTWV0aG9kU3RyZXRjaCwKKyAgICAgICAgVEVYVFBBVEhfU1BBQ0lO
R1RZUEVfVU5LTk9XTiA9IFNWR1RleHRQYXRoU3BhY2luZ1Vua25vd24sCisgICAgICAgIFRFWFRQ
QVRIX1NQQUNJTkdUWVBFX0FVVE8gPSBTVkdUZXh0UGF0aFNwYWNpbmdBdXRvLAorICAgICAgICBU
RVhUUEFUSF9TUEFDSU5HVFlQRV9FWEFDVCA9IFNWR1RleHRQYXRoU3BhY2luZ0V4YWN0CisgICAg
fTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1RleHRQYXRoRWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworIAorcHJpdmF0ZToKKyAgICBTVkdUZXh0
UGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisKKyAgICB2aXJ0
dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKKworICAgIGJvb2wgaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CisKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1
YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwor
CisgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKKyAKKyAg
ICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGV4dFBhdGhFbGVtZW50KQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChTdGFydE9mZnNldCwgc3RhcnRPZmZzZXQp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oTWV0aG9kLCBtZXRob2QsIFNW
R1RleHRQYXRoTWV0aG9kVHlwZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElP
TihTcGFjaW5nLCBzcGFjaW5nLCBTVkdUZXh0UGF0aFNwYWNpbmdUeXBlKQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRJRVMKK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlv
bmluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTYgKzMz
LDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVm
aW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9MRU5HVEhfTElTVChTVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIX0xJ
U1QoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQotREVG
SU5FX0FOSU1BVEVEX0xFTkdUSF9MSVNUKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR05h
bWVzOjpkeEF0dHIsIER4LCBkeCkKLURFRklORV9BTklNQVRFRF9MRU5HVEhfTElTVChTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50LCBTVkdOYW1lczo6ZHlBdHRyLCBEeSwgZHkpCi1ERUZJTkVfQU5J
TUFURURfTlVNQkVSX0xJU1QoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTmFtZXM6OnJv
dGF0ZUF0dHIsIFJvdGF0ZSwgcm90YXRlKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJ
RVMKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIX0xJU1QoU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEhf
TElTVChTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCisg
ICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSF9MSVNUKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQs
IFNWR05hbWVzOjpkeEF0dHIsIER4LCBkeCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIX0xJ
U1QoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTmFtZXM6OmR5QXR0ciwgRHksIGR5KQor
ICAgIERFRklORV9BTklNQVRFRF9OVU1CRVJfTElTVChTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
LCBTVkdOYW1lczo6cm90YXRlQXR0ciwgUm90YXRlLCByb3RhdGUpCitFTkRfREVGSU5FX0FOSU1B
VEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdU
ZXh0UG9zaXRpb25pbmdFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeSkKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShkeCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShkeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShy
b3RhdGUpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGV4dENv
bnRlbnRFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudDo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdUZXh0Q29u
dGVudEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CisgICAgcmVnaXN0ZXJBbmltYXRlZFBy
b3BlcnRpZXNGb3JTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KCk7CiB9CiAKIGJvb2wgU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCkBAIC0xMzksNjIgKzE1MCw2IEBAIHZvaWQgU1ZHVGV4dFBvc2l0aW9u
aW5nRWxlbWVudDo6c3ZnQXR0cmkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9p
ZCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgp
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAg
ICAgICAgc3luY2hyb25pemVEeCgpOwotICAgICAgICBzeW5jaHJvbml6ZUR5KCk7Ci0gICAgICAg
IHN5bmNocm9uaXplUm90YXRlKCk7Ci0gICAgICAgIFNWR1RleHRDb250ZW50RWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXh0
Q29udGVudEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVZKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OmR4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUR4KCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmR5QXR0cikgewotICAgICAgICBz
eW5jaHJvbml6ZUR5KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnJvdGF0ZUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVSb3RhdGUo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
fQotCi12b2lkIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXApCi17Ci0gICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpmaWxsUGFzc2Vk
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwot
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5p
bWF0ZWRMZW5ndGhMaXN0KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aExpc3QpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZHhBdHRyLCBBbmltYXRlZExlbmd0aExpc3QpOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZHlBdHRyLCBBbmltYXRl
ZExlbmd0aExpc3QpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6cm90YXRlQXR0ciwgQW5pbWF0ZWROdW1iZXJMaXN0KTsKLX0KLQogU1ZHVGV4dFBvc2l0aW9u
aW5nRWxlbWVudCogU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6ZWxlbWVudEZyb21SZW5kZXJl
cihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIGlmICghcmVuZGVyZXIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgJKHJldmlz
aW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTUgKzM4LDE0IEBAIHByb3RlY3RlZDoKICAgICBi
b29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1
YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2
b2lkIGZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEhfTElTVChYLCB4KQotICAgIERFQ0xBUkVfQU5JTUFU
RURfTEVOR1RIX0xJU1QoWSwgeSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSF9MSVNUKER4
LCBkeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSF9MSVNUKER5LCBkeSkKLSAgICBERUNM
QVJFX0FOSU1BVEVEX05VTUJFUl9MSVNUKFJvdGF0ZSwgcm90YXRlKQorICAgIEJFR0lOX0RFQ0xB
UkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSF9MSVNUKFgsIHgpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfTEVOR1RIX0xJU1QoWSwgeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEhf
TElTVChEeCwgZHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIX0xJU1QoRHksIGR5
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUl9MSVNUKFJvdGF0ZSwgcm90YXRlKQor
ICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MCwxOCArNjAsNiBAQCB2b2lkIFNWR1RpdGxlRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKGJvCiAgICAgICAgIGRvY3VtZW50KCktPnNldFRpdGxlRWxlbWVudChTdHJp
bmdXaXRoRGlyZWN0aW9uKHRleHRDb250ZW50KCksIExUUiksIHRoaXMpOwogfQogCi1BdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHVGl0bGVFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBz
X2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwogfQogCi12b2lkIFNWR1RpdGxlRWxlbWVudDo6
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsgICAgICAgIAotICAgIFNWR1N0eWxl
ZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpKTsKLX0KLQotfQotCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYg
Ly8gRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmgJKHJl
dmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0MCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZv
cmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEg
PSAwKTsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5k
ZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAko
cmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU1LDEzICs1NSwyNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR1VzZUVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKLURFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQotREVGSU5FX0FO
SU1BVEVEX0xFTkdUSChTVkdVc2VFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0aCwg
d2lkdGgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1VzZUVsZW1lbnQsIFNWR05hbWVzOjpo
ZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdodCkKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHVXNl
RWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCi1ERUZJTkVfQU5JTUFU
RURfQk9PTEVBTihTVkdVc2VFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklN
QVRFRF9MRU5HVEgoU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQorICAgIERF
RklORV9BTklNQVRFRF9MRU5HVEgoU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5
KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6Ondp
ZHRoQXR0ciwgV2lkdGgsIHdpZHRoKQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHVXNl
RWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhlaWdodCwgaGVpZ2h0KQorICAgIERFRklO
RV9BTklNQVRFRF9TVFJJTkcoU1ZHVXNlRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhy
ZWYsIGhyZWYpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHVXNlRWxlbWVudCwgU1ZH
TmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorRU5EX0RFRklORV9BTklNQVRFRF9Q
Uk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVXNlRWxl
bWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh4KQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkod2lkdGgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
aGVpZ2h0KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGhyZWYpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBT
VkdVc2VFbGVtZW50OjpTVkdVc2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KQpAQCAtNzMsNiArODUsNyBAQCBpbmxpbmUgU1ZHVXNlRWxlbWVu
dDo6U1ZHVXNlRWxlbWVudChjb25zCiAgICAgLCBtX25lZWRzU2hhZG93VHJlZVJlY3JlYXRpb24o
ZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnVzZVRhZykpOworICAg
IHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVXNlRWxlbWVudCgpOwogfQogCiBQYXNz
UmVmUHRyPFNWR1VzZUVsZW1lbnQ+IFNWR1VzZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0yNDMsODEgKzI1Niw2IEBA
IHZvaWQgU1ZHVXNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCgKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdVc2VFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBh
bnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6
ZVkoKTsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhl
aWdodCgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsK
LSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewot
ICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0
eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OnhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
V2lkdGgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6aGVpZ2h0QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAg
ICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
U1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1Rlc3Rz
OjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBTVkdVc2VFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
Ci17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
c19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR1VzZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsUGFzc2Vk
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwot
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1h
dGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3Ro
KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0
dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQogc3RhdGljIHZvaWQgdXBkYXRlQ29udGFpbmVyU2l6
ZShTVkdFbGVtZW50SW5zdGFuY2UqIHRhcmdldEluc3RhbmNlKQogewogICAgIC8vIERlcHRoLWZp
cnN0IHVzZWQgdG8gd3JpdGUgdGhlIG1ldGhvZCBpbiBlYXJseSBleGl0IHN0eWxlLCBubyBwYXJ0
aWN1bGFyIG90aGVyIHJlYXNvbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAko
cmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Myw5ICs2Myw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBv
cnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lk
IGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgcmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgPSBOb0NoYW5nZSk7CiAgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5
bGUqKTsKQEAgLTEwNiwxNyArMTAzLDE5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVDb250
YWluZXJPZmZzZXRzKCk7CiAgICAgdm9pZCB1cGRhdGVDb250YWluZXJTaXplcygpOwogCi0gICAg
Ly8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEgoWCwgeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQotICAgIERFQ0xB
UkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSChIZWlnaHQsIGhlaWdodCkKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERFQ0xB
UkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgQkVHSU5fREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1VzZUVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfTEVOR1RIKFgsIHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9P
TEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3Rz
CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVz
dHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXpl
UmVxdWlyZWRFeHRlbnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
U3lzdGVtTGFuZ3VhZ2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRo
aXMpOyB9CiAKICAgICBib29sIG1fdXBkYXRlc0Jsb2NrZWQ7CiAgICAgYm9vbCBtX25lZWRzU2hh
ZG93VHJlZVJlY3JlYXRpb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5j
cHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDI1IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRF
RF9CT09MRUFOKFNWR1ZpZXdFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpCi1ERUZJTkVfQU5JTUFURURfUkVDVChTVkdWaWV3RWxlbWVudCwgU1ZHTmFtZXM6OnZp
ZXdCb3hBdHRyLCBWaWV3Qm94LCB2aWV3Qm94KQotREVGSU5FX0FOSU1BVEVEX1BSRVNFUlZFQVNQ
RUNUUkFUSU8oU1ZHVmlld0VsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0
ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKK0JFR0lOX0RFRklO
RV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHVmll
d0VsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBERUZJ
TkVfQU5JTUFURURfUkVDVChTVkdWaWV3RWxlbWVudCwgU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBW
aWV3Qm94LCB2aWV3Qm94KQorICAgIERFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElP
KFNWR1ZpZXdFbGVtZW50LCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFByZXNl
cnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCitFTkRfREVGSU5FX0FOSU1BVEVE
X1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdWaWV3
RWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHZp
ZXdCb3gpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocHJlc2VydmVBc3Bl
Y3RSYXRpbykKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHls
ZWRFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNW
R1ZpZXdFbGVtZW50OjpTVkdWaWV3RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KQogICAgICwgbV92aWV3VGFyZ2V0KFNWR05hbWVzOjp2aWV3VGFyZ2V0QXR0cikKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6dmlld1RhZykpOworICAgIHJlZ2lzdGVy
QW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVmlld0VsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxT
VkdWaWV3RWxlbWVudD4gU1ZHVmlld0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC04Miw1MSArOTEsNiBAQCB2b2lkIFNW
R1ZpZXdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKLXZvaWQgU1ZHVmlld0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1l
KCkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0g
ICAgICAgIFNWR0ZpdFRvVmlld0JveDo6c3luY2hyb25pemVQcm9wZXJ0aWVzKGF0dHJOYW1lKTsK
LSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRl
KGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6dmlld1RhcmdldEF0dHIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
IChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdGaXRUb1ZpZXdCb3g6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpdFRvVmlld0JveDo6c3luY2hyb25p
emVQcm9wZXJ0aWVzKGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZH
Vmlld0VsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXA7Ci19Ci0KLXZvaWQgU1ZHVmlld0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAg
IFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgQW5pbWF0ZWRSZWN0KTsKLSAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRy
LCBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFC
TEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgJKHJldmlzaW9uIDkw
NDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDIwICs0OCwxNCBAQCBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1
dGVDaGFuZ2VkIG1pc3NpbmcuCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0
dHJpYnV0ZSopOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KIAotICAg
IC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotCi0gICAgLy8gU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotIAotICAgIC8vIFNW
R0ZpdFRvVmlld0JveAotICAgIERFQ0xBUkVfQU5JTUFURURfUkVDVChWaWV3Qm94LCB2aWV3Qm94
KQotICAgIERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVj
dFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdWaWV3RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09M
RUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUkVDVChWaWV3Qm94LCB2aWV3Qm94KQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oUHJlc2VydmVBc3BlY3RSYXRp
bywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTCiAKICAgICBTVkdTdHJpbmdMaXN0IG1fdmlld1RhcmdldDsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdWaWV3U3BlYy5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1ZpZXdTcGVjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTMgKzMwLDIxIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMK
LURFRklORV9BTklNQVRFRF9SRUNUKFNWR1ZpZXdTcGVjLCBTVkdOYW1lczo6dmlld0JveEF0dHIs
IFZpZXdCb3gsIHZpZXdCb3gpCi1ERUZJTkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhT
VkdWaWV3U3BlYywgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBQcmVzZXJ2ZUFz
cGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BS
T1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfUkVDVChTVkdWaWV3U3BlYywgU1ZHTmFtZXM6
OnZpZXdCb3hBdHRyLCBWaWV3Qm94LCB2aWV3Qm94KQorICAgIERFRklORV9BTklNQVRFRF9QUkVT
RVJWRUFTUEVDVFJBVElPKFNWR1ZpZXdTcGVjLCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRp
b0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCitFTkRfREVG
SU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdWaWV3U3BlYykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh2
aWV3Qm94KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHByZXNlcnZlQXNw
ZWN0UmF0aW8pCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBTVkdWaWV3U3Bl
Yzo6U1ZHVmlld1NwZWMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiAgICAgOiBtX2NvbnRl
eHRFbGVtZW50KGNvbnRleHRFbGVtZW50KQogeworICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50
KTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1ZpZXdTcGVjKCk7CiB9CiAK
IHZvaWQgU1ZHVmlld1NwZWM6OnNldFRyYW5zZm9ybShjb25zdCBTdHJpbmcmIHRyYW5zZm9ybSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMSArNTUs
MTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdFbGVtZW50KiBtX2NvbnRleHRFbGVtZW50
OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0KLSAgICAvLyBTVkdG
aXRUb1ZpZXdCb3gKLSAgICBERUNMQVJFX0FOSU1BVEVEX1JFQ1QoVmlld0JveCwgdmlld0JveCkK
LSAgICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oUHJlc2VydmVBc3BlY3RS
YXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHVmlld1NwZWMpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUkVDVChWaWV3
Qm94LCB2aWV3Qm94KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFU
SU8oUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICBFTkRfREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICBTVkdUcmFuc2Zvcm1MaXN0IG1fdHJhbnNm
b3JtOwogICAgIFN0cmluZyBtX3ZpZXdUYXJnZXRTdHJpbmc7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCShyZXZpc2lv
biA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTUgKzIxLDE0IEBACiAjZGVmaW5lIFNWR0Fu
aW1hdGVkUHJvcGVydHlfaAogCiAjaWYgRU5BQkxFKFNWRykKLSNpbmNsdWRlICJRdWFsaWZpZWRO
YW1lLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmgiCiAjaW5j
bHVkZSAiU1ZHRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR1Byb3BlcnR5SW5mby5oIgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZH
RWxlbWVudDsKLWNsYXNzIFNWR1Byb3BlcnR5OwogCiBjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5
IDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gewogcHVibGljOgpAQCAt
NDQsNiArNDMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIGlzQW5pbWF0
ZWRMaXN0VGVhck9mZigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUFuaW1WYWwodm9pZCopIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8v
IENhY2hpbmcgZmFjaWxpdGllcy4KICAgICB0eXBlZGVmIEhhc2hNYXA8U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eURlc2NyaXB0aW9uLCBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4sIFNWR0FuaW1hdGVk
UHJvcGVydHlEZXNjcmlwdGlvbkhhc2gsIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbkhh
c2hUcmFpdHM+IENhY2hlOwpAQCAtNjEsMjMgKzYxLDQ0IEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRlYXJPZmZUeXBlLCB0eXBlbmFtZSBQcm9w
ZXJ0eVR5cGUsIGJvb2wgaXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ+CisgICAgc3RydWN0IEhlbHBl
cjsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRlYXJPZmZUeXBlLCB0eXBlbmFtZSBQcm9wZXJ0
eVR5cGU+Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGVhck9mZlR5cGU+IGxvb2t1cE9yQ3JlYXRl
V3JhcHBlcihTVkdFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZUlkZW50aWZpZXIsIFByb3BlcnR5
VHlwZSYgcHJvcGVydHkpCi0gICAgewotICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3Jp
cHRpb24ga2V5KGVsZW1lbnQsIGF0dHJpYnV0ZUlkZW50aWZpZXIpOwotICAgICAgICBSZWZQdHI8
U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gd3JhcHBlciA9IGFuaW1hdGVkUHJvcGVydHlDYWNoZSgpLT5n
ZXQoa2V5KTsKLSAgICAgICAgaWYgKCF3cmFwcGVyKSB7Ci0gICAgICAgICAgICB3cmFwcGVyID0g
VGVhck9mZlR5cGU6OmNyZWF0ZShlbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBwcm9wZXJ0eSk7Ci0g
ICAgICAgICAgICBhbmltYXRlZFByb3BlcnR5Q2FjaGUoKS0+c2V0KGtleSwgd3JhcHBlcik7Cisg
ICAgc3RydWN0IEhlbHBlcjxUZWFyT2ZmVHlwZSwgUHJvcGVydHlUeXBlLCBmYWxzZT4geworICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZWFyT2ZmVHlwZT4gbG9va3VwT3JDcmVhdGVXcmFwcGVy
KHZvaWQqLCBjb25zdCBTVkdQcm9wZXJ0eUluZm8qLCBQcm9wZXJ0eVR5cGUmKQorICAgICAgICB7
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBQ
YXNzUmVmUHRyPFRlYXJPZmZUeXBlPigpOwogICAgICAgICB9CisgICAgfTsKIAotICAgICAgICBy
ZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxUZWFyT2ZmVHlwZT4od3JhcHBlcikucmVsZWFzZSgp
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRlYXJPZmZUeXBlLCB0eXBlbmFtZSBQcm9wZXJ0eVR5
cGU+CisgICAgc3RydWN0IEhlbHBlcjxUZWFyT2ZmVHlwZSwgUHJvcGVydHlUeXBlLCB0cnVlPiB7
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRlYXJPZmZUeXBlPiBsb29rdXBPckNyZWF0ZVdy
YXBwZXIoU1ZHRWxlbWVudCogZWxlbWVudCwgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBpbmZvLCBQ
cm9wZXJ0eVR5cGUmIHByb3BlcnR5KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaW5m
byk7CisgICAgICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24ga2V5KGVsZW1l
bnQsIGluZm8tPnByb3BlcnR5SWRlbnRpZmllcik7CisgICAgICAgICAgICBSZWZQdHI8U1ZHQW5p
bWF0ZWRQcm9wZXJ0eT4gd3JhcHBlciA9IGFuaW1hdGVkUHJvcGVydHlDYWNoZSgpLT5nZXQoa2V5
KTsKKyAgICAgICAgICAgIGlmICghd3JhcHBlcikgeworICAgICAgICAgICAgICAgIHdyYXBwZXIg
PSBUZWFyT2ZmVHlwZTo6Y3JlYXRlKGVsZW1lbnQsIGluZm8tPmF0dHJpYnV0ZU5hbWUsIHByb3Bl
cnR5KTsKKyAgICAgICAgICAgICAgICBhbmltYXRlZFByb3BlcnR5Q2FjaGUoKS0+c2V0KGtleSwg
d3JhcHBlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3BvaW50
ZXJfY2FzdDxUZWFyT2ZmVHlwZT4od3JhcHBlcikucmVsZWFzZSgpOworICAgICAgICB9CisgICAg
fTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgdHlwZW5hbWUgVGVhck9mZlR5
cGUsIHR5cGVuYW1lIFByb3BlcnR5VHlwZSwgYm9vbCBpc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudD4K
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZWFyT2ZmVHlwZT4gbG9va3VwT3JDcmVhdGVXcmFwcGVy
KE93bmVyVHlwZSogZWxlbWVudCwgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBpbmZvLCBQcm9wZXJ0
eVR5cGUmIHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEhlbHBlcjxUZWFyT2ZmVHlw
ZSwgUHJvcGVydHlUeXBlLCBpc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudD46Omxvb2t1cE9yQ3JlYXRl
V3JhcHBlcihlbGVtZW50LCBpbmZvLCBwcm9wZXJ0eSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVGVhck9mZlR5cGU+Ci0gICAgc3RhdGljIFRlYXJPZmZUeXBlKiBsb29rdXBXcmFw
cGVyKFNWR0VsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlSWRl
bnRpZmllcikKKyAgICBzdGF0aWMgVGVhck9mZlR5cGUqIGxvb2t1cFdyYXBwZXIoU1ZHRWxlbWVu
dCogZWxlbWVudCwgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBpbmZvKQogICAgIHsKLSAgICAgICAg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uIGtleShlbGVtZW50LCBhdHRyaWJ1dGVJZGVu
dGlmaWVyKTsKKyAgICAgICAgQVNTRVJUKGluZm8pOworICAgICAgICBTVkdBbmltYXRlZFByb3Bl
cnR5RGVzY3JpcHRpb24ga2V5KGVsZW1lbnQsIGluZm8tPnByb3BlcnR5SWRlbnRpZmllcik7CiAg
ICAgICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PFRlYXJPZmZUeXBlPihhbmltYXRlZFBy
b3BlcnR5Q2FjaGUoKS0+Z2V0KGtleSkpLmdldCgpOwogICAgIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlN
YWNyb3MuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAtMjAxMS4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsNyArMjMsNyBAQAogI2RlZmlu
ZSBTVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zX2gKIAogI2lmIEVOQUJMRShTVkcpCi0jaW5jbHVk
ZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oIgorI2luY2x1ZGUgIlNWR0F0dHJp
YnV0ZVRvUHJvcGVydHlNYXAuaCIKICNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0cy5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NCwxNCArNTQsMjQgQEAgc3RydWN0IEdldE93bmVyRWxl
bWVudEZvclR5cGU8T3duZXJUeXBlLAogdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgogc3Ry
dWN0IElzRGVyaXZlZEZyb21TVkdFbGVtZW50IHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1
ZSA9IHRydWU7CisgICAgdHlwZWRlZiBPd25lclR5cGUgRm9yd2FyZGVkT3duZXJUeXBlOwogfTsK
IAogY2xhc3MgU1ZHVmlld1NwZWM7CiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgSXNEZXJpdmVkRnJvbVNW
R0VsZW1lbnQ8U1ZHVmlld1NwZWM+IHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZh
bHNlOworICAgIHR5cGVkZWYgU1ZHRWxlbWVudCBGb3J3YXJkZWRPd25lclR5cGU7CiB9OwogCitj
bGFzcyBTVkdUZXN0czsKK3RlbXBsYXRlPD4KK3N0cnVjdCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVu
dDxTVkdUZXN0cz4geworICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7CisgICAg
dHlwZWRlZiBTVkdFbGVtZW50IEZvcndhcmRlZE93bmVyVHlwZTsKK307CisKKwogLy8gU1ZHU3lu
Y2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5IGltcGxlbWVudGF0aW9uCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBQcm9wZXJ0eVR5cGU+CiBzdHJ1Y3QgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3Bl
cnR5IHsKQEAgLTg5LDYwICs5OSwxMTYgQEAgc3RydWN0IFNWR1N5bmNocm9uaXphYmxlQW5pbWF0
ZWRQcm9wZXJ0eQogICAgIGJvb2wgc2hvdWxkU3luY2hyb25pemUgOiAxOwogfTsKIAotI2RlZmlu
ZSBERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RP
TUF0dHJpYnV0ZUlkZW50aWZpZXIsIFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJv
cGVydHksIExvd2VyUHJvcGVydHkpIFwKLXZvaWQgT3duZXJUeXBlOjpzeW5jaHJvbml6ZSMjVXBw
ZXJQcm9wZXJ0eSgpIFwKKy8vIFByb3BlcnR5IHJlZ2lzdHJhdGlvbiBoZWxwZXJzCisjZGVmaW5l
IEJFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoT3duZXJUeXBlKSBcCitTVkdBdHRy
aWJ1dGVUb1Byb3BlcnR5TWFwJiBPd25lclR5cGU6OmF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKSBc
CiB7IFwKLSAgICBpZiAoIW1fIyNMb3dlclByb3BlcnR5LnNob3VsZFN5bmNocm9uaXplKSBcCi0g
ICAgICAgICByZXR1cm47IFwKLSAgICBBdG9taWNTdHJpbmcgdmFsdWUoU1ZHUHJvcGVydHlUcmFp
dHM8UHJvcGVydHlUeXBlPjo6dG9TdHJpbmcoTG93ZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKCkpKTsg
XAotICAgIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50ID0gR2V0T3duZXJFbGVtZW50Rm9yVHlw
ZTxPd25lclR5cGUsIElzRGVyaXZlZEZyb21TVkdFbGVtZW50PE93bmVyVHlwZT46OnZhbHVlPjo6
b3duZXJFbGVtZW50KHRoaXMpOyBcCi0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXpl
cjxJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5cGU+Ojp2YWx1ZT46OnN5bmNocm9uaXpl
KGNvbnRleHRFbGVtZW50LCBET01BdHRyaWJ1dGUsIHZhbHVlKTsgXAorICAgIERFRklORV9TVEFU
SUNfTE9DQUwoU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5
TWFwLCAoKSk7IFwKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5TWFwOyBcCiB9IFwK
IFwKLVBhc3NSZWZQdHI8VGVhck9mZlR5cGU+IE93bmVyVHlwZTo6TG93ZXJQcm9wZXJ0eSMjQW5p
bWF0ZWQoKSBcCitzdGF0aWMgdm9pZCByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvciMjT3du
ZXJUeXBlKCkgXAogeyBcCi0gICAgbV8jI0xvd2VyUHJvcGVydHkuc2hvdWxkU3luY2hyb25pemUg
PSB0cnVlOyBcCi0gICAgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQgPSBHZXRPd25lckVsZW1l
bnRGb3JUeXBlPE93bmVyVHlwZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8T3duZXJUeXBlPjo6
dmFsdWU+Ojpvd25lckVsZW1lbnQodGhpcyk7IFwKLSAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5cGU+KGNv
bnRleHRFbGVtZW50LCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIG1f
IyNMb3dlclByb3BlcnR5LnZhbHVlKTsgXAotfQorICAgIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlN
YXAmIG1hcCA9IE93bmVyVHlwZTo6YXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpOyBcCisgICAgaWYg
KCFtYXAuaXNFbXB0eSgpKSBcCisgICAgICAgIHJldHVybjsgXAorICAgIHR5cGVkZWYgT3duZXJU
eXBlIFVzZU93bmVyVHlwZTsKKworI2RlZmluZSBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWShMb3dlclByb3BlcnR5KSBcCisgICAgIG1hcC5hZGRQcm9wZXJ0eShVc2VPd25lclR5cGU6
Okxvd2VyUHJvcGVydHkjI1Byb3BlcnR5SW5mbygpKTsKKworI2RlZmluZSBSRUdJU1RFUl9QQVJF
TlRfQU5JTUFURURfUFJPUEVSVElFUyhDbGFzc05hbWUpIFwKKyAgICAgbWFwLmFkZFByb3BlcnRp
ZXMoQ2xhc3NOYW1lOjphdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCkpOyBcCisKKyNkZWZpbmUgRU5E
X1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMgfQorCisvLyBQcm9wZXJ0eSBkZWZpbml0aW9u
IGhlbHBlcnMgKHVzZWQgaW4gU1ZHKi5jcHAgZmlsZXMpCisjZGVmaW5lIEJFR0lOX0RFRklORV9B
TklNQVRFRF9QUk9QRVJUSUVTCisKKyNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFu
aW1hdGVkUHJvcGVydHlUeXBlRW51bSwgT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0
dHJpYnV0ZUlkZW50aWZpZXIsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKK2NvbnN0
IFNWR1Byb3BlcnR5SW5mbyogT3duZXJUeXBlOjpMb3dlclByb3BlcnR5IyNQcm9wZXJ0eUluZm8o
KSB7IFwKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBzX3Byb3BlcnR5SW5mbyA9
IDA7IFwKKyAgICBpZiAoIXNfcHJvcGVydHlJbmZvKSBcCisgICAgICAgIHNfcHJvcGVydHlJbmZv
ID0gbmV3IFNWR1Byb3BlcnR5SW5mbyhBbmltYXRlZFByb3BlcnR5VHlwZUVudW0sIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPTUF0dHJpYnV0ZSwgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRE9NQXR0cmli
dXRlSWRlbnRpZmllciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJk93bmVyVHlwZTo6c3luY2hyb25pemUjI1VwcGVyUHJvcGVydHksIFwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZPd25lclR5cGU6Omxvb2t1cE9y
Q3JlYXRlIyNVcHBlclByb3BlcnR5IyNXcmFwcGVyKTsgXAorICAgIFwKKyAgICByZXR1cm4gc19w
cm9wZXJ0eUluZm87IFwKK30gCisKKyNkZWZpbmUgRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJU
SUVTCisKKy8vIFByb3BlcnR5IGRlY2xhcmF0aW9uIGhlbHBlcnMgKHVzZWQgaW4gU1ZHKi5oIGZp
bGVzKQorI2RlZmluZSBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoT3duZXJUeXBl
KSBcCitwdWJsaWM6IFwKKyAgICBzdGF0aWMgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgYXR0
cmlidXRlVG9Qcm9wZXJ0eU1hcCgpOyBcCisgICAgdmlydHVhbCBTVkdBdHRyaWJ1dGVUb1Byb3Bl
cnR5TWFwJiBsb2NhbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKSBcCisgICAgeyBcCisgICAgICAg
IHJldHVybiBhdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCk7IFwKKyAgICB9XAorICAgIHR5cGVkZWYg
T3duZXJUeXBlIFVzZU93bmVyVHlwZTsKIAogI2RlZmluZSBERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRZKFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVy
dHkpIFwKIHB1YmxpYzogXAotUHJvcGVydHlUeXBlJiBMb3dlclByb3BlcnR5KCkgY29uc3QgXAot
eyBcCi0gICAgcmV0dXJuIG1fIyNMb3dlclByb3BlcnR5LnZhbHVlOyBcCi19IFwKLVwKLVByb3Bl
cnR5VHlwZSYgTG93ZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKCkgY29uc3QgXAoteyBcCi0gICAgcmV0
dXJuIG1fIyNMb3dlclByb3BlcnR5LnZhbHVlOyBcCi19IFwKLVwKLXZvaWQgc2V0IyNVcHBlclBy
b3BlcnR5IyNCYXNlVmFsdWUoY29uc3QgUHJvcGVydHlUeXBlJiB0eXBlKSBcCi17IFwKLSAgICBt
XyMjTG93ZXJQcm9wZXJ0eS52YWx1ZSA9IHR5cGU7IFwKLX0gXAotXAotUGFzc1JlZlB0cjxUZWFy
T2ZmVHlwZT4gTG93ZXJQcm9wZXJ0eSMjQW5pbWF0ZWQoKTsgXAotXAorICAgIHN0YXRpYyBjb25z
dCBTVkdQcm9wZXJ0eUluZm8qIExvd2VyUHJvcGVydHkjI1Byb3BlcnR5SW5mbygpOyBcCisgICAg
UHJvcGVydHlUeXBlJiBMb3dlclByb3BlcnR5KCkgY29uc3QgXAorICAgIHsgXAorICAgICAgICBy
ZXR1cm4gbV8jI0xvd2VyUHJvcGVydHkudmFsdWU7IFwKKyAgICB9IFwKKyAgICBcCisgICAgUHJv
cGVydHlUeXBlJiBMb3dlclByb3BlcnR5IyNCYXNlVmFsdWUoKSBjb25zdCBcCisgICAgeyBcCisg
ICAgICAgIHJldHVybiBtXyMjTG93ZXJQcm9wZXJ0eS52YWx1ZTsgXAorICAgIH0gXAorICAgIFwK
KyAgICB2b2lkIHNldCMjVXBwZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKGNvbnN0IFByb3BlcnR5VHlw
ZSYgdHlwZSkgXAorICAgIHsgXAorICAgICAgICBtXyMjTG93ZXJQcm9wZXJ0eS52YWx1ZSA9IHR5
cGU7IFwKKyAgICB9IFwKKyAgICBcCisgICAgUGFzc1JlZlB0cjxUZWFyT2ZmVHlwZT4gTG93ZXJQ
cm9wZXJ0eSMjQW5pbWF0ZWQoKSBcCisgICAgeyBcCisgICAgICAgIG1fIyNMb3dlclByb3BlcnR5
LnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsgXAorICAgICAgICByZXR1cm4gc3RhdGljX3BvaW50
ZXJfY2FzdDxUZWFyT2ZmVHlwZT4obG9va3VwT3JDcmVhdGUjI1VwcGVyUHJvcGVydHkjI1dyYXBw
ZXIodGhpcykpOyBcCisgICAgfSBcCisgICAgXAogcHJpdmF0ZTogXAotICAgIHZvaWQgc3luY2hy
b25pemUjI1VwcGVyUHJvcGVydHkoKTsgXAotXAorICAgIHZvaWQgc3luY2hyb25pemUjI1VwcGVy
UHJvcGVydHkoKSBcCisgICAgeyBcCisgICAgICAgIGlmICghbV8jI0xvd2VyUHJvcGVydHkuc2hv
dWxkU3luY2hyb25pemUpIFwKKyAgICAgICAgICAgIHJldHVybjsgXAorICAgICAgICBBdG9taWNT
dHJpbmcgdmFsdWUoU1ZHUHJvcGVydHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6dG9TdHJpbmcobV8j
I0xvd2VyUHJvcGVydHkudmFsdWUpKTsgXAorICAgICAgICBTVkdFbGVtZW50KiBjb250ZXh0RWxl
bWVudCA9IEdldE93bmVyRWxlbWVudEZvclR5cGU8VXNlT3duZXJUeXBlLCBJc0Rlcml2ZWRGcm9t
U1ZHRWxlbWVudDxVc2VPd25lclR5cGU+Ojp2YWx1ZT46Om93bmVyRWxlbWVudCh0aGlzKTsgXAor
ICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPElzRGVyaXZlZEZyb21TVkdF
bGVtZW50PFVzZU93bmVyVHlwZT46OnZhbHVlPjo6c3luY2hyb25pemUoY29udGV4dEVsZW1lbnQs
IExvd2VyUHJvcGVydHkjI1Byb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lLCB2YWx1ZSk7IFwK
KyAgICB9IFwKKyAgICBcCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0
eT4gbG9va3VwT3JDcmVhdGUjI1VwcGVyUHJvcGVydHkjI1dyYXBwZXIodm9pZCogbWFza2VkT3du
ZXJUeXBlKSBcCisgICAgeyBcCisgICAgICAgIEFTU0VSVChtYXNrZWRPd25lclR5cGUpOyBcCisg
ICAgICAgIFVzZU93bmVyVHlwZSogb3duZXJUeXBlID0gc3RhdGljX2Nhc3Q8VXNlT3duZXJUeXBl
Kj4obWFza2VkT3duZXJUeXBlKTsgXAorICAgICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0
eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFVzZU93bmVyVHlwZSwgVGVhck9mZlR5cGUsIFByb3Bl
cnR5VHlwZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8VXNlT3duZXJUeXBlPjo6dmFsdWU+KG93
bmVyVHlwZSwgTG93ZXJQcm9wZXJ0eSMjUHJvcGVydHlJbmZvKCksIG93bmVyVHlwZS0+bV8jI0xv
d2VyUHJvcGVydHkudmFsdWUpOyBcCisgICAgfSBcCisgICAgXAorICAgIHN0YXRpYyB2b2lkIHN5
bmNocm9uaXplIyNVcHBlclByb3BlcnR5KHZvaWQqIG1hc2tlZE93bmVyVHlwZSkgXAorICAgIHsg
XAorICAgICAgICBBU1NFUlQobWFza2VkT3duZXJUeXBlKTsgXAorICAgICAgICBVc2VPd25lclR5
cGUqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFVzZU93bmVyVHlwZSo+KG1hc2tlZE93bmVyVHlw
ZSk7IFwKKyAgICAgICAgb3duZXJUeXBlLT5zeW5jaHJvbml6ZSMjVXBwZXJQcm9wZXJ0eSgpOyBc
CisgICAgfSBcCisgICAgXAogICAgIG11dGFibGUgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFBy
b3BlcnR5PFByb3BlcnR5VHlwZT4gbV8jI0xvd2VyUHJvcGVydHk7CiAKKyNkZWZpbmUgRU5EX0RF
Q0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyAKKworLy8gTGlzdCBzcGVjaWZpYyBkZWZpbml0aW9u
L2RlY2xhcmF0aW9uIGhlbHBlcnMKICNkZWZpbmUgREVDTEFSRV9BTklNQVRFRF9MSVNUX1BST1BF
UlRZKFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVy
dHkpIFwKIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoVGVhck9mZlR5cGUsIFByb3BlcnR5VHlw
ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotdm9pZCBkZXRhY2hBbmltYXRlZCMj
VXBwZXJQcm9wZXJ0eSMjTGlzdFdyYXBwZXJzKHVuc2lnbmVkIG5ld0xpc3RTaXplKTsKLQotI2Rl
ZmluZSBERUZJTkVfQU5JTUFURURfTElTVF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0
ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgVGVhck9mZlR5cGUsIFByb3BlcnR5VHlwZSwg
VXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZ
KE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBUZWFy
T2ZmVHlwZSwgUHJvcGVydHlUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCi12
b2lkIE93bmVyVHlwZTo6ZGV0YWNoQW5pbWF0ZWQjI1VwcGVyUHJvcGVydHkjI0xpc3RXcmFwcGVy
cyh1bnNpZ25lZCBuZXdMaXN0U2l6ZSkgXAordm9pZCBkZXRhY2hBbmltYXRlZCMjVXBwZXJQcm9w
ZXJ0eSMjTGlzdFdyYXBwZXJzKHVuc2lnbmVkIG5ld0xpc3RTaXplKSBcCiB7IFwKLSAgICBTVkdF
bGVtZW50KiBjb250ZXh0RWxlbWVudCA9IEdldE93bmVyRWxlbWVudEZvclR5cGU8T3duZXJUeXBl
LCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5cGU+Ojp2YWx1ZT46Om93bmVyRWxlbWVu
dCh0aGlzKTsgXAotICAgIFNWR0FuaW1hdGVkUHJvcGVydHkqIHdyYXBwZXIgPSBTVkdBbmltYXRl
ZFByb3BlcnR5Ojpsb29rdXBXcmFwcGVyPFRlYXJPZmZUeXBlPihjb250ZXh0RWxlbWVudCwgRE9N
QXR0cmlidXRlLmxvY2FsTmFtZSgpKTsgXAotICAgIGlmICghd3JhcHBlcikgXAotICAgICAgICBy
ZXR1cm47IFwKLSAgICBzdGF0aWNfY2FzdDxUZWFyT2ZmVHlwZSo+KHdyYXBwZXIpLT5kZXRhY2hM
aXN0V3JhcHBlcnMobmV3TGlzdFNpemUpOyBcCisgICAgaWYgKFNWR0FuaW1hdGVkUHJvcGVydHkq
IHdyYXBwZXIgPSBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBXcmFwcGVyPFRlYXJPZmZUeXBl
Pih0aGlzLCBMb3dlclByb3BlcnR5IyNQcm9wZXJ0eUluZm8oKSkpIFwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VGVhck9mZlR5cGUqPih3cmFwcGVyKS0+ZGV0YWNoTGlzdFdyYXBwZXJzKG5ld0xpc3RT
aXplKTsgXAogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
dHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlN
YXAuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR0F0dHJp
YnV0ZVRvUHJvcGVydHlNYXAuaCIKKworI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHkuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA6
OmFuaW1hdGVkUHJvcGVydGllc0ZvckF0dHJpYnV0ZShTVkdFbGVtZW50KiBvd25lclR5cGUsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFZlY3RvcjxSZWZQdHI8U1ZHQW5pbWF0
ZWRQcm9wZXJ0eT4gPiYgcHJvcGVydGllcykKK3sKKyAgICBBU1NFUlQob3duZXJUeXBlKTsKKyAg
ICBQcm9wZXJ0aWVzVmVjdG9yKiB2ZWN0b3IgPSBtX21hcC5nZXQoYXR0cmlidXRlTmFtZSk7Cisg
ICAgaWYgKCF2ZWN0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIFByb3BlcnRpZXNWZWN0b3I6
Oml0ZXJhdG9yIHZlY3RvckVuZCA9IHZlY3Rvci0+ZW5kKCk7CisgICAgZm9yIChQcm9wZXJ0aWVz
VmVjdG9yOjppdGVyYXRvciB2ZWN0b3JJdCA9IHZlY3Rvci0+YmVnaW4oKTsgdmVjdG9ySXQgIT0g
dmVjdG9yRW5kOyArK3ZlY3Rvckl0KQorICAgICAgICBwcm9wZXJ0aWVzLmFwcGVuZChhbmltYXRl
ZFByb3BlcnR5KG93bmVyVHlwZSwgYXR0cmlidXRlTmFtZSwgKnZlY3Rvckl0KSk7Cit9CisKK30K
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1
dGVUb1Byb3BlcnR5TWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2gg
SW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBTVkdB
dHRyaWJ1dGVUb1Byb3BlcnR5TWFwX2gKKyNkZWZpbmUgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1h
cF9oCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKKyNpbmNs
dWRlICJTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmgiCisjaW5jbHVkZSAiU1ZHUHJv
cGVydHlJbmZvLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5OworY2xhc3MgU1ZHRWxlbWVudDsKKwor
Y2xhc3MgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCB7CitwdWJsaWM6CisgICAgU1ZHQXR0cmli
dXRlVG9Qcm9wZXJ0eU1hcCgpIHsgfQorICAgIH5TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCkg
eyBkZWxldGVBbGxWYWx1ZXMobV9tYXApOyB9CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX21hcC5pc0VtcHR5KCk7IH0KKworICAgIHZvaWQgYWRkUHJvcGVydGllcyhTVkdB
dHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBtYXApCisgICAgeworICAgICAgICBBdHRyaWJ1dGVUb1By
b3BlcnRpZXNNYXA6Oml0ZXJhdG9yIGVuZCA9IG1hcC5tX21hcC5lbmQoKTsKKyAgICAgICAgZm9y
IChBdHRyaWJ1dGVUb1Byb3BlcnRpZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLm1fbWFwLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgUHJvcGVydGllc1ZlY3RvciogdmVj
dG9yID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIEFTU0VSVCh2ZWN0b3IpOworCisgICAgICAg
ICAgICBQcm9wZXJ0aWVzVmVjdG9yOjppdGVyYXRvciB2ZWN0b3JFbmQgPSB2ZWN0b3ItPmVuZCgp
OworICAgICAgICAgICAgZm9yIChQcm9wZXJ0aWVzVmVjdG9yOjppdGVyYXRvciB2ZWN0b3JJdCA9
IHZlY3Rvci0+YmVnaW4oKTsgdmVjdG9ySXQgIT0gdmVjdG9yRW5kOyArK3ZlY3Rvckl0KQorICAg
ICAgICAgICAgICAgIGFkZFByb3BlcnR5KCp2ZWN0b3JJdCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICB2b2lkIGFkZFByb3BlcnR5KGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogaW5mbykKKyAgICB7
CisgICAgICAgIEFTU0VSVChpbmZvKTsKKyAgICAgICAgQVNTRVJUKGluZm8tPmF0dHJpYnV0ZU5h
bWUgIT0gYW55UU5hbWUoKSk7CisgICAgICAgIGlmIChQcm9wZXJ0aWVzVmVjdG9yKiB2ZWN0b3Ig
PSBtX21hcC5nZXQoaW5mby0+YXR0cmlidXRlTmFtZSkpIHsKKyAgICAgICAgICAgIHZlY3Rvci0+
YXBwZW5kKGluZm8pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFBy
b3BlcnRpZXNWZWN0b3IqIHZlY3RvciA9IG5ldyBQcm9wZXJ0aWVzVmVjdG9yOworICAgICAgICB2
ZWN0b3ItPmFwcGVuZChpbmZvKTsKKyAgICAgICAgbV9tYXAuc2V0KGluZm8tPmF0dHJpYnV0ZU5h
bWUsIHZlY3Rvcik7CisgICAgfQorCisgICAgdm9pZCBhbmltYXRlZFByb3BlcnRpZXNGb3JBdHRy
aWJ1dGUoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUsIFZlY3RvcjxSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gPiYgcHJvcGVy
dGllcyk7CisKKyAgICB2b2lkIGFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFZlY3RvcjxBbmltYXRlZFByb3BlcnR5VHlw
ZT4mIHByb3BlcnR5VHlwZXMpCisgICAgeworICAgICAgICBQcm9wZXJ0aWVzVmVjdG9yKiB2ZWN0
b3IgPSBtX21hcC5nZXQoYXR0cmlidXRlTmFtZSk7CisgICAgICAgIGlmICghdmVjdG9yKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFByb3BlcnRpZXNWZWN0b3I6Oml0ZXJhdG9yIHZl
Y3RvckVuZCA9IHZlY3Rvci0+ZW5kKCk7CisgICAgICAgIGZvciAoUHJvcGVydGllc1ZlY3Rvcjo6
aXRlcmF0b3IgdmVjdG9ySXQgPSB2ZWN0b3ItPmJlZ2luKCk7IHZlY3Rvckl0ICE9IHZlY3RvckVu
ZDsgKyt2ZWN0b3JJdCkKKyAgICAgICAgICAgIHByb3BlcnR5VHlwZXMuYXBwZW5kKCgqdmVjdG9y
SXQpLT5hbmltYXRlZFByb3BlcnR5VHlwZSk7CisgICAgfQorCisgICAgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnRpZXMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCisgICAgeworICAgICAgICBB
U1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgICAgICBBdHRyaWJ1dGVUb1Byb3BlcnRpZXNNYXA6
Oml0ZXJhdG9yIGVuZCA9IG1fbWFwLmVuZCgpOworICAgICAgICBmb3IgKEF0dHJpYnV0ZVRvUHJv
cGVydGllc01hcDo6aXRlcmF0b3IgaXQgPSBtX21hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKKyAgICAgICAgICAgIFByb3BlcnRpZXNWZWN0b3IqIHZlY3RvciA9IGl0LT5zZWNvbmQ7Cisg
ICAgICAgICAgICBBU1NFUlQodmVjdG9yKTsKKworICAgICAgICAgICAgUHJvcGVydGllc1ZlY3Rv
cjo6aXRlcmF0b3IgdmVjdG9yRW5kID0gdmVjdG9yLT5lbmQoKTsKKyAgICAgICAgICAgIGZvciAo
UHJvcGVydGllc1ZlY3Rvcjo6aXRlcmF0b3IgdmVjdG9ySXQgPSB2ZWN0b3ItPmJlZ2luKCk7IHZl
Y3Rvckl0ICE9IHZlY3RvckVuZDsgKyt2ZWN0b3JJdCkKKyAgICAgICAgICAgICAgICBzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnRleHRFbGVtZW50LCBpdC0+Zmlyc3QsICp2ZWN0b3JJdCk7CisgICAg
ICAgIH0gCisgICAgfQorCisgICAgYm9vbCBzeW5jaHJvbml6ZVByb3BlcnR5KFNWR0VsZW1lbnQq
IGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICAgICAgUHJvcGVydGllc1Zl
Y3RvciogdmVjdG9yID0gbV9tYXAuZ2V0KGF0dHJpYnV0ZU5hbWUpOworICAgICAgICBpZiAoIXZl
Y3RvcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBQcm9wZXJ0aWVzVmVj
dG9yOjppdGVyYXRvciB2ZWN0b3JFbmQgPSB2ZWN0b3ItPmVuZCgpOworICAgICAgICBmb3IgKFBy
b3BlcnRpZXNWZWN0b3I6Oml0ZXJhdG9yIHZlY3Rvckl0ID0gdmVjdG9yLT5iZWdpbigpOyB2ZWN0
b3JJdCAhPSB2ZWN0b3JFbmQ7ICsrdmVjdG9ySXQpCisgICAgICAgICAgICBzeW5jaHJvbml6ZVBy
b3BlcnR5KGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCAqdmVjdG9ySXQpOworCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHN5bmNocm9uaXpl
UHJvcGVydHkoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogaW5mbykKKyAgICB7CisgICAg
ICAgIEFTU0VSVChpbmZvKTsKKyAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZU5hbWUgPT0gaW5mby0+
YXR0cmlidXRlTmFtZSk7CisgICAgICAgIEFTU0VSVChpbmZvLT5zeW5jaHJvbml6ZVByb3BlcnR5
KTsKKyAgICAgICAgKCppbmZvLT5zeW5jaHJvbml6ZVByb3BlcnR5KShjb250ZXh0RWxlbWVudCk7
CisgICAgfQorCisgICAgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBhbmltYXRlZFBy
b3BlcnR5KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lLCBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIGluZm8pCisgICAgeworICAgICAg
ICBBU1NFUlQoaW5mbyk7CisgICAgICAgIEFTU0VSVChhdHRyaWJ1dGVOYW1lID09IGluZm8tPmF0
dHJpYnV0ZU5hbWUpOworICAgICAgICBBU1NFUlQoaW5mby0+bG9va3VwT3JDcmVhdGVXcmFwcGVy
Rm9yQW5pbWF0ZWRQcm9wZXJ0eSk7CisgICAgICAgIHJldHVybiAoKmluZm8tPmxvb2t1cE9yQ3Jl
YXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVydHkpKGNvbnRleHRFbGVtZW50KTsKKyAgICB9CisK
KyAgICB0eXBlZGVmIFZlY3Rvcjxjb25zdCBTVkdQcm9wZXJ0eUluZm8qPiBQcm9wZXJ0aWVzVmVj
dG9yOworICAgIHR5cGVkZWYgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBQcm9wZXJ0aWVzVmVjdG9y
Kj4gQXR0cmlidXRlVG9Qcm9wZXJ0aWVzTWFwOworICAgIEF0dHJpYnV0ZVRvUHJvcGVydGllc01h
cCBtX21hcDsKK307CisKK30KKworI2VuZGlmCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5SW5mby5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgU1ZHUHJvcGVy
dHlJbmZvX2gKKyNkZWZpbmUgU1ZHUHJvcGVydHlJbmZvX2gKKworI2lmIEVOQUJMRShTVkcpCisj
aW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTsKKworZW51
bSBBbmltYXRlZFByb3BlcnR5VHlwZSB7CisgICAgQW5pbWF0ZWRBbmdsZSwKKyAgICBBbmltYXRl
ZEJvb2xlYW4sCisgICAgQW5pbWF0ZWRDb2xvciwKKyAgICBBbmltYXRlZEVudW1lcmF0aW9uLAor
ICAgIEFuaW1hdGVkSW50ZWdlciwKKyAgICBBbmltYXRlZExlbmd0aCwKKyAgICBBbmltYXRlZExl
bmd0aExpc3QsCisgICAgQW5pbWF0ZWROdW1iZXIsCisgICAgQW5pbWF0ZWROdW1iZXJMaXN0LAor
ICAgIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIsCisgICAgQW5pbWF0ZWRQYXRoLAorICAg
IEFuaW1hdGVkUG9pbnRzLAorICAgIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbywKKyAgICBB
bmltYXRlZFJlY3QsCisgICAgQW5pbWF0ZWRTdHJpbmcsCisgICAgQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0LAorICAgIEFuaW1hdGVkVW5rbm93bgorfTsKKworc3RydWN0IFNWR1Byb3BlcnR5SW5mbyB7
CisgICAgdHlwZWRlZiB2b2lkICgqU3luY2hyb25pemVQcm9wZXJ0eSkodm9pZCopOworICAgIHR5
cGVkZWYgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiAoKkxvb2t1cE9yQ3JlYXRlV3Jh
cHBlckZvckFuaW1hdGVkUHJvcGVydHkpKHZvaWQqKTsKKworICAgIFNWR1Byb3BlcnR5SW5mbyhB
bmltYXRlZFByb3BlcnR5VHlwZSBuZXdUeXBlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuZXdBdHRy
aWJ1dGVOYW1lLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1By
b3BlcnR5SWRlbnRpZmllciwgU3luY2hyb25pemVQcm9wZXJ0eSBuZXdTeW5jaHJvbml6ZVByb3Bl
cnR5LAorICAgICAgICAgICAgICAgICAgICBMb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JBbmltYXRl
ZFByb3BlcnR5IG5ld0xvb2t1cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVydHkpCisg
ICAgICAgIDogYW5pbWF0ZWRQcm9wZXJ0eVR5cGUobmV3VHlwZSkKKyAgICAgICAgLCBhdHRyaWJ1
dGVOYW1lKG5ld0F0dHJpYnV0ZU5hbWUpCisgICAgICAgICwgcHJvcGVydHlJZGVudGlmaWVyKG5l
d1Byb3BlcnR5SWRlbnRpZmllcikKKyAgICAgICAgLCBzeW5jaHJvbml6ZVByb3BlcnR5KG5ld1N5
bmNocm9uaXplUHJvcGVydHkpCisgICAgICAgICwgbG9va3VwT3JDcmVhdGVXcmFwcGVyRm9yQW5p
bWF0ZWRQcm9wZXJ0eShuZXdMb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JBbmltYXRlZFByb3BlcnR5
KQorICAgIHsKKyAgICB9CisKKyAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBhbmltYXRlZFByb3Bl
cnR5VHlwZTsKKyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lOworICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlJZGVudGlmaWVyOworICAgIFN5bmNocm9uaXplUHJv
cGVydHkgc3luY2hyb25pemVQcm9wZXJ0eTsKKyAgICBMb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JB
bmltYXRlZFByb3BlcnR5IGxvb2t1cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVydHk7
Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKQorI2VuZGlmIC8vIFNWR1Byb3BlcnR5
SW5mb19oCg==
</data>
<flag name="commit-queue"
          id="94596"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99999</attachid>
            <date>2011-07-07 09:40:45 -0700</date>
            <delta_ts>2011-07-08 05:59:46 -0700</delta_ts>
            <desc>Patch v5</desc>
            <filename>AnimValPrep-v5.diff</filename>
            <type>text/plain</type>
            <size>446247</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwNTYwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIwIEBACisyMDExLTA3LTA3ICBOaWtvbGFz
IFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIEFkZCBhIHBvc3Np
YmlsaXR5IHRvIHJldHJpZXZlIHRoZSBhc3NvY2lhdGVkIFNWR0FuaW1hdGVkUHJvcGVydHkgb2Jq
ZWN0IGZvciBhIGNlcnRhaW4gWE1MIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM3OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbiBvcmRlciB0byBwcmVwYXJlIGFuaW1WYWwgc3VwcG9y
dCB3ZSBuZWVkIGEgd2F5IHRvIG1hcCBhIGdpdmVuIFNWRyBET00gYXR0cmlidXRlIHRvIGEgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eS4KKyAgICAgICAgZWcuIFNWR05hbWVzOjp4QXR0ciAtPiBTVkdSZWN0
RWxlbWVudDo6eEFuaW1hdGVkKCksIGV0Yy4gVGhpcyB3aWxsIGJlIG5lZWRlZCB0byB1cGRhdGUg
dGhlIGFuaW1WYWwgb2YgdGhlCisgICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHksIGlmIGFuIGFu
aW1hdGlvbiBpcyBydW5uaW5nLiBJdCB3b3VsZCByZXF1aXJlZCBhZGRpbmcgYSBuZXcgbWV0aG9k
IHRvIGFsbCBTVkcqIGNsYXNzZXMKKyAgICAgICAgdGhhdCBkZWZpbmUgYW5pbWF0ZWQgcHJvcGVy
dGllcy4gVW5mb3J0dW5hdGVseSB3ZSBhbHJlYWR5IGhhdmUgbG90cyBvZiByZXBlYXRlZCBjb2Rl
IGluIG1ldGhvZHMgbGlrZQorICAgICAgICBzeW5jaHJvbml6ZVByb3BlcnR5IC8gZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLiBMb29rIGF0IFNWR1JlY3RFbGVtZW50IGZvciBleGFtcGxl
OgorCisgICAgICAgIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChh
dHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7CisgICAgICAgICAgICAgICAgc3luY2hyb25pemVYKCk7
CisgICAgICAgICAgICAgICAgc3luY2hyb25pemVZKCk7CisgICAgICAgICAgICAgICAgIC4uLgor
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
eEF0dHIpIHsKKyAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZVgoKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6eUF0dHIpIHsKKyAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZVkoKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAuLi4KKyAgICAg
ICAgfQorCisgICAgICAgIG9yCisKKyAgICAgICAgdm9pZCBTVkdSZWN0RWxlbWVudDo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKKyAgICAgICAgeworICAgICAgICAgICAgQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAgICAgCisgICAgICAgICAgICBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKKyAgICAgICAgICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
KyAgICAgICAgICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICAgICAgICAgIC4uLgorICAgICAgICB9CisKKyAgICAg
ICAgVGhlc2UgbG9va3VwcyBhcmUgYWxsIHBlcmZvcm1lZCBkeW5hbWljYWxseS4gRWFjaCBzeW5j
aHJvbml6ZVByb3BlcnR5KCkgY2FsbCBkb2VzIGEgbG90IG9mIGNvbXBhcmlzb25zLgorICAgICAg
ICBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKSBpc24ndCB0aGF0IGJhZCBhcyB0aGUg
cmVzdWx0IGlzIGNhY2hlZCBpbiBhIHN0YXRpYyBIYXNoTWFwIHBlci1TVkdSZWN0RWxlbWVudC4K
KyAgICAgICAgVGhlcmUncyBubyByZWFzb24gdG8gZG8gdGhlc2UgdGhpbmdzIGR5bmFtaWNhbGx5
IQorCisgICAgICAgIEluc3BpcmVkIGJ5IEpTQywgSSdtIGFkZGluZyBhICJzdGF0aWMgY29uc3Qg
U1ZHUHJvcGVydHlJbmZvIHNfZm9vUHJvcGVydHlJbmZvIiBvYmplY3QgZm9yIGVhY2ggYW5pbWF0
ZWQgU1ZHIHByb3BlcnR5LgorICAgICAgICBGb3IgZXhhbXBsZSwgZm9yIFNWR1JlY3RFbGVtZW50
cyBTVkdBbmltYXRlZExlbmd0aCB4IHByb3BlcnR5IHdlJ3JlIHN0b3Jpbmc6CisgICAgICAgIC0g
IkFuaW1hdGVkUHJvcGVydHlUeXBlIHR5cGUiIChBbmltYXRlZExlbmd0aCAtLSBub3RlIHRoZSBl
bnVtIHdhcyBuYW1lZCBBbmltYXRlZEF0dHJpYnV0ZVR5cGUsIEkgcmVuYW1lZCBpdCB0byBBbmlt
YXRlZFByb3BlcnR5VHlwZSBmb3IgY2xhcml0eSkKKyAgICAgICAgLSAiY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSIgKFNWR05hbWVzOjp4QXR0cikKKyAgICAgICAgLSAiY29uc3Qg
QXRvbWljU3RyaW5nJiBwcm9wZXJ0eUlkZW50aWZpZXIiIChTVkdOYW1lczo6eEF0dHIubG9jYWxO
YW1lKCkgLS0gb25seSBkaWZmZXJlbnQgaWYgTi13cmFwcGVycyBtYXAgdG8gYSBzaW5nbGUgWE1M
IERPTSBhdHRyaWJ1dGUsIGVnLiBvcmllbnRBdHRyKQorICAgICAgICAtICJTeW5jaHJvbml6ZVBy
b3BlcnR5IHN5bmNocm9uaXplUHJvcGVydHkiIChjYWxsYmFjayB0byBTVkdSZWN0RWxlbWVudDo6
c3luY2hyb25pemVYKQorICAgICAgICAtICJMb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JBbmltYXRl
ZFByb3BlcnR5IGxvb2t1cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVydHkiIChjYWxs
YmFjayB0byBTVkdSZWN0RWxlbWVudDo6eEFuaW1hdGVkKQorCisgICAgICAgIFVzaW5nIHRoaXMg
aW5mb3JtYXRpb24sIHdlIGNhbiByZXBsYWNlIGFsbCB0aGUgdmFyaW91cyBzeW5jaHJvbml6ZVBy
b3BlcnR5L2ZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwIGltcGxlbWVudGF0aW9ucywgd2l0aCBh
IHNpbmdsZSBvbmUgaW4gU1ZHRWxlbWVudC4KKyAgICAgICAgQWxsIHRoZXNlIGFyZSBhdXRvLWdl
bmVyYXRlZCwgdXNpbmcgdGhlIHN0YW5kYXJkIG1hY3JvcyB1c2VkIHRvIGRlZmluZS9kZWNsYXJl
IFNWRyBhbmltYXRlZCBwcm9wZXJ0aWVzLiBUaGlzIHJlcXVpcmVkIHNldmVyYWwgY2hhbmdlcyB0
byB0aGUgbWFjcm9zLgorICAgICAgICBIZXJlJ3MgYSBzdW1tYXJ5OgorICAgIAorICAgICAgICAj
MSkgSW4gYWxsIGhlYWRlcnMsIHdyYXAgREVDTEFSRV9BTklNQVRFRF8qIGNhbGxzLCBpbiBCRUdJ
Tl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoQ2xhc3NOYW1lKSAvIEVORF9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMgYmxvY2tzLgorICAgICAgICAKKyAgICAgICAgICAgIFNhbXBsZSBj
aGFuZ2UgZm9yIFNWR1JlY3RFbGVtZW50OgorICAgICAgICAgICAgLSAgICBERUNMQVJFX0FOSU1B
VEVEX0xFTkdUSChYLCB4KQorICAgICAgICAgICAgLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdU
SChZLCB5KQorICAgICAgICAgICAgLSAgICAuLi4KKworICAgICAgICAgICAgKyAgICBCRUdJTl9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUmVjdEVsZW1lbnQpCisgICAgICAgICAgICAr
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQorICAgICAgICAgICAgKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKKyAgICAgICAgICAgICsgICAgICAgICAu
Li4KKyAgICAgICAgICAgICsgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisg
ICAgICAgICMyKSBJbiBhbGwgY3BwIGZpbGVzLCB3cmFwIERFRklORV9BTklNQVRFRF8qIGNhbGxz
LCBpbiBCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUyAvIEVORF9ERUZJTkVfQU5JTUFU
RURfUFJPUEVSVElFUyBibG9ja3MuCisgICAgCisgICAgICAgICAgICBTYW1wbGUgY2hhbmdlIGZv
ciBTVkdSZWN0RWxlbWVudDoKKyAgICAgICAgICAgIC1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNW
R1JlY3RFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCisgICAgICAgICAgICAtREVGSU5F
X0FOSU1BVEVEX0xFTkdUSChTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQor
ICAgICAgICAgICAgLS4uLgorCisgICAgICAgICAgICArQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BS
T1BFUlRJRVMKKyAgICAgICAgICAgICsgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdSZWN0
RWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQorICAgICAgICAgICAgKyAgICBERUZJTkVf
QU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCisg
ICAgICAgICAgICArICAgIC4uLgorICAgICAgICAgICAgK0VORF9ERUZJTkVfQU5JTUFURURfUFJP
UEVSVElFUworCisgICAgICAgIAorICAgICAgICAgICAgVGhpcyBub3cgZ2VuZXJhdGVzIHRoZSAi
c3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyIgb2JqZWN0cyBmb3IgZWFjaCBhbmltYXRlZCBT
VkcgcHJvcGVydHkuCisKKyAgICAgICAgIzMpIEluIGFsbCBjcHAgZmlsZXMsIGFkZCBhIG5ldyBz
ZWN0aW9uIHdyYXBwZWQgaW4gQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhDbGFz
c05hbWUgLyBFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyBibG9ja3M6CisgICAgICAg
IAorICAgICAgICAgICAgU2FtcGxlIGNoYW5nZSBmb3IgU1ZHUmVjdEVsZW1lbnQ6CisgICAgICAg
ICAgICArQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdSZWN0RWxlbWVudCkK
KyAgICAgICAgICAgICsgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeCkKKyAg
ICAgICAgICAgICsgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeSkKKyAgICAg
ICAgICAgICsgICAgLi4uCisgICAgICAgICAgICArICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KQorICAgICAgICAgICAg
KyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKKyAgICAg
ICAgICAgICtFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUworCisgICAgICAgICAgICBU
aGlzIGlzIHRoZSBtYWluIHBpZWNlIG9mIHRoZSBsb2dpYyB0aGF0IHJlcGxhY2VzIHRoZSBtYW51
YWwgc3luY2hyb25pemVQcm9wZXJ0eS9maWxsQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCBpbXBsZW1l
bnRhdGlvbi4gSXQgZXhwYW5kcyB0byBmb2xsb3dpbmc6CisKKyAgICAgICAgICAgIFNWR0F0dHJp
YnV0ZVRvUHJvcGVydHlNYXAmIFNWR1JlY3RFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5TWFw
KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNW
R0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCwgKCkpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckFuaW1hdGVk
UHJvcGVydGllc0ZvclNWR1JlY3RFbGVtZW50KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBtYXAgPSBTVkdSZWN0RWxlbWVudDo6YXR0
cmlidXRlVG9Qcm9wZXJ0eU1hcCgpOworICAgICAgICAgICAgICAgIGlmICghbWFwLmlzRW1wdHko
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIG1hcC5hZGRQ
cm9wZXJ0eShTVkdSZWN0RWxlbWVudDo6eFByb3BlcnR5SW5mbygpKTsKKyAgICAgICAgICAgICAg
ICBtYXAuYWRkUHJvcGVydHkoU1ZHUmVjdEVsZW1lbnQ6OnlQcm9wZXJ0eUluZm8oKSk7CisgICAg
ICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgbWFwLmFkZFByb3BlcnRpZXMoU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKSk7CisgICAg
ICAgICAgICAgICAgbWFwLmFkZFByb3BlcnRpZXMoU1ZHVGVzdHM6OmF0dHJpYnV0ZVRvUHJvcGVy
dHlNYXAoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEEgc2luZ2xlLWluc3RhbmNl
IG9mIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAgaXMgY3JlYXRlZCBmb3IgZWFjaCBTVkcqRWxl
bWVudC4gVGhlIGNvbnN0cnVjdG9yIG9mIFNWR1JlY3RFbGVtZW50IGlzIHN1cHBvc2VkIHRvIGNh
bGwKKyAgICAgICAgICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHUmVjdEVsZW1l
bnQoKSwgd2hpY2ggY29sbGVjdHMgYWxsIHByb3BlcnRpZXMgb2YgU1ZHUmVjdEVsZW1lbnQgYW5k
IGFsbCBpdHMgcGFyZW50IGNsYXNzZXMgYW5kIHN0b3JlcyB0aGVtCisgICAgICAgICAgICBpbiBh
IFZlY3Rvcjxjb25zdCBTVkdQcm9wZXJ0eUluZm8qPi4gVGhpcyBWZWN0b3IgaXMgc3RvcmVkIGlu
IGEgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBWZWN0b3I8Y29uc3QgU1ZHUHJvcGVydHlJbmZvKj4g
PiB3aGVyZSB0aGUga2V5CisgICAgICAgICAgICBpcyB0aGUgYXR0cmlidXRlIG5hbWUgKGVnLiBT
VkdOYW1lczo6eEF0dHIgLT4gU1ZHUmVjdEVsZW1lbnQ6OnhQcm9wZXJ0eUluZm8pLiBUaGlzIGlz
IG9ubHkgZG9uZSBfb25jZV8gcGVyIFNWR1JlY3RFbGVtZW50LgorCisgICAgICAgICAgICBTVkdF
bGVtZW50IGNvbnRhaW5zIGEgInZpcnR1YWwgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgbG9j
YWxBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCkiIG1ldGhvZCwgYW5kIFNWR1JlY3RFbGVtZW50IG92
ZXJyaWRlcyBpdAorICAgICAgICAgICAgYW5kIHJldHVybnMgU1ZHUmVjdEVsZW1lbnQ6OmF0dHJp
YnV0ZVRvUHJvcGVydHlNYXAoKSAod2hpY2ggaXMgc3RhdGljISkgLS0gdGhpcyBpcyBoaWRkZW4g
YWdhaW4gaW4gdGhlIG1hY3Jvcywgbm8gbmVlZCB0byB3cml0ZSBhbnkgY29kZS4KKworICAgICAg
ICAgICAgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCBwcm92aWRlcyBmb2xsb3dpbmcgQVBJOgor
ICAgICAgICAgICAgLSBib29sIHN5bmNocm9uaXplUHJvcGVydHkoU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgICAgICAg
ICAtIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0aWVzKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50
KQorICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQSBnZW5lcmljIHdheSB0byBzeW5jaHJv
bml6ZSBhIFNWR0FuaW1hdGVkUHJvcGVydHkgd2l0aCBpdHMgWE1MIERPTSBhdHRyaWJ1dGUuIEFu
eSBTVkcgRE9NIGNoYW5nZSB0byBlZy4gPHJlY3Q+cyB4IHByb3BlcnR5IHdpbGwgbm93IHRyaWdn
ZXIKKyAgICAgICAgICAgICAgICBjb250ZXh0RWxlbWVudC0+bG9jYWxBdHRyaWJ1dGVUb1Byb3Bl
cnR5TWFwKCkuc3luY2hyb25pemVQcm9wZXJ0eSh0aGlzLCBTVkdOYW1lczo6eEF0dHIpCisgICAg
ICAgICAgICAgICAgVGhlIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAgd2lsbCBhc2sgaXRzIEhh
c2hNYXAgZm9yIHRoZSBWZWN0b3IgY29udGFpbmluZyB0aGUgcHJvcGVydGllcyBmb3IgU1ZHTmFt
ZXM6OnhBdHRyIChpbiB0aGF0IGNhc2UsIGp1c3Qgb25lIHhBbmltYXRlZCgpKS4KKworICAgICAg
ICAgICAgLSB2b2lkIGFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFZlY3RvcjxBbmltYXRlZFByb3BlcnR5VHlwZT4mIHBy
b3BlcnR5VHlwZXMpCisKKyAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCByZXBsYWNlcyB0aGUg
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAgaW1wbGVtZW50YXRpb25zIGV2ZXJ5d2hlcmUuCisg
ICAgICAgIAorICAgICAgICAgICAgLSB2b2lkIGFuaW1hdGVkUHJvcGVydGllc0ZvckF0dHJpYnV0
ZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSwgVmVjdG9yPFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiA+JiBwcm9wZXJ0aWVz
KTsKKworICAgICAgICAgICAgICAgIFRoaXMgbWV0aG9kIGlzIG5vdCB1c2VkIHlldCwgYnV0IGFs
bG93cyB1cyB0byBjb2xsZWN0IGFsbCBTVkdBbmltYXRlZFByb3BlcnRpZXMgZm9yIGEgUXVhbGlm
aWVkTmFtZSAtLSB0aGUgaW5pdGlhbCBnb2FsIGZvciB0aGlzIHBhdGNoLgorCisgICAgICAgICM0
KSBJbiBhbGwgY3BwIGZpbGVzLCBhZGQgYSBjYWxsIHRvICJyZWdpc3RlckFuaW1hdGVkUHJvcGVy
dGllc0ZvckNsYXNzTmFtZSgpIiBpbiB0aGUgY29uc3RydWN0b3IuIEZvcmdldHRpbmcgdGhpcyB3
aWxsIHJlc3VsdCBpbiBhIGNvbXBpbGUgZXJyb3IuCisKKyAgICAgICAgRG9lc24ndCBhZmZlY3Qg
YW55IHRlc3RzLCBvbmx5IGdpdmVzIHBlcmZvcm1hbmNlIGJlbmVmaXRzLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6IEFkZCBzdmcvcHJvcGVydGllcy8oU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0
eU1hcC4qfFNWR1Byb3BlcnR5SW5mby5oKSB0byBidWlsZC4KKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5saXN0LmFtOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAg
ICAqIFdlYkNvcmUucHJvOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQUVsZW1lbnQ6OlNWR0FFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHQUVsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVk
RmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1lbnQ6OnN5bmNocm9uaXplUmVx
dWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FFbGVtZW50OjpzeW5jaHJv
bml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FsdEdseXBoRWxlbWVudDo6U1ZHQWx0R2x5cGhFbGVt
ZW50KToKKyAgICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVt
ZW50OjpTVkdBbmltYXRlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxl
bWVudDo6aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGVFbGVtZW50OjpkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6ZGV0ZXJtaW5lUHJvcGVydHlWYWx1ZVR5cGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5k
VG9WYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0
ZUZyb21BbmRCeVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6
cmVzZXRUb0Jhc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6
YXBwbHlSZXN1bHRzVG9UYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1l
bnQ6OmNhbGN1bGF0ZURpc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVt
ZW50OjplbnN1cmVBbmltYXRvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpoYXNWYWxpZEF0dHJpYnV0ZVR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmRldGVy
bWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVU
cmFuc2Zvcm1FbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjphcHBseVJlc3VsdHNUb1Rh
cmdldCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRC
b29sZWFuLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uaDoKKyAgICAg
ICAgKiBzdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVk
TGVuZ3RoLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlZE51bWJlci5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZE51
bWJlckxpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlv
Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUmVjdC5oOgorICAgICAgICAqIHN2Zy9TVkdB
bmltYXRlZFN0cmluZy5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Qu
aDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVkVHlwZTo6U1ZHQW5pbWF0ZWRUeXBlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5p
bWF0ZWRUeXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OnR5cGUpOgor
ICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I6OlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yKToKKyAg
ICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRpb25FbGVtZW50OjpTVkdBbmltYXRpb25FbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmN1cnJlbnRWYWx1ZXNGb3JWYWx1ZXNBbmltYXRpb24p
OgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRpb25FbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4
dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6c3luY2hy
b25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0b3JGYWN0b3J5OjpjcmVhdGUpOgorICAgICAg
ICAqIHN2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NpcmNs
ZUVsZW1lbnQ6OlNWR0NpcmNsZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdDaXJjbGVFbGVt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjpzeW5jaHJvbml6ZVJl
cXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVudDo6c3lu
Y2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xl
RWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR0Ns
aXBQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6
OlNWR0NsaXBQYXRoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVp
cmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50OjpzeW5j
aHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0
aEVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6U1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0N1cnNvckVsZW1lbnQ6OlNWR0N1cnNvckVsZW1lbnQpOgorICAgICAg
ICAqIHN2Zy9TVkdDdXJzb3JFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JF
bGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQ3Vyc29yRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQ3Vyc29yRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6
CisgICAgICAgICogc3ZnL1NWR0RlZnNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0RlZnNFbGVtZW50OjpTVkdEZWZzRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0RlZnNFbGVt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdEZWZzRWxlbWVudDo6c3luY2hyb25pemVSZXF1
aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RlZnNFbGVtZW50OjpzeW5jaHJv
bml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEZWZzRWxlbWVu
dDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6YW5pbWF0ZWRQcm9wZXJ0eVR5cGVG
b3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6dXBkYXRlQW5pbWF0
ZWRTVkdBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6bG9jYWxBdHRy
aWJ1dGVUb1Byb3BlcnR5TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN5bmNo
cm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpz
eW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVt
ZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVy
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4
dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6c3luY2hyb25pemVTeXN0
ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50OjpTVkdFbGxpcHNlRWxlbWVudCk6CisgICAg
ICAgICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGxp
cHNlRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0VsbGlwc2VFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdFbGxpcHNlRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5n
dWFnZSk6CisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50OjpTVkdGRUJsZW5kRWxlbWVudCk6CisgICAgICAgICog
c3ZnL1NWR0ZFQmxlbmRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpT
VkdGRUNvbG9yTWF0cml4RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpTVkdG
RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OlNWR0ZFQ29tcG9z
aXRlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt
ZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudCk6CisgICAgICAg
ICogc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9v
ZEVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdGRUZsb29kRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQpOgorICAg
ICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RkVJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6
OlNWR0ZFSW1hZ2VFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVMaWdodEVsZW1lbnQ6OlNWR0ZFTGlnaHRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZH
RkVMaWdodEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwOgor
ICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU1l
cmdlTm9kZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNZXJnZU5vZGVFbGVt
ZW50OjpTVkdGRU1lcmdlTm9kZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlTm9k
ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpTVkdGRU1vcnBob2xvZ3lF
bGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVP
ZmZzZXRFbGVtZW50OjpTVkdGRU9mZnNldEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRU9m
ZnNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpT
VkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVGlsZUVsZW1lbnQ6OlNWR0ZFVGlsZUVsZW1lbnQpOgor
ICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFVHVy
YnVsZW5jZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxl
bWVudDo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpTVkdGaWx0ZXJFbGVtZW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMuaDoKKyAgICAgICAgKiBzdmcvU1ZHRml0VG9WaWV3Qm94LmNwcDoKKyAgICAgICAgKiBz
dmcvU1ZHRml0VG9WaWV3Qm94Lmg6CisgICAgICAgICogc3ZnL1NWR0ZvbnRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRFbGVtZW50OjpTVkdGb250RWxlbWVudCk6CisgICAg
ICAgICogc3ZnL1NWR0ZvbnRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250RWxl
bWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpT
VkdGb3JlaWduT2JqZWN0RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RF
bGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6c3lu
Y2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFn
ZSk6CisgICAgICAgICogc3ZnL1NWR0dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0dFbGVtZW50OjpTVkdHRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0dFbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdHRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0
ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHRWxlbWVudDo6c3luY2hyb25pemVTeXN0
ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR0dseXBoRWxlbWVudC5jcHA6CisgICAgICAg
ICogc3ZnL1NWR0dseXBoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjpTVkdHcmFkaWVu
dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHR3JhZGllbnRFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZUVsZW1lbnQ6OlNWR0ltYWdlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVp
cmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpzeW5jaHJv
bml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1l
bnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6U1ZHTGluZUVsZW1l
bnQpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGluZUVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZUVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3Vh
Z2UpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHTVBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01QYXRo
RWxlbWVudDo6U1ZHTVBhdGhFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHTVBhdGhFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTWFya2VyRWxlbWVudDo6b3JpZW50VHlwZVByb3BlcnR5SW5mbyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OnNldE9yaWVudFRvQXV0byk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnRUb0FuZ2xlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR01hcmtlckVsZW1lbnQ6OnN5bmNocm9uaXplT3JpZW50VHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50Ojpsb29rdXBPckNyZWF0ZU9yaWVudFR5cGVXcmFwcGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6Om9yaWVudFR5cGVBbmltYXRl
ZCk6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR01hcmtlckVsZW1lbnQ6Om9yaWVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFy
a2VyRWxlbWVudDo6b3JpZW50VHlwZUJhc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdN
YXJrZXJFbGVtZW50OjpzZXRPcmllbnRUeXBlQmFzZVZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZH
TWFza0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6OlNWR01h
c2tFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHTWFza0VsZW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR01hc2tFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3Rl
bUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5jcHA6Cisg
ICAgICAgICogc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
UGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OmRQcm9w
ZXJ0eUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OlNWR1BhdGhFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50Ojpsb29rdXBPckNyZWF0ZURX
cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpzeW5jaHJvbml6ZUQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnBhdGhTZWdMaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjphbmltYXRlZFBhdGhTZWdMaXN0KToKKyAgICAg
ICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVt
ZW50OjpwYXRoQnl0ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6
c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhF
bGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYXRoRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICog
c3ZnL1NWR1BhdGhTZWdXaXRoQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNl
Z1dpdGhDb250ZXh0OjphbmltYXRlZFByb3BlcnR5KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0dGVy
bkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OlNWR1Bh
dHRlcm5FbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVy
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OnN5bmNocm9uaXplUmVx
dWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50Ojpz
eW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHUG9seUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OnBvaW50c1Byb3BlcnR5SW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6U1ZHUG9seUVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVBvaW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6bG9va3VwT3JDcmVhdGVQb2ludHNXcmFw
cGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50Ojpwb2ludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OmFuaW1hdGVkUG9pbnRzKToKKyAgICAgICAgKiBz
dmcvU1ZHUG9seUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50Ojpz
eW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVs
ZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBz
dmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudDo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1JlY3RF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50OjpTVkdSZWN0RWxl
bWVudCk6CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZWN0RWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5n
dWFnZSk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHU1ZHRWxlbWVudDo6U1ZHU1ZHRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1NWR0Vs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnN5bmNocm9uaXplUmVx
dWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzeW5jaHJv
bml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50
OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3JpcHRFbGVtZW50OjpTVkdTY3JpcHRF
bGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdTdG9wRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6
U1ZHU3RvcEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxl
ZEVsZW1lbnQ6OlNWR1N0eWxlZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVy
dHlUb1R5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6YW5pbWF0
ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU3dpdGNoRWxlbWVudDo6U1ZHU3dpdGNoRWxlbWVudCk6CisgICAg
ICAgICogc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N3aXRj
aEVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdTd2l0Y2hFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTd2l0Y2hFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdl
KToKKyAgICAgICAgKiBzdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdTeW1ib2xFbGVtZW50OjpTVkdTeW1ib2xFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZH
U3ltYm9sRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUUmVmRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6U1ZHVFJlZkVsZW1lbnQpOgorICAgICAgICAq
IHN2Zy9TVkdUUmVmRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUU3BhbkVsZW1lbnQuY3Bw
OgorICAgICAgICAqIHN2Zy9TVkdUU3BhbkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGVz
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnJlcXVpcmVkRmVhdHVyZXNQcm9w
ZXJ0eUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnJlcXVpcmVkRXh0ZW5zaW9u
c1Byb3BlcnR5SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6c3lzdGVtTGFuZ3Vh
Z2VQcm9wZXJ0eUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OmF0dHJpYnV0ZVRv
UHJvcGVydHlNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnN5bmNocm9uaXplUmVx
dWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6c3luY2hyb25pemVS
ZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnN5bmNocm9u
aXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdUZXN0cy5oOgorICAgICAgICAq
IHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4
dENvbnRlbnRFbGVtZW50Ojp0ZXh0TGVuZ3RoUHJvcGVydHlJbmZvKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHVGV4dENvbnRlbnRFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6c3luY2hyb25pemVUZXh0TGVuZ3Ro
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6bG9va3VwT3JDcmVh
dGVUZXh0TGVuZ3RoV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6OnRleHRMZW5ndGhBbmltYXRlZCk6CisgICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50
RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzeW5j
aHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRl
bnRFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgor
ICAgICAgICAqIHN2Zy9TVkdUZXh0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
ZXh0RWxlbWVudDo6U1ZHVGV4dEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0RWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpTVkdUZXh0UGF0aEVsZW1lbnQpOgorICAgICAgICAq
IHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9u
aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UG9zaXRpb25pbmdFbGVt
ZW50OjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwOgor
ICAgICAgICAqIHN2Zy9TVkdUaXRsZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rp
dGxlRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6U1ZHVXNlRWxlbWVudCk6
CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Vz
ZUVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdVc2VFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAg
ICAgICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmll
d0VsZW1lbnQ6OlNWR1ZpZXdFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHVmlld1NwZWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Vmlld1NwZWM6OlNWR1ZpZXdTcGVjKToKKyAgICAgICAgKiBzdmcvU1ZHVmlld1NwZWMuaDoKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5Ojp1cGRhdGVBbmltVmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBXcmFwcGVyKToKKyAgICAg
ICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmg6CisgICAgICAg
ICogc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YW5pbWF0ZWRQcm9w
ZXJ0aWVzRm9yQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1
dGVUb1Byb3BlcnR5TWFwLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRl
VG9Qcm9wZXJ0eU1hcDo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwOjp+U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1h
cCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwOjppc0VtcHR5
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA6OmFkZFByb3Bl
cnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YWRk
UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6
YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6c3luY2hyb25pemVQcm9wZXJ0aWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA6OnN5bmNocm9uaXplUHJvcGVydHkp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YW5pbWF0ZWRQ
cm9wZXJ0eSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlJbmZvOjpTVkdQcm9wZXJ0eUluZm8p
OgorCiAyMDExLTA3LTA3ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29t
PgogCiAgICAgICAgIE1vdmUgcmVtYWluaW5nIGVudW1zIG91dCBvZiBTVkcqRWxlbWVudCBjbGFz
c2VzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTgwNiw2ICsxODA2LDcg
QEAgSUYgKEVOQUJMRV9TVkcpCiAgICAgICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1h
Z2UuY3BwCiAgICAgICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKICAgICAg
ICAgc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKKyAgICAgICAgc3Zn
L3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAKICAgICAgICAgc3ZnL3By
b3BlcnRpZXMvU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwCiAgICAgKQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMzM5Myw2ICsz
MzkzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL0xpbmVhckdyYWRpZW50QXR0cmli
dXRlcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvUGF0dGVybkF0dHJpYnV0ZXMuaCBcCisJU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlN
YXAuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvblByb3BlcnR5VGVhck9mZi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oIFwKQEAgLTM0
MDgsNiArMzQxMCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eS5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUluZm8uaCBcCiAJU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFyT2ZmLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCBcCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQkod29ya2luZyBjb3B5KQpAQCAtMTA3Nyw2ICsxMDc3LDcgQEAKICAgICAgICAgICAgICdzdmcv
U1ZHVHJhbnNmb3JtTGlzdC5oJywKICAgICAgICAgICAgICdzdmcvYW5pbWF0aW9uL1NNSUxUaW1l
LmgnLAogICAgICAgICAgICAgJ3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaCcsCisgICAg
ICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oJywKICAg
ICAgICAgICAgICdzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlU
ZWFyT2ZmLmgnLAogICAgICAgICAgICAgJ3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFBy
b3BlcnR5VGVhck9mZi5oJywKICAgICAgICAgICAgICdzdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5LmgnLApAQCAtMTA5MCw2ICsxMDkxLDcgQEAKICAgICAgICAgICAgICdzdmcvcHJv
cGVydGllcy9TVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgnLAogICAgICAgICAgICAgJ3N2Zy9wcm9w
ZXJ0aWVzL1NWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmgnLAogICAgICAgICAgICAgJ3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmgnLAorICAgICAgICAgICAgJ3N2Zy9wcm9wZXJ0aWVz
L1NWR1Byb3BlcnR5SW5mby5oJywKICAgICAgICAgICAgICdzdmcvcHJvcGVydGllcy9TVkdQcm9w
ZXJ0eVRlYXJPZmYuaCcsCiAgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlU
cmFpdHMuaCcsCiAgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHU3RhdGljTGlzdFByb3Bl
cnR5VGVhck9mZi5oJywKQEAgLTYwMDAsNiArNjAwMiw3IEBACiAgICAgICAgICAgICAnc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwJywKICAgICAgICAgICAgICdzdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgnLAorICAgICAgICAgICAgJ3N2Zy9wcm9wZXJ0aWVz
L1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwJywKICAgICAgICAgICAgICdzdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmgnLAogICAgICAgICAg
ICAgJ3N2Zy9wcm9wZXJ0aWVzL1NWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmNwcCcsCiAg
ICAgICAgICAgICAnd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwJywKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJvCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMjk4LDYgKzIyOTgsNyBAQCBIRUFERVJTICs9IFwKICAg
ICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmggXAogICAgIHN2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oIFwKICAgICBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBc
CisgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oIFwKICAgICBz
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmggXAog
ICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIFwKICAg
ICBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmgg
XApAQCAtMjMxMiw2ICsyMzEzLDcgQEAgSEVBREVSUyArPSBcCiAgICAgc3ZnL3Byb3BlcnRpZXMv
U1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oIFwKICAgICBzdmcvcHJvcGVydGllcy9TVkdQYXRoU2Vn
TGlzdFByb3BlcnR5VGVhck9mZi5oIFwKICAgICBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eS5o
IFwKKyAgICBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUluZm8uaCBcCiAgICAgc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJvcGVydHlUZWFyT2ZmLmggXAogICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3Bl
cnR5VHJhaXRzLmggXAogICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR1N0YXRpY0xpc3RQcm9wZXJ0eVRl
YXJPZmYuaCBcCkBAIC0zMjYxLDYgKzMyNjMsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVf
U1ZHPTEpIHsKICAgICAgICAgc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcCBcCiAg
ICAgICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwIFwKICAgICAg
ICAgc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBcCisgICAgICAgIHN2Zy9wcm9wZXJ0aWVzL1NW
R0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwIFwKICAgICAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZH
UGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwCiAKICAgICBsaW51eC1nKysqOkNPTkZJRyhk
ZWJ1ZywgZGVidWd8cmVsZWFzZSk6aXNFcXVhbChRVF9BUkNILGkzODYpIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA5MDQ1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NjQ3Myw2ICs2NjQ3MywxNCBAQAogCQkJCU5hbWU9InByb3BlcnRpZXMi
CiAJCQkJPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXHByb3BlcnRpZXNc
U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJ
PEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdccHJvcGVydGllc1xTVkdBdHRyaWJ1dGVU
b1Byb3BlcnR5TWFwLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxzdmdccHJvcGVydGllc1xTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVy
dHlUZWFyT2ZmLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC02NjUzMyw2ICs2NjU0MSwxMCBA
QAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
c3ZnXHByb3BlcnRpZXNcU1ZHUHJvcGVydHlJbmZvLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdccHJvcGVydGllc1xTVkdQcm9wZXJ0
eVRlYXJPZmYuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDkwNDU0KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBACiAJCTA4MTY2OERBMTI1NjAzRDUwMDZGMjVERSAv
KiBTVkdUZXh0TGF5b3V0RW5naW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwODE2NjhEODEyNTYwM0Q1MDA2RjI1REUgLyogU1ZHVGV4dExheW91dEVu
Z2luZS5oICovOyB9OwogCQkwODFBQThEQTExMTEyMzdFMDAyQUIwNkUgLyogU1ZHRWxlbWVudFJh
cmVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
ODFBQThEOTExMTEyMzdFMDAyQUIwNkUgLyogU1ZHRWxlbWVudFJhcmVEYXRhLmggKi87IH07CiAJ
CTA4MUNERkJGMTI2RUNGRTgwMEQyMTVDQSAvKiBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25p
emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODFD
REZCRTEyNkVDRkU4MDBEMjE1Q0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTA4MURE
NDlDMTNCQTFBNjAwMERDNzYyNyAvKiBTVkdQcm9wZXJ0eUluZm8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MURENDlCMTNCQTFBNjAwMERDNzYyNyAv
KiBTVkdQcm9wZXJ0eUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwODFFQkYzQTBGRDM0RjQxMDBEQTc1NTkgLyogU1ZHRmlsdGVyQnVpbGRl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODFF
QkYzODBGRDM0RjQxMDBEQTc1NTkgLyogU1ZHRmlsdGVyQnVpbGRlci5jcHAgKi87IH07CiAJCTA4
MUVCRjNCMEZEMzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODFFQkYzOTBGRDM0RjQxMDBEQTc1
NTkgLyogU1ZHRmlsdGVyQnVpbGRlci5oICovOyB9OwogCQkwODIzRDE1OTEyN0FENkFDMDAwRUJD
OTUgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwODIzRDE1ODEyN0FENkFDMDAwRUJDOTUgLyogU1ZHQW5pbWF0ZWRJ
bnRlZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTE2OCw2ICsxNjksOCBAQAogCQkwOEYwQkZDNjEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4
dE1ldHJpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA4RjBCRkMxMTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0TWV0cmljcy5oICovOyB9OwogCQkw
OEYyRjAwOTEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEYyRjAwNzEyMTNFNjE3
MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgKi87IH07CiAJCTA4RjJGMDBBMTIx
M0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEYyRjAwODEyMTNFNjE3MDBEQ0VDNDggLyog
UmVuZGVySW1hZ2VSZXNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTA4RkIxN0MxMTNCQzdFOTEwMDA0MDA4NiAvKiBTVkdBdHRyaWJ1dGVU
b1Byb3BlcnR5TWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA4RkIxN0MwMTNCQzdFOTEwMDA0MDA4NiAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5
TWFwLmNwcCAqLzsgfTsKKwkJMDhGQjNGODQxM0JDNzU0QzAwOTlGQzE4IC8qIFNWR0F0dHJpYnV0
ZVRvUHJvcGVydHlNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA4RkIzRjgzMTNCQzc1NEMwMDk5RkMxOCAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5
TWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MDhGRTBCQzUxMjdFMkFDMTAwMEM0RkI1IC8qIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRp
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGRTBC
QzQxMjdFMkFDMTAwMEM0RkI1IC8qIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4RkYxMDIw
MTI5NTBGNUEwMEYwMDI3NiAvKiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEZGMTAxRjEyOTUw
RjU5MDBGMDAyNzYgLyogU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwICovOyB9Owog
CQkwQTQ4NDQ5OTBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBBNDg0NDk4MENBNDRDQjIwMEI3QkQ0
OCAvKiBTb2Z0TGlua2luZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC02NDUxLDYgKzY0NTQsNyBAQAogCQkwODE2NjhEODEyNTYwM0Q1MDA2RjI1
REUgLyogU1ZHVGV4dExheW91dEVuZ2luZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdUZXh0TGF5b3V0RW5naW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA4MUFBOEQ5MTExMTIzN0UwMDJBQjA2RSAvKiBTVkdFbGVtZW50UmFyZURhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHRWxlbWVudFJhcmVEYXRhLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MUNERkJFMTI2RUNGRTgwMEQyMTVDQSAvKiBTVkdBbmlt
YXRlZFByb3BlcnR5U3luY2hyb25pemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMDgxREQ0OUIxM0JBMUE2MDAwREM3NjI3IC8qIFNWR1Byb3BlcnR5SW5mby5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcm9wZXJ0eUluZm8uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgxRUJGMzgwRkQzNEY0MTAwREE3NTU5IC8qIFNW
R0ZpbHRlckJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U1ZHRmlsdGVyQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MUVC
RjM5MEZEMzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ZpbHRlckJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDgyM0QxNTgxMjdBRDZBQzAwMEVCQzk1IC8qIFNWR0FuaW1hdGVkSW50ZWdl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZEludGVnZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY1NDUsNiArNjU0OSw4IEBACiAJCTA4
RjBCRkMxMTI1NUM1M0MwMDA3NTE4NSAvKiBTVkdUZXh0TWV0cmljcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUZXh0TWV0cmljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwOEYyRjAwNzEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJj
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJJbWFnZVJl
c291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGMkYwMDgxMjEzRTYx
NzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVuZGVySW1hZ2VSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwOEZCMTdDMDEzQkM3RTkxMDAwNDAwODYgLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0
eU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBdHRyaWJ1
dGVUb1Byb3BlcnR5TWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDhGQjNG
ODMxM0JDNzU0QzAwOTlGQzE4IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEZFMEJDNDEyN0UyQUMxMDAwQzRGQjUgLyog
U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwOEZGMTAxRjEyOTUwRjU5MDBGMDAyNzYgLyogU1ZHUGF0aFNlZ0xp
c3RQcm9wZXJ0eVRlYXJPZmYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzQ0LDExICsxMjc1MCwxNCBAQAogCQkJCTA4OEEwREZGMTI2
RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZi5oICovLAogCQkJCTA4
NTI1RTYyMTI3OEMwMDEwMEE4NDc3OCAvKiBTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9m
Zi5oICovLAogCQkJCTA4NUExNTkyMTI4OUE4REQwMDI3MTBFMyAvKiBTVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLywKKwkJCQkwOEZCMTdDMDEzQkM3RTkxMDAwNDAw
ODYgLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAgKi8sCisJCQkJMDhGQjNGODMxM0JD
NzU0QzAwOTlGQzE4IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCAqLywKIAkJCQkwODEw
NzY0MzEyODI4NTU2MDA3QzYzQkEgLyogU1ZHTGlzdFByb3BlcnR5LmggKi8sCiAJCQkJMDg4QTBF
MDAxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJCQkw
OEZGMTAxRjEyOTUwRjU5MDBGMDAyNzYgLyogU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYu
Y3BwICovLAogCQkJCTA4NEEwODI4MTI4RDc4NjcwMDJEQjFGMSAvKiBTVkdQYXRoU2VnTGlzdFBy
b3BlcnR5VGVhck9mZi5oICovLAogCQkJCTA4OEEwRTAxMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQ
cm9wZXJ0eS5oICovLAorCQkJCTA4MURENDlCMTNCQTFBNjAwMERDNzYyNyAvKiBTVkdQcm9wZXJ0
eUluZm8uaCAqLywKIAkJCQkwODhBMEUwMjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlU
ZWFyT2ZmLmggKi8sCiAJCQkJMDg4QTBFMDMxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5
VHJhaXRzLmggKi8sCiAJCQkJMDg4MEY3MEQxMjgyQjQ2RDAwOTQ4NTA1IC8qIFNWR1N0YXRpY0xp
c3RQcm9wZXJ0eVRlYXJPZmYuaCAqLywKQEAgLTIzMDg4LDYgKzIzMDk3LDggQEAKIAkJCQkwODYz
OTUxNjEzQjVGRTU3MDBCQjM0NEQgLyogU1ZHQW5pbWF0ZWRQYXRoLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MzFBMkY5QzEzQjZGMkIwMDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25h
bE51bWJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVBQkI3ODcxM0I5MDRCQzAwRjE5N0UzIC8q
IExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDgxREQ0OUMx
M0JBMUE2MDAwREM3NjI3IC8qIFNWR1Byb3BlcnR5SW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MDhGQjNGODQxM0JDNzU0QzAwOTlGQzE4IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpAQCAtMjU4NTQsNiArMjU4NjUsNyBAQAogCQkJCTQzMUEyRkQ3MTNCNzcw
N0EwMDc3OTFFNCAvKiBTVkdBbmltYXRlZExlbmd0aExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDMxQTMwMjExM0I4OURDQzAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RS
YXRpby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzFBMzA4ODEzQjhGOTc4MDA3NzkxRTQgLyog
U1ZHQW5pbWF0ZWRCb29sZWFuLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA4RkIxN0MxMTNCQzdF
OTEwMDA0MDA4NiAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQzRjZGRDk2MTNCQ0QwQjEwMDIyNDA1MiAvKiBTVkdBbmltYXRlZEludGVnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAJKHJldmlzaW9uIDkw
NDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDgsMTUgKzQ4LDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0
ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHQUVsZW1l
bnQsIFNWR05hbWVzOjp0YXJnZXRBdHRyLCBTVkdUYXJnZXQsIHN2Z1RhcmdldCkKLURFRklORV9B
TklNQVRFRF9TVFJJTkcoU1ZHQUVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBo
cmVmKQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHQUVsZW1lbnQsIFNWR05hbWVzOjpleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVT
CisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdBRWxlbWVudCwgU1ZHTmFtZXM6OnRhcmdl
dEF0dHIsIFNWR1RhcmdldCwgc3ZnVGFyZ2V0KQorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkco
U1ZHQUVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQorICAgIERFRklO
RV9BTklNQVRFRF9CT09MRUFOKFNWR0FFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVH
SVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdBRWxlbWVudCkKKyAgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkoc3ZnVGFyZ2V0KQorICAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShocmVmKQorICAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICAgUkVHSVNU
RVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5J
TUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHQUVsZW1lbnQ6OlNWR0FFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjphVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3Bl
cnRpZXNGb3JTVkdBRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0FFbGVtZW50PiBTVkdB
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCkKQEAgLTEzMiw2MCArMTQyLDYgQEAgdm9pZCBTVkdBRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjbwogICAgIH0KIH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNW
R0FFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
OwotfQotCi12b2lkIFNWR0FFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRhcmdldEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFu
aW1hdGVkU3RyaW5nKTsKLX0KLQotdm9pZCBTVkdBRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0g
YW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVNWR1RhcmdldCgpOwotICAgICAgICBz
eW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywg
YXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRhcmdl
dEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVTVkdUYXJnZXQoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25p
emVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCiBSZW5kZXJPYmplY3QqIFNWR0FFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAg
ICBpZiAoc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KHBhcmVudE5vZGUoKSktPmlzVGV4dENvbnRl
bnQoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwx
MCArNTEsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShB
dHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwotCi0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCkBAIC02Nywx
NyArNjMsMTggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0
ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xh
cmF0aW9ucwotCi0gICAgLy8gVGhpcyBkZWNsYXJhdGlvbiB1c2VkIHRvIGRlZmluZSBhIG5vbi12
aXJ0dWFsICJTdHJpbmcmIHRhcmdldCgpIGNvbnN0IiBtZXRob2QsIHRoYXQgY2xhc2hlcyB3aXRo
ICJ2aXJ0dWFsIFN0cmluZyBFbGVtZW50Ojp0YXJnZXQoKSBjb25zdCIuCi0gICAgLy8gVGhhdCdz
IHdoeSBpdCBoYXMgYmVlbiByZW5hbWVkIHRvICJzdmdUYXJnZXQiLCB0aGUgQ29kZUdlbmVyYXRv
cnMgdGFrZSBjYXJlIG9mIGNhbGxpbmcgc3ZnVGFyZ2V0QW5pbWF0ZWQoKSBpbnN0ZWFkIG9mIHRh
cmdldEFuaW1hdGVkKCksIHNlZSBDb2RlR2VuZXJhdG9yLnBtLgotICAgIERFQ0xBUkVfQU5JTUFU
RURfU1RSSU5HKFNWR1RhcmdldCwgc3ZnVGFyZ2V0KQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNl
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAg
QkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0FFbGVtZW50KQorICAgICAgICAg
IC8vIFRoaXMgZGVjbGFyYXRpb24gdXNlZCB0byBkZWZpbmUgYSBub24tdmlydHVhbCAiU3RyaW5n
JiB0YXJnZXQoKSBjb25zdCIgbWV0aG9kLCB0aGF0IGNsYXNoZXMgd2l0aCAidmlydHVhbCBTdHJp
bmcgRWxlbWVudDo6dGFyZ2V0KCkgY29uc3QiLgorICAgICAgICAgIC8vIFRoYXQncyB3aHkgaXQg
aGFzIGJlZW4gcmVuYW1lZCB0byAic3ZnVGFyZ2V0IiwgdGhlIENvZGVHZW5lcmF0b3JzIHRha2Ug
Y2FyZSBvZiBjYWxsaW5nIHN2Z1RhcmdldEFuaW1hdGVkKCkgaW5zdGVhZCBvZiB0YXJnZXRBbmlt
YXRlZCgpLCBzZWUgQ29kZUdlbmVyYXRvci5wbS4KKyAgICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X1NUUklORyhTVkdUYXJnZXQsIHN2Z1RhcmdldCkKKyAgICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAg
ICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpz
eW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVp
cmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3Rl
bUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsg
fQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FsdEdseXBoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FsdEdseXBoRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEzICsz
MywyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRl
Y2xhcmF0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdBbHRHbHlwaEVsZW1lbnQsIFhM
aW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BS
T1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0FsdEdseXBoRWxlbWVudCwg
WExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BS
T1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdBbHRHbHlw
aEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAg
ICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0Fs
dEdseXBoRWxlbWVudDo6U1ZHQWx0R2x5cGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6
OmFsdEdseXBoVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdBbHRH
bHlwaEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdBbHRHbHlwaEVsZW1lbnQ+IFNWR0Fs
dEdseXBoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKQEAgLTQ3LDI4ICs1NCw2IEBAIFBhc3NSZWZQdHI8U1ZHQWx0R2x5cGhF
bGVtZW50PiBTVkdBbHRHbHkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0FsdEdseXBoRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIFNWR0FsdEdseXBoRWxlbWVudDo6
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAg
ICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1l
KTsKLQotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpIHx8IFNWR1VSSVJlZmVyZW5jZTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwot
fQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHQWx0R2x5cGhFbGVtZW50OjphdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkp
OwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNW
R0FsdEdseXBoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAg
ICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAg
PSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHVGV4dFBvc2l0
aW9uaW5nRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQogdm9pZCBTVkdB
bHRHbHlwaEVsZW1lbnQ6OnNldEdseXBoUmVmKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIGVjID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDE4ICs0NSwxMiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0FsdEdseXBo
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLQotICAgIHZp
cnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFs
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwotCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5k
ZXJlcihOb2RlKikgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlv
bnMKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5H
KEhyZWYsIGhyZWYpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0Fs
dEdseXBoRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJl
ZikKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5j
cHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFNWR0FuaW1hdGVFbGVtZW50OjpTVkdBbmltYXRlRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdBbmltYXRpb25F
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAgICwgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUo
QW5pbWF0ZWRTdHJpbmcpCisgICAgLCBtX2FuaW1hdGVkUHJvcGVydHlUeXBlKEFuaW1hdGVkU3Ry
aW5nKQogICAgICwgbV9mcm9tUHJvcGVydHlWYWx1ZVR5cGUoUmVndWxhclByb3BlcnR5VmFsdWUp
CiAgICAgLCBtX3RvUHJvcGVydHlWYWx1ZVR5cGUoUmVndWxhclByb3BlcnR5VmFsdWUpCiB7CkBA
IC05MywxNSArOTMsMjAgQEAgYm9vbCBTVkdBbmltYXRlRWxlbWVudDo6aGFzVmFsaWRBdHRyaWJ1
dAogICAgIGlmICghdGFyZ2V0RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAot
ICAgIHJldHVybiBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVudCkg
IT0gQW5pbWF0ZWRVbmtub3duOworICAgIHJldHVybiBkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5
VHlwZSh0YXJnZXRFbGVtZW50KSAhPSBBbmltYXRlZFVua25vd247CiB9CiAKLUFuaW1hdGVkQXR0
cmlidXRlVHlwZSBTVkdBbmltYXRlRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVU
eXBlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIGNvbnN0CitBbmltYXRlZFByb3BlcnR5VHlw
ZSBTVkdBbmltYXRlRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUoU1ZHRWxl
bWVudCogdGFyZ2V0RWxlbWVudCkgY29uc3QKIHsKICAgICBBU1NFUlQodGFyZ2V0RWxlbWVudCk7
CiAKLSAgICBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgdHlwZSA9IHRhcmdldEVsZW1lbnQtPmFuaW1h
dGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUoKSk7Ci0gICAgaWYgKHR5
cGUgPT0gQW5pbWF0ZWRVbmtub3duIHx8IChoYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlQ29s
b3JUYWcpICYmIHR5cGUgIT0gQW5pbWF0ZWRDb2xvcikpCisgICAgVmVjdG9yPEFuaW1hdGVkUHJv
cGVydHlUeXBlPiBwcm9wZXJ0eVR5cGVzOworICAgIHRhcmdldEVsZW1lbnQtPmFuaW1hdGVkUHJv
cGVydHlUeXBlRm9yQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUoKSwgcHJvcGVydHlUeXBlcyk7Cisg
ICAgaWYgKHByb3BlcnR5VHlwZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gQW5pbWF0ZWRV
bmtub3duOworCisgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSA9IHByb3BlcnR5VHlwZXNb
MF07CisgICAgaWYgKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVDb2xvclRhZykgJiYgdHlw
ZSAhPSBBbmltYXRlZENvbG9yKQogICAgICAgICByZXR1cm4gQW5pbWF0ZWRVbmtub3duOwogCiAg
ICAgLy8gRklYTUU6IEFuaW1hdG9yIGZvciBBbmltYXRlZEVudW1lcmF0aW9uIG1pc3NpbmcuCkBA
IC0xNjEsOSArMTY2LDkgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0
ZQogICAgICAgICByZXR1cm47CiAgICAgU1ZHQW5pbWF0ZUVsZW1lbnQqIHJlc3VsdHMgPSBzdGF0
aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+KHJlc3VsdEVsZW1lbnQpOwogICAgIC8vIENhbid0
IGFjY3VtdWxhdGUgb3ZlciBhIHN0cmluZyBwcm9wZXJ0eS4KLSAgICBpZiAocmVzdWx0cy0+bV9h
bmltYXRlZEF0dHJpYnV0ZVR5cGUgPT0gQW5pbWF0ZWRTdHJpbmcgJiYgbV9hbmltYXRlZEF0dHJp
YnV0ZVR5cGUgIT0gQW5pbWF0ZWRTdHJpbmcpCisgICAgaWYgKHJlc3VsdHMtPm1fYW5pbWF0ZWRQ
cm9wZXJ0eVR5cGUgPT0gQW5pbWF0ZWRTdHJpbmcgJiYgbV9hbmltYXRlZFByb3BlcnR5VHlwZSAh
PSBBbmltYXRlZFN0cmluZykKICAgICAgICAgcmV0dXJuOwotICAgIHN3aXRjaCAobV9hbmltYXRl
ZEF0dHJpYnV0ZVR5cGUpIHsKKyAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUpIHsK
ICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgY2FzZSBBbmltYXRlZEJvb2xlYW46CiAgICAg
Y2FzZSBBbmltYXRlZENvbG9yOgpAQCAtMjE3LDcgKzIyMiw3IEBAIHZvaWQgU1ZHQW5pbWF0ZUVs
ZW1lbnQ6OmRldGVybWluZVByb3BlcnQKICAgICBpZiAoaW5oZXJpdHNGcm9tUHJvcGVydHkodGFy
Z2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSgpLCB0bykpCiAgICAgICAgIG1fdG9Qcm9wZXJ0eVZh
bHVlVHlwZSA9IEluaGVyaXRWYWx1ZTsKIAotICAgIGlmIChtX2FuaW1hdGVkQXR0cmlidXRlVHlw
ZSAhPSBBbmltYXRlZENvbG9yKQorICAgIGlmIChtX2FuaW1hdGVkUHJvcGVydHlUeXBlICE9IEFu
aW1hdGVkQ29sb3IpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoYXR0cmlidXRlVmFs
dWVJc0N1cnJlbnRDb2xvcihmcm9tKSkKQEAgLTIzMyw4ICsyMzgsOCBAQCBib29sIFNWR0FuaW1h
dGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IC8vIEZJWE1FOiBOZWVkcyBtb3JlIHNvbGlkIHdheSBkZXRlcm1pbmUgdGFyZ2V0IGF0dHJpYnV0
ZSB0eXBlLgotICAgIG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlID0gZGV0ZXJtaW5lQW5pbWF0ZWRB
dHRyaWJ1dGVUeXBlKHRhcmdldEVsZW1lbnQpOwotICAgIHN3aXRjaCAobV9hbmltYXRlZEF0dHJp
YnV0ZVR5cGUpIHsKKyAgICBtX2FuaW1hdGVkUHJvcGVydHlUeXBlID0gZGV0ZXJtaW5lQW5pbWF0
ZWRQcm9wZXJ0eVR5cGUodGFyZ2V0RWxlbWVudCk7CisgICAgc3dpdGNoIChtX2FuaW1hdGVkUHJv
cGVydHlUeXBlKSB7CiAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgogICAgIGNhc2UgQW5pbWF0ZWRC
b29sZWFuOgogICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKQEAgLTI2NSw4ICsyNzAsOCBAQCBib29s
IFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIEFTU0VSVCghaGFzVGFnTmFtZShTVkdOYW1lczo6c2V0VGFnKSk7Ci0gICAgbV9h
bmltYXRlZEF0dHJpYnV0ZVR5cGUgPSBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUodGFy
Z2V0RWxlbWVudCk7Ci0gICAgc3dpdGNoIChtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSkgeworICAg
IG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgPSBkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0
YXJnZXRFbGVtZW50KTsKKyAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUpIHsKICAg
ICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgY2FzZSBBbmltYXRlZEJvb2xlYW46CiAgICAgY2Fz
ZSBBbmltYXRlZENvbG9yOgpAQCAtMjk2LDggKzMwMSw4IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1l
bnQ6OnJlc2V0VG9CYXNlVmFsdWUKIHsKICAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0g
dGhpcy0+dGFyZ2V0RWxlbWVudCgpOwogICAgIEFTU0VSVCh0YXJnZXRFbGVtZW50KTsKLSAgICBt
X2FuaW1hdGVkQXR0cmlidXRlVHlwZSA9IGRldGVybWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZSh0
YXJnZXRFbGVtZW50KTsKLSAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKSB7Cisg
ICAgbV9hbmltYXRlZFByb3BlcnR5VHlwZSA9IGRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBl
KHRhcmdldEVsZW1lbnQpOworICAgIHN3aXRjaCAobV9hbmltYXRlZFByb3BlcnR5VHlwZSkgewog
ICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKICAgICBjYXNlIEFuaW1hdGVkQm9vbGVhbjoKICAgICBj
YXNlIEFuaW1hdGVkQ29sb3I6CkBAIC0zMjcsNyArMzMyLDcgQEAgdm9pZCBTVkdBbmltYXRlRWxl
bWVudDo6cmVzZXRUb0Jhc2VWYWx1ZQogdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6YXBwbHlSZXN1
bHRzVG9UYXJnZXQoKQogewogICAgIFN0cmluZyB2YWx1ZVRvQXBwbHk7Ci0gICAgc3dpdGNoICht
X2FuaW1hdGVkQXR0cmlidXRlVHlwZSkgeworICAgIHN3aXRjaCAobV9hbmltYXRlZFByb3BlcnR5
VHlwZSkgewogICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKICAgICBjYXNlIEFuaW1hdGVkQm9vbGVh
bjoKICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CkBAIC0zNTYsOCArMzYxLDggQEAgZmxvYXQgU1ZH
QW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZURpc3RhbgogICAgIFNWR0VsZW1lbnQqIHRhcmdldEVs
ZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KQog
ICAgICAgICByZXR1cm4gLTE7Ci0gICAgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPSBkZXRlcm1p
bmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVudCk7Ci0gICAgc3dpdGNoIChtX2Fu
aW1hdGVkQXR0cmlidXRlVHlwZSkgeworICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgPSBkZXRl
cm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0YXJnZXRFbGVtZW50KTsKKyAgICBzd2l0Y2ggKG1f
YW5pbWF0ZWRQcm9wZXJ0eVR5cGUpIHsKICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgY2Fz
ZSBBbmltYXRlZEJvb2xlYW46CiAgICAgY2FzZSBBbmltYXRlZENvbG9yOgpAQCAtMzgzLDcgKzM4
OCw3IEBAIGZsb2F0IFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVEaXN0YW4KIFNWR0FuaW1h
dGVkVHlwZUFuaW1hdG9yKiBTVkdBbmltYXRlRWxlbWVudDo6ZW5zdXJlQW5pbWF0b3IoKQogewog
ICAgIGlmICghbV9hbmltYXRvcikKLSAgICAgICAgbV9hbmltYXRvciA9IFNWR0FuaW1hdG9yRmFj
dG9yeTo6Y3JlYXRlKHRoaXMsIHRhcmdldEVsZW1lbnQoKSwgbV9hbmltYXRlZEF0dHJpYnV0ZVR5
cGUpOworICAgICAgICBtX2FuaW1hdG9yID0gU1ZHQW5pbWF0b3JGYWN0b3J5OjpjcmVhdGUodGhp
cywgdGFyZ2V0RWxlbWVudCgpLCBtX2FuaW1hdGVkUHJvcGVydHlUeXBlKTsKICAgICByZXR1cm4g
bV9hbmltYXRvci5nZXQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVF
bGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIGFkanVzdEZvckN1cnJlbnRDb2xvcihTVkdFbGVtZW50KiB0YXJnZXRFbGVt
ZW50LCBDb2xvciYpOwogICAgIHZvaWQgYWRqdXN0Rm9ySW5oZXJpdGFuY2UoU1ZHRWxlbWVudCog
dGFyZ2V0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIFN0cmluZyYgdmFsdWUpOwogICAg
IAotICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5
cGUoU1ZHRWxlbWVudCopIGNvbnN0OworICAgIEFuaW1hdGVkUHJvcGVydHlUeXBlIGRldGVybWlu
ZUFuaW1hdGVkUHJvcGVydHlUeXBlKFNWR0VsZW1lbnQqKSBjb25zdDsKICAgICB2b2lkIGRldGVy
bWluZVByb3BlcnR5VmFsdWVUeXBlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKICAg
ICAKICAgICBBbmltYXRlZFByb3BlcnR5VmFsdWVUeXBlIGZyb21Qcm9wZXJ0eVZhbHVlVHlwZSgp
IHsgcmV0dXJuIG1fZnJvbVByb3BlcnR5VmFsdWVUeXBlOyB9CkBAIC02OSw3ICs2OSw3IEBAIHBy
aXZhdGU6CiAgICAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IqIGVuc3VyZUFuaW1hdG9yKCk7CiAg
ICAgCiAgICAgdmlydHVhbCBib29sIGhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpIGNvbnN0OwotICAg
IEFuaW1hdGVkQXR0cmlidXRlVHlwZSBtX2FuaW1hdGVkQXR0cmlidXRlVHlwZTsKKyAgICBBbmlt
YXRlZFByb3BlcnR5VHlwZSBtX2FuaW1hdGVkUHJvcGVydHlUeXBlOwogCiAgICAgQW5pbWF0ZWRQ
cm9wZXJ0eVZhbHVlVHlwZSBtX2Zyb21Qcm9wZXJ0eVZhbHVlVHlwZTsKICAgICBBbmltYXRlZFBy
b3BlcnR5VmFsdWVUeXBlIG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAkocmV2aXNpb24g
OTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxOCArNjYsMjEgQEAgYm9vbCBTVkdBbmltYXRlVHJh
bnNmb3JtRWxlbWVudDo6aGFzVmFsaQogICAgIGlmICghdGFyZ2V0RWxlbWVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0
ZVR5cGUodGFyZ2V0RWxlbWVudCkgPT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0OworICAgIHJldHVy
biBkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0YXJnZXRFbGVtZW50KSA9PSBBbmltYXRl
ZFRyYW5zZm9ybUxpc3Q7CiB9CiAKLUFuaW1hdGVkQXR0cmlidXRlVHlwZSBTVkdBbmltYXRlVHJh
bnNmb3JtRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKFNWR0VsZW1lbnQq
IHRhcmdldEVsZW1lbnQpIGNvbnN0CitBbmltYXRlZFByb3BlcnR5VHlwZSBTVkdBbmltYXRlVHJh
bnNmb3JtRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUoU1ZHRWxlbWVudCog
dGFyZ2V0RWxlbWVudCkgY29uc3QKIHsKICAgICBBU1NFUlQodGFyZ2V0RWxlbWVudCk7CiAgICAg
CiAgICAgLy8gSnVzdCB0cmFuc2Zvcm0gbGlzdHMgY2FuIGJlIGFuaW1hdGVkIHdpdGggPGFuaW1h
dGVUcmFuc2Zvcm0+CiAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2FuaW1hdGUuaHRt
bCNBbmltYXRpb25BdHRyaWJ1dGVzQW5kUHJvcGVydGllcwotICAgIGlmICh0YXJnZXRFbGVtZW50
LT5hbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKCkpICE9IEFu
aW1hdGVkVHJhbnNmb3JtTGlzdCkKKyAgICBWZWN0b3I8QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+IHBy
b3BlcnR5VHlwZXM7CisgICAgdGFyZ2V0RWxlbWVudC0+YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JB
dHRyaWJ1dGUoYXR0cmlidXRlTmFtZSgpLCBwcm9wZXJ0eVR5cGVzKTsKKyAgICBpZiAocHJvcGVy
dHlUeXBlcy5pc0VtcHR5KCkgfHwgcHJvcGVydHlUeXBlc1swXSAhPSBBbmltYXRlZFRyYW5zZm9y
bUxpc3QpCiAgICAgICAgIHJldHVybiBBbmltYXRlZFVua25vd247CiAKKyAgICBBU1NFUlQocHJv
cGVydHlUeXBlcy5zaXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIEFuaW1hdGVkVHJhbnNmb3JtTGlz
dDsKIH0KIApAQCAtMTMxLDcgKzEzNCw3IEBAIHN0YXRpYyBTVkdUcmFuc2Zvcm1MaXN0KiB0cmFu
c2Zvcm1MaXN0Rm8KIHZvaWQgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OnJlc2V0VG9CYXNl
VmFsdWUoY29uc3QgU3RyaW5nJiBiYXNlVmFsdWUpCiB7CiAgICAgU1ZHRWxlbWVudCogdGFyZ2V0
RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKLSAgICBpZiAoIXRhcmdldEVsZW1lbnQg
fHwgZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKHRhcmdldEVsZW1lbnQpID09IEFuaW1h
dGVkVW5rbm93bikKKyAgICBpZiAoIXRhcmdldEVsZW1lbnQgfHwgZGV0ZXJtaW5lQW5pbWF0ZWRQ
cm9wZXJ0eVR5cGUodGFyZ2V0RWxlbWVudCkgPT0gQW5pbWF0ZWRVbmtub3duKQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBGSVhNRTogVGhpcyBtaWdodCBub3QgYmUgY29ycmVjdCBmb3IgYWNj
dW11bGF0ZWQgc3VtLiBOZWVkcyBjaGVja2luZy4KQEAgLTE1NCw3ICsxNTcsNyBAQCB2b2lkIFNW
R0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpyZXNldFRvCiB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zv
cm1FbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2ln
bmVkIHJlcGVhdCwgU1ZHU01JTEVsZW1lbnQqKQogewogICAgIFNWR0VsZW1lbnQqIHRhcmdldEVs
ZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7Ci0gICAgaWYgKCF0YXJnZXRFbGVtZW50IHx8
IGRldGVybWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZSh0YXJnZXRFbGVtZW50KSA9PSBBbmltYXRl
ZFVua25vd24pCisgICAgaWYgKCF0YXJnZXRFbGVtZW50IHx8IGRldGVybWluZUFuaW1hdGVkUHJv
cGVydHlUeXBlKHRhcmdldEVsZW1lbnQpID09IEFuaW1hdGVkVW5rbm93bikKICAgICAgICAgcmV0
dXJuOwogICAgIFNWR1RyYW5zZm9ybUxpc3QqIHRyYW5zZm9ybUxpc3QgPSB0cmFuc2Zvcm1MaXN0
Rm9yKHRhcmdldEVsZW1lbnQpOwogICAgIEFTU0VSVCh0cmFuc2Zvcm1MaXN0KTsKQEAgLTIwMCw3
ICsyMDMsNyBAQCBTVkdUcmFuc2Zvcm0gU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6CiB2b2lk
IFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCgpCiB7CiAg
ICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKLSAg
ICBpZiAoIXRhcmdldEVsZW1lbnQgfHwgZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKHRh
cmdldEVsZW1lbnQpID09IEFuaW1hdGVkVW5rbm93bikKKyAgICBpZiAoIXRhcmdldEVsZW1lbnQg
fHwgZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUodGFyZ2V0RWxlbWVudCkgPT0gQW5pbWF0
ZWRVbmtub3duKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBhY2N1bXVsYXRlIHRvIHRo
ZSB0YXJnZXQgZWxlbWVudCB0cmFuc2Zvcm0gbGlzdCBzbyB0aGVyZSBpcyBub3QgbXVjaCB0byBk
byBoZXJlLgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zv
cm1FbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAg
cHJpdmF0ZToKICAgICBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQqKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsaWRBdHRyaWJ1
dGVUeXBlKCkgY29uc3Q7Ci0gICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIGRldGVybWluZUFuaW1h
dGVkQXR0cmlidXRlVHlwZShTVkdFbGVtZW50KikgY29uc3Q7CisgICAgQW5pbWF0ZWRQcm9wZXJ0
eVR5cGUgZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUoU1ZHRWxlbWVudCopIGNvbnN0Owog
CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDcgKzM0LDcgQEAgdHlwZWRlZiBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxTVkdBbgogREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdBbmltYXRlZEFuZ2xlLCBTVkdBbmdsZSwgVXBwZXJQ
cm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfQU5HTEVf
TVVMVElQTEVfV1JBUFBFUlMoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0
ZUlkZW50aWZpZXIsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFRklORV9BTklN
QVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRl
bnRpZmllciwgU1ZHQW5pbWF0ZWRBbmdsZSwgU1ZHQW5nbGUsIFVwcGVyUHJvcGVydHksIExvd2Vy
UHJvcGVydHkpCitERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWRBbmdsZSwgT3duZXJU
eXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFVwcGVyUHJvcGVy
dHksIExvd2VyUHJvcGVydHkpCiAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIGNsYXNzIFNW
R0FuaW1hdGlvbkVsZW1lbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRC
b29sZWFuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9v
bGVhbi5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZEJvb2xlYW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOCBAQCB0eXBlZGVmIFNWR0Fu
aW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmCiBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNW
R0FuaW1hdGVkQm9vbGVhbiwgYm9vbCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAog
I2RlZmluZSBERUZJTkVfQU5JTUFURURfQk9PTEVBTihPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwg
VXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZ
KE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0Fu
aW1hdGVkQm9vbGVhbiwgYm9vbCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklO
RV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZEJvb2xlYW4sIE93bmVyVHlwZSwgRE9NQXR0cmli
dXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVy
dHkpCiAKLSAgICAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIGNsYXNzIFNWR0FuaW1hdGlv
bkVsZW1lbnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVy
YXRpb24uaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsNyBAQCB0eXBlZGVm
IFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmCiBERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRZKFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY8RW51bVR5cGU+LCBFbnVt
VHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5J
TUFURURfRU5VTUVSQVRJT04oT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHks
IExvd2VyUHJvcGVydHksIEVudW1UeXBlKSBcCi1ERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoT3du
ZXJUeXBlLCBET01BdHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZjxFbnVtVHlwZT4sIEVudW1UeXBlLCBVcHBlclBy
b3BlcnR5LCBMb3dlclByb3BlcnR5KQotCi0jZGVmaW5lIERFRklORV9BTklNQVRFRF9FTlVNRVJB
VElPTl9NVUxUSVBMRV9XUkFQUEVSUyhPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0
cmlidXRlSWRlbnRpZmllciwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSwgRW51bVR5cGUp
IFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZH
RE9NQXR0cmlidXRlSWRlbnRpZmllciwgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVh
ck9mZjxFbnVtVHlwZT4sIEVudW1UeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQor
REVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkRW51bWVyYXRpb24sIE93bmVyVHlwZSwg
RE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExv
d2VyUHJvcGVydHkpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEw
ICszNCwxMSBAQCB0eXBlZGVmIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmCiBERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkSW50ZWdlciwgbG9uZywgVXBwZXJQcm9w
ZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfSU5URUdFUihP
d25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAot
REVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRy
aWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVkSW50ZWdlciwgbG9uZywgVXBwZXJQcm9wZXJ0
eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZEludGVn
ZXIsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKKy8vIEZJWE1FOiBUaGlzIGN1cnJlbnRseSBh
bmltYXRlcyBhcyBudW1iZXItb3B0aW9uYWwtbnVtYmVyLCBpbnN0ZWFkIG9mIGludGVnZXItb3B0
aW9uYWwtaW50ZWdlciwgd2hpY2ggaXMgbWlzc2luZy4KICNkZWZpbmUgREVGSU5FX0FOSU1BVEVE
X0lOVEVHRVJfTVVMVElQTEVfV1JBUFBFUlMoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RP
TUF0dHJpYnV0ZUlkZW50aWZpZXIsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURF
RklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0
cmlidXRlSWRlbnRpZmllciwgU1ZHQW5pbWF0ZWRJbnRlZ2VyLCBsb25nLCBVcHBlclByb3BlcnR5
LCBMb3dlclByb3BlcnR5KQorREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkTnVtYmVy
T3B0aW9uYWxOdW1iZXIsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJ
ZGVudGlmaWVyLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiAjaWYgRU5BQkxFKFNW
R19BTklNQVRJT04pCiBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0
LDcgQEAgdHlwZWRlZiBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxTVkdMZQogREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUWShTVkdBbmltYXRlZExlbmd0aCwgU1ZHTGVuZ3RoLCBVcHBlclByb3Bl
cnR5LCBMb3dlclByb3BlcnR5KQogCiAjZGVmaW5lIERFRklORV9BTklNQVRFRF9MRU5HVEgoT3du
ZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURF
RklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmli
dXRlLmxvY2FsTmFtZSgpLCBTVkdBbmltYXRlZExlbmd0aCwgU1ZHTGVuZ3RoLCBVcHBlclByb3Bl
cnR5LCBMb3dlclByb3BlcnR5KQorREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkTGVu
Z3RoLCBPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBV
cHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiAjaWYgRU5BQkxFKFNWR19BTklNQVRJT04p
CiBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkTGVuZ3RoTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZExlbmd0aExpc3QuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0
LDggQEAgdHlwZWRlZiBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8UwogREVDTEFSRV9B
TklNQVRFRF9MSVNUX1BST1BFUlRZKFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCwgU1ZHTGVuZ3RoTGlz
dCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFU
RURfTEVOR1RIX0xJU1QoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExv
d2VyUHJvcGVydHkpIFwKLURFRklORV9BTklNQVRFRF9MSVNUX1BST1BFUlRZKE93bmVyVHlwZSwg
RE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVkTGVuZ3Ro
TGlzdCwgU1ZHTGVuZ3RoTGlzdCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKLSAgICAK
K0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZExlbmd0aExpc3QsIE93bmVyVHlwZSwg
RE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExv
d2VyUHJvcGVydHkpCisKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIGNsYXNzIFNWR0FuaW1h
dGlvbkVsZW1lbnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5o
CShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMCArMzQsMTAgQEAgdHlwZWRlZiBTVkdBbmltYXRl
ZFN0YXRpY1Byb3BlcnR5VGVhck9mZgogREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdBbmlt
YXRlZE51bWJlciwgZmxvYXQsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNkZWZp
bmUgREVGSU5FX0FOSU1BVEVEX05VTUJFUihPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQ
cm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVy
VHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVk
TnVtYmVyLCBmbG9hdCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklN
QVRFRF9QUk9QRVJUWShBbmltYXRlZE51bWJlciwgT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIERP
TUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAog
I2RlZmluZSBERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKE93bmVyVHlw
ZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBVcHBlclByb3BlcnR5
LCBMb3dlclByb3BlcnR5KSBcCi1ERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBE
T01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFNWR0FuaW1hdGVkTnVtYmVy
LCBmbG9hdCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9Q
Uk9QRVJUWShBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLCBPd25lclR5cGUsIERPTUF0dHJp
YnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9w
ZXJ0eSkKIAogI2lmIEVOQUJMRShTVkdfQU5JTUFUSU9OKQogY2xhc3MgU1ZHQW5pbWF0aW9uRWxl
bWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgJ
KHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVy
TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCw4IEBAIHR5cGVkZWYgU1ZHQW5pbWF0
ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFMKIERFQ0xBUkVfQU5JTUFURURfTElTVF9QUk9QRVJUWShT
VkdBbmltYXRlZE51bWJlckxpc3QsIFNWR051bWJlckxpc3QsIFVwcGVyUHJvcGVydHksIExvd2Vy
UHJvcGVydHkpCiAKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9MSVNUKE93bmVyVHlw
ZSwgRE9NQXR0cmlidXRlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCi1ERUZJTkVf
QU5JTUFURURfTElTVF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmli
dXRlLmxvY2FsTmFtZSgpLCBTVkdBbmltYXRlZE51bWJlckxpc3QsIFNWR051bWJlckxpc3QsIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCi0gICAgCitERUZJTkVfQU5JTUFURURfUFJPUEVS
VFkoQW5pbWF0ZWROdW1iZXJMaXN0LCBPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmli
dXRlLmxvY2FsTmFtZSgpLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorCiAjaWYgRU5B
QkxFKFNWR19BTklNQVRJT04pCiBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRp
by5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBy
ZXNlcnZlQXNwZWN0UmF0aW8uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsOCBAQCB0eXBl
ZGVmIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPFNWR1ByCiBERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRZKFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbywgU1ZHUHJlc2VydmVBc3BlY3RS
YXRpbywgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5J
TUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQ
cm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVy
VHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVk
UHJlc2VydmVBc3BlY3RSYXRpbywgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbywgVXBwZXJQcm9wZXJ0
eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZFByZXNl
cnZlQXNwZWN0UmF0aW8sIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9j
YWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKLSAgICAKICNpZiBFTkFC
TEUoU1ZHX0FOSU1BVElPTikKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFJlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRSZWN0LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICsz
NSw3IEBAIHR5cGVkZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8RmxvYXQKIERFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVFkoU1ZHQW5pbWF0ZWRSZWN0LCBGbG9hdFJlY3QsIFVwcGVyUHJvcGVy
dHksIExvd2VyUHJvcGVydHkpCiAKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX1JFQ1QoT3duZXJU
eXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFRklO
RV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRl
LmxvY2FsTmFtZSgpLCBTVkdBbmltYXRlZFJlY3QsIEZsb2F0UmVjdCwgVXBwZXJQcm9wZXJ0eSwg
TG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZFJlY3QsIE93
bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJv
cGVydHksIExvd2VyUHJvcGVydHkpCiAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIGNsYXNz
IFNWR0FuaW1hdGlvbkVsZW1lbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRT
dHJpbmcuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCB0eXBlZGVmIFNWR0Fu
aW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmCiBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNW
R0FuaW1hdGVkU3RyaW5nLCBTdHJpbmcsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAK
ICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX1NUUklORyhPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwg
VXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZ
KE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0Fu
aW1hdGVkU3RyaW5nLCBTdHJpbmcsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCitERUZJ
TkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWRTdHJpbmcsIE93bmVyVHlwZSwgRE9NQXR0cmli
dXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVy
dHkpCiAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1l
bnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCB0eXBlZGVmIFNW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5CiBERUNMQVJFX0FOSU1BVEVEX0xJU1RfUFJP
UEVSVFkoU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LCBTVkdUcmFuc2Zvcm1MaXN0LCBVcHBlclBy
b3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiAjZGVmaW5lIERFRklORV9BTklNQVRFRF9UUkFOU0ZP
Uk1fTElTVChPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9w
ZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX0xJU1RfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRy
aWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
LCBTVkdUcmFuc2Zvcm1MaXN0LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorREVGSU5F
X0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkVHJhbnNmb3JtTGlzdCwgT3duZXJUeXBlLCBET01B
dHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQ
cm9wZXJ0eSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBA
QCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0FuaW1h
dGVkVHlwZTo6U1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVkQXR0cmlidXRlVHlwZSB0eXBlKQorU1ZH
QW5pbWF0ZWRUeXBlOjpTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSkK
ICAgICA6IG1fdHlwZSh0eXBlKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFR5cGUuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlUmVjdChGbG9hdFJlY3QqKTsK
ICAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVN0cmluZyhTdHJp
bmcqKTsKIAotICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9CisgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQogCiAgICAgU1ZHQW5nbGUmIGFuZ2xlKCk7CiAgICAgYm9vbCYgYm9vbGVhbigp
OwpAQCAtNzksOSArNzksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmVzZXJ2ZUFzcGVjdFJh
dGlvQmFzZVZhbHVlKGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mKTsKIAogcHJpdmF0ZToK
LSAgICBTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKTsKKyAgICBTVkdBbmlt
YXRlZFR5cGUoQW5pbWF0ZWRQcm9wZXJ0eVR5cGUpOwogCi0gICAgQW5pbWF0ZWRBdHRyaWJ1dGVU
eXBlIG1fdHlwZTsKKyAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBtX3R5cGU7CiAKICAgICB1bmlv
biBEYXRhVW5pb24gewogICAgICAgICBEYXRhVW5pb24oKQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDE0ICs0MywxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZXh0RWxlbWVudChT
VkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkgeyBtX2NvbnRleHRFbGVtZW50ID0gY29udGV4dEVs
ZW1lbnQ7IH0KICAgICAKIHByb3RlY3RlZDoKLSAgICBTVkdBbmltYXRlZFR5cGVBbmltYXRvcihB
bmltYXRlZEF0dHJpYnV0ZVR5cGUgdHlwZSwgU1ZHQW5pbWF0aW9uRWxlbWVudCogYW5pbWF0aW9u
RWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCisgICAgU1ZHQW5pbWF0ZWRUeXBl
QW5pbWF0b3IoQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSwgU1ZHQW5pbWF0aW9uRWxlbWVudCog
YW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiAgICAgICAgIDog
bV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9hbmltYXRpb25FbGVtZW50KGFuaW1hdGlvbkVsZW1l
bnQpCiAgICAgICAgICwgbV9jb250ZXh0RWxlbWVudChjb250ZXh0RWxlbWVudCkKICAgICB7CiAg
ICAgfQogCi0gICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIG1fdHlwZTsKKyAgICBBbmltYXRlZFBy
b3BlcnR5VHlwZSBtX3R5cGU7CiAgICAgU1ZHQW5pbWF0aW9uRWxlbWVudCogbV9hbmltYXRpb25F
bGVtZW50OwogICAgIFNWR0VsZW1lbnQqIG1fY29udGV4dEVsZW1lbnQ7CiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUyLDEzICs1MiwyMCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVf
QU5JTUFURURfQk9PTEVBTihTVkdBbmltYXRpb25FbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAg
IERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0FuaW1hdGlvbkVsZW1lbnQsIFNWR05hbWVzOjpl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwg
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElF
UworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0FuaW1hdGlvbkVsZW1l
bnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdU
ZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIFNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OlNWR0FuaW1hdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU01JTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiAgICAgLCBtX2FuaW1hdGlvblZhbGlkKGZhbHNlKQogeworICAgIHJlZ2lzdGVyQW5pbWF0
ZWRQcm9wZXJ0aWVzRm9yU1ZHQW5pbWF0aW9uRWxlbWVudCgpOwogfQogCiBzdGF0aWMgdm9pZCBw
YXJzZUtleVRpbWVzKGNvbnN0IFN0cmluZyYgcGFyc2UsIFZlY3RvcjxmbG9hdD4mIHJlc3VsdCwg
Ym9vbCB2ZXJpZnlPcmRlcikKQEAgLTIwMywyMiArMjEwLDYgQEAgdm9pZCBTVkdBbmltYXRpb25F
bGVtZW50OjphdHRyaWJ1dGVDaGFuZwogICAgIFNWR1NNSUxFbGVtZW50OjphdHRyaWJ1dGVDaGFu
Z2VkKGF0dHIsIHByZXNlcnZlRGVjbHMpOwogfQogCi12b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0g
ICAgU1ZHU01JTEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotCi0gICAg
aWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3Bl
cnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KQotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICBl
bHNlIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIFNW
R1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotfQotCiBmbG9h
dCBTVkdBbmltYXRpb25FbGVtZW50OjpnZXRTdGFydFRpbWUoKSBjb25zdAogewogICAgIHJldHVy
biBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGludGVydmFsQmVnaW4oKS52YWx1ZSgpKTsKQEAgLTQ4
Niw3ICs0NzcsNyBAQCB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmN1cnJlbnRWYWx1ZXNGCiAg
ICAgQ2FsY01vZGUgY2FsY01vZGUgPSB0aGlzLT5jYWxjTW9kZSgpOwogICAgIGlmIChoYXNUYWdO
YW1lKFNWR05hbWVzOjphbmltYXRlVGFnKSB8fCBoYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRl
Q29sb3JUYWcpKSB7CiAgICAgICAgIGNvbnN0IFNWR0FuaW1hdGVFbGVtZW50KiBhbmltYXRlRWxl
bWVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFNWR0FuaW1hdGVFbGVtZW50Kj4odGhpcyk7Ci0gICAg
ICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBhdHRyaWJ1dGVUeXBlID0gYW5pbWF0ZUVsZW1lbnQt
PmRldGVybWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZSh0YXJnZXRFbGVtZW50KCkpOworICAgICAg
ICBBbmltYXRlZFByb3BlcnR5VHlwZSBhdHRyaWJ1dGVUeXBlID0gYW5pbWF0ZUVsZW1lbnQtPmRl
dGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKHRhcmdldEVsZW1lbnQoKSk7CiAgICAgICAgIC8v
IEZhbGwgYmFjayB0byBkaXNjcmV0ZSBhbmltYXRpb25zIGZvciBTdHJpbmdzLgogICAgICAgICBp
ZiAoYXR0cmlidXRlVHlwZSA9PSBBbmltYXRlZEJvb2xlYW4KICAgICAgICAgICAgIHx8IGF0dHJp
YnV0ZVR5cGUgPT0gQW5pbWF0ZWRFbnVtZXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGlvbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0aW9uRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw3ICsxMDgs
NiBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNo
YW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVzZXJ2ZURlY2xzKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICB2aXJ0dWFs
IGJvb2wgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywg
Y29uc3QgU3RyaW5nJiB0b1N0cmluZykgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVG
cm9tQW5kQnlWYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5
U3RyaW5nKSA9IDA7CkBAIC0xMjMsMTAgKzEyMiwxNCBAQCBwcml2YXRlOgogICAgIGZsb2F0IGNh
bGN1bGF0ZVBlcmNlbnRGb3JTcGxpbmUoZmxvYXQgcGVyY2VudCwgdW5zaWduZWQgc3BsaW5lSW5k
ZXgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGNhbGN1bGF0ZUtleVRpbWVzSW5kZXgoZmxvYXQgcGVy
Y2VudCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLQot
ICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVE
X0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQW5pbWF0aW9u
RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1
aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWly
ZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMo
dGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsg
U1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KIAogICAgIGJvb2wg
bV9hbmltYXRpb25WYWxpZDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9y
RmFjdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZh
Y3RvcnkuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
b3JGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgU1ZHQW5p
bWF0aW9uRWxlbWVudDsKIAogY2xhc3MgU1ZHQW5pbWF0b3JGYWN0b3J5IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGVBbmltYXRvcj4gY3JlYXRlKFNWR0Fu
aW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50LCBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgYXR0cmlidXRlVHlwZSkKKyAgICBzdGF0aWMgUGFz
c093blB0cjxTVkdBbmltYXRlZFR5cGVBbmltYXRvcj4gY3JlYXRlKFNWR0FuaW1hdGlvbkVsZW1l
bnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBBbmltYXRl
ZFByb3BlcnR5VHlwZSBhdHRyaWJ1dGVUeXBlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGFuaW1h
dGlvbkVsZW1lbnQpOwogICAgICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDExICszMywyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHBy
b3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0NpcmNsZUVsZW1l
bnQsIFNWR05hbWVzOjpjeEF0dHIsIEN4LCBjeCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZH
Q2lyY2xlRWxlbWVudCwgU1ZHTmFtZXM6OmN5QXR0ciwgQ3ksIGN5KQotREVGSU5FX0FOSU1BVEVE
X0xFTkdUSChTVkdDaXJjbGVFbGVtZW50LCBTVkdOYW1lczo6ckF0dHIsIFIsIHIpCi1ERUZJTkVf
QU5JTUFURURfQk9PTEVBTihTVkdDaXJjbGVFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERF
RklORV9BTklNQVRFRF9MRU5HVEgoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTmFtZXM6OmN4QXR0ciwg
Q3gsIGN4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZH
TmFtZXM6OmN5QXR0ciwgQ3ksIGN5KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHQ2ly
Y2xlRWxlbWVudCwgU1ZHTmFtZXM6OnJBdHRyLCBSLCByKQorICAgIERFRklORV9BTklNQVRFRF9C
T09MRUFOKFNWR0NpcmNsZUVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR0NpcmNsZUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoY3gpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkoY3kpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocikKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQor
ICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0Np
cmNsZUVsZW1lbnQ6OlNWR0NpcmNsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC00Niw2ICs1Niw3IEBAIGlubGluZSBTVkdDaXJjbGVF
bGVtZW50OjpTVkdDaXJjbGVFbGVtZW4KICAgICAsIG1fcihMZW5ndGhNb2RlT3RoZXIpCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmNpcmNsZVRhZykpOworICAgIHJlZ2lzdGVy
QW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQ2lyY2xlRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRy
PFNWR0NpcmNsZUVsZW1lbnQ+IFNWR0NpcmNsZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xMzgsNjcgKzE0OSw2IEBA
IHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmcKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdDaXJjbGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9
PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplQ3goKTsKLSAgICAgICAgc3luY2hy
b25pemVDeSgpOwotICAgICAgICBzeW5jaHJvbml6ZVIoKTsKLSAgICAgICAgc3luY2hyb25pemVF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9w
ZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmN4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUN4KCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmN5QXR0
cikgewotICAgICAgICBzeW5jaHJvbml6ZUN5KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplUigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewot
ICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQot
Ci1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHQ2lyY2xlRWxlbWVudDo6YXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAg
ICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdDaXJj
bGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMt
PmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OmN4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6Y3lBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyQXR0ciwgQW5pbWF0ZWRMZW5n
dGgpOwotfQotCiB2b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OnRvUGF0aERhdGEoUGF0aCYgcGF0aCkg
Y29uc3QKIHsKICAgICBBU1NFUlQocGF0aC5pc0VtcHR5KCkpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ2lyY2xlRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDIyICs0NywyMiBA
QCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotCi0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdG9QYXRoRGF0YShQYXRo
JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNv
bnN0OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoQ3gsIGN4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN5
LCBjeSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSLCByKQotCi0gICAgLy8gU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJF
R0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdDaXJjbGVFbGVtZW50KQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeCwgY3gpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfTEVOR1RIKEN5LCBjeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUiwgcikK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURf
UFJPUEVSVElFUworCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25p
emVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1
cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNp
b25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6
OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNSArMzQsMjQgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1B
VEVEX0VOVU1FUkFUSU9OKFNWR0NsaXBQYXRoRWxlbWVudCwgU1ZHTmFtZXM6OmNsaXBQYXRoVW5p
dHNBdHRyLCBDbGlwUGF0aFVuaXRzLCBjbGlwUGF0aFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1Vu
aXRUeXBlKQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHQ2xpcFBhdGhFbGVtZW50LCBTVkdO
YW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURf
UFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdDbGlwUGF0aEVs
ZW1lbnQsIFNWR05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0ciwgQ2xpcFBhdGhVbml0cywgY2xpcFBh
dGhVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICBERUZJTkVfQU5JTUFURURf
Qk9PTEVBTihTVkdDbGlwUGF0aEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RF
Ul9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0NsaXBQYXRoRWxlbWVudCkKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShjbGlwUGF0aFVuaXRzKQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNU
RVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitF
TkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHQ2xpcFBhdGhFbGVt
ZW50OjpTVkdDbGlwUGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX2NsaXBQYXRoVW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdf
VU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05h
bWVzOjpjbGlwUGF0aFRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZH
Q2xpcFBhdGhFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHQ2xpcFBhdGhFbGVtZW50PiBT
VkdDbGlwUGF0aEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCkBAIC05OSw1MyArMTA4LDYgQEAgdm9pZCBTVkdDbGlwUGF0aEVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYQogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRy
dWUpOwogfQogCi12b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55
UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUNsaXBQYXRoVW5pdHMoKTsKLSAgICAgICAg
c3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3Rz
OjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0
dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmNsaXBQYXRoVW5pdHNBdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplQ2xpcFBhdGhVbml0cygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVz
KHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHQ2xpcFBh
dGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
OwotfQotCi12b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0g
ICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0ciwgQW5pbWF0
ZWRFbnVtZXJhdGlvbik7Ci19Ci0KIHZvaWQgU1ZHQ2xpcFBhdGhFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0
ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5n
ZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NsaXBQYXRoRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTggKzUwLDE5
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0
ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChi
b29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2Rl
KiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIHZpcnR1
YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxl
Kik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJF
X0FOSU1BVEVEX0VOVU1FUkFUSU9OKENsaXBQYXRoVW5pdHMsIGNsaXBQYXRoVW5pdHMsIFNWR1Vu
aXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR0NsaXBQYXRoRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJB
VElPTihDbGlwUGF0aFVuaXRzLCBjbGlwUGF0aFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUSUVTCiAKLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVS
ZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVx
dWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lv
bnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgp
IHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KIH07CiAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCwxNCArMzAsMjUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBB
bmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9O
KFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdOYW1lczo6dHlwZUF0dHIs
IFR5cGUsIHR5cGUsIENvbXBvbmVudFRyYW5zZmVyVHlwZSkKLURFRklORV9BTklNQVRFRF9OVU1C
RVJfTElTVChTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OnRh
YmxlVmFsdWVzQXR0ciwgVGFibGVWYWx1ZXMsIHRhYmxlVmFsdWVzKQotREVGSU5FX0FOSU1BVEVE
X05VTUJFUihTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OnNs
b3BlQXR0ciwgU2xvcGUsIHNsb3BlKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OmludGVyY2VwdEF0dHIsIEludGVy
Y2VwdCwgaW50ZXJjZXB0KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OmFtcGxpdHVkZUF0dHIsIEFtcGxpdHVkZSwg
YW1wbGl0dWRlKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OmV4cG9uZW50QXR0ciwgRXhwb25lbnQsIGV4cG9uZW50
KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxl
bWVudCwgU1ZHTmFtZXM6Om9mZnNldEF0dHIsIE9mZnNldCwgb2Zmc2V0KQorQkVHSU5fREVGSU5F
X0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZH
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR05hbWVzOjp0eXBlQXR0ciwgVHlw
ZSwgdHlwZSwgQ29tcG9uZW50VHJhbnNmZXJUeXBlKQorICAgIERFRklORV9BTklNQVRFRF9OVU1C
RVJfTElTVChTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OnRh
YmxlVmFsdWVzQXR0ciwgVGFibGVWYWx1ZXMsIHRhYmxlVmFsdWVzKQorICAgIERFRklORV9BTklN
QVRFRF9OVU1CRVIoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR05hbWVz
OjpzbG9wZUF0dHIsIFNsb3BlLCBzbG9wZSkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdOYW1lczo6aW50ZXJjZXB0QXR0
ciwgSW50ZXJjZXB0LCBpbnRlcmNlcHQpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OmFtcGxpdHVkZUF0dHIs
IEFtcGxpdHVkZSwgYW1wbGl0dWRlKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR05hbWVzOjpleHBvbmVudEF0dHIsIEV4
cG9uZW50LCBleHBvbmVudCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdOYW1lczo6b2Zmc2V0QXR0ciwgT2Zmc2V0LCBv
ZmZzZXQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCkK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh0eXBlKQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHRhYmxlVmFsdWVzKQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKHNsb3BlKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKGludGVyY2VwdCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShh
bXBsaXR1ZGUpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXhwb25lbnQp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkob2Zmc2V0KQorRU5EX1JFR0lT
VEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQ6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0VsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCkBAIC00Niw2ICs1Nyw3IEBAIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb25FbGVtZW50OjpTVkcKICAgICAsIG1fYW1wbGl0dWRlKDEpCiAgICAgLCBtX2V4cG9uZW50
KDEpCiB7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVudCgpOwogfQogCiBib29sIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb25FbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKQEAgLTExNCw4MSArMTI2LDYgQEAgdm9pZCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFt
ZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplVHlwZSgpOwotICAgICAgICBzeW5jaHJvbml6ZVRh
YmxlVmFsdWVzKCk7Ci0gICAgICAgIHN5bmNocm9uaXplU2xvcGUoKTsKLSAgICAgICAgc3luY2hy
b25pemVJbnRlcmNlcHQoKTsKLSAgICAgICAgc3luY2hyb25pemVBbXBsaXR1ZGUoKTsKLSAgICAg
ICAgc3luY2hyb25pemVFeHBvbmVudCgpOwotICAgICAgICBzeW5jaHJvbml6ZU9mZnNldCgpOwot
ICAgICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7Ci0gICAgICAgIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
Ojp0eXBlQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVR5cGUoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dGFibGVWYWx1ZXNBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplVGFibGVWYWx1ZXMoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c2xvcGVBdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplU2xvcGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW50ZXJjZXB0QXR0cikgewotICAgICAgICBzeW5jaHJv
bml6ZUludGVyY2VwdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjphbXBsaXR1ZGVBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplQW1w
bGl0dWRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmV4cG9uZW50QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUV4cG9uZW50KCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
Om9mZnNldEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVPZmZzZXQoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAo
KSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQg
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnR5cGVBdHRyLCBB
bmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OnRhYmxlVmFsdWVzQXR0ciwgQW5pbWF0ZWROdW1iZXJMaXN0KTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNsb3BlQXR0ciwgQW5pbWF0ZWRO
dW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW50
ZXJjZXB0QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6YW1wbGl0dWRlQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZXhwb25lbnRBdHRyLCBBbmlt
YXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjpvZmZzZXRBdHRyLCBBbmltYXRlZE51bWJlcik7Ci19Ci0KIENvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24gU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnRyYW5zZmVyRnVuY3Rp
b24oKSBjb25zdAogewogICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gZnVuYzsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudC5oCShyZXZpc2lvbiA5MDU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04
MCwxOSArODAsMTcgQEAgcHJvdGVjdGVkOgogICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFu
Z2VkIG1pc3NpbmcuCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0
ZSopOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKICAgICAKIHByaXZhdGU6Ci0gICAgLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihUeXBlLCB0
eXBlLCBDb21wb25lbnRUcmFuc2ZlclR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVJf
TElTVChUYWJsZVZhbHVlcywgdGFibGVWYWx1ZXMpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1C
RVIoU2xvcGUsIHNsb3BlKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEludGVyY2VwdCwg
aW50ZXJjZXB0KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEFtcGxpdHVkZSwgYW1wbGl0
dWRlKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEV4cG9uZW50LCBleHBvbmVudCkKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihPZmZzZXQsIG9mZnNldCkKKyAgICBCRUdJTl9ERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1l
bnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oVHlwZSwgdHlwZSwgQ29t
cG9uZW50VHJhbnNmZXJUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUl9MSVNU
KFRhYmxlVmFsdWVzLCB0YWJsZVZhbHVlcykKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1C
RVIoU2xvcGUsIHNsb3BlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihJbnRlcmNl
cHQsIGludGVyY2VwdCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQW1wbGl0dWRl
LCBhbXBsaXR1ZGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEV4cG9uZW50LCBl
eHBvbmVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoT2Zmc2V0LCBvZmZzZXQp
CisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAko
cmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDExICszMCwyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURf
TEVOR1RIKFNWR0N1cnNvckVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKLURFRklORV9B
TklNQVRFRF9MRU5HVEgoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQot
REVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdDdXJzb3JFbGVtZW50LCBYTGlua05hbWVzOjpocmVm
QXR0ciwgSHJlZiwgaHJlZikKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0N1cnNvckVsZW1l
bnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9B
TklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdDdXJzb3JF
bGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdU
SChTVkdDdXJzb3JFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCisgICAgREVGSU5FX0FO
SU1BVEVEX1NUUklORyhTVkdDdXJzb3JFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJl
ZiwgaHJlZikKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdDdXJzb3JFbGVtZW50LCBT
VkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVE
X1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdDdXJz
b3JFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWShocmVmKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElF
UwogCiBpbmxpbmUgU1ZHQ3Vyc29yRWxlbWVudDo6U1ZHQ3Vyc29yRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KQpAQCAtNDIsNiArNTEsNyBAQCBpbmxpbmUgU1ZHQ3Vyc29yRWxl
bWVudDo6U1ZHQ3Vyc29yRWxlbWVuCiAgICAgLCBtX3koTGVuZ3RoTW9kZUhlaWdodCkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6Y3Vyc29yVGFnKSk7CisgICAgcmVnaXN0ZXJB
bmltYXRlZFByb3BlcnRpZXNGb3JTVkdDdXJzb3JFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8
U1ZHQ3Vyc29yRWxlbWVudD4gU1ZHQ3Vyc29yRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTk2LDIwICsxMDYsNiBAQCB2
b2lkIFNWR0N1cnNvckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdDdXJzb3JFbGVt
ZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQot
Ci12b2lkIFNWR0N1cnNvckVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
Ci17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZE51bWJlcik7
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5p
bWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChYTGlua05h
bWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotfQotCiB2b2lkIFNWR0N1cnNvckVsZW1l
bnQ6OmFkZENsaWVudChTVkdFbGVtZW50KiBlbGVtZW50KQogewogICAgIG1fY2xpZW50cy5hZGQo
ZWxlbWVudCk7CkBAIC0xNDcsNTEgKzE0Myw2IEBAIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmcKICAgICAgICAgKCppdCktPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0K
IAotdm9pZCBTVkdDdXJzb3JFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAg
ICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHN5bmNo
cm9uaXplSHJlZigpOwotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRo
aXMsIGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShh
dHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVk
QXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXMo
dGhpcywgYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci19Ci0KIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6YWRkU3VicmVzb3VyY2VB
dHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdAogewogICAgIFNWR0Vs
ZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MywyMSArNTMs
MjAgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKIAotICAgIC8vIEFuaW1h
dGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgs
IHgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKLQotICAgIC8vIFNWR1VSSVJl
ZmVyZW5jZQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCi0KLSAgICAv
LyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09M
RUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQp
CisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0N1cnNvckVsZW1lbnQp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKFksIHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhy
ZWYsIGhyZWYpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9ERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVx
dWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVp
cmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25z
KHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSB7
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiAKICAgICBIYXNo
U2V0PFNWR0VsZW1lbnQqPiBtX2NsaWVudHM7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0RlZnNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RGVmc0VsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdEZWZzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwyMSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1E
RUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdEZWZzRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAg
ICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdEZWZzRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisK
K0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRGVmc0VsZW1lbnQpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBT
VkdEZWZzRWxlbWVudDo6U1ZHRGVmc0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6
OmRlZnNUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0RlZnNFbGVt
ZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRGVmc0VsZW1lbnQ+IFNWR0RlZnNFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpA
QCAtNTIsMjIgKzYwLDYgQEAgUmVuZGVyT2JqZWN0KiBTVkdEZWZzRWxlbWVudDo6Y3JlYXRlUmVu
ZAogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIodGhpcyk7
CiB9CiAKLXZvaWQgU1ZHRGVmc0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotCi0gICAgaWYgKGF0dHJOYW1lID09
IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0
ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAgICBzeW5j
aHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICBlbHNlIGlmIChTVkdUZXN0
czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFC
TEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmgJKHJldmlzaW9uIDkw
NDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDEyICs0MywxNSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlk
KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVBy
b3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5
IGRlY2xhcmF0aW9ucworICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdE
ZWZzRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xB
UkVfQU5JTUFURURfUFJPUEVSVElFUwogCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIC8vIFNWR1Rlc3RzCisgICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNo
cm9uaXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRF
eHRlbnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFu
Z3VhZ2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDIzICsyODUsOSBAQCB2b2lkIFNWR0VsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0CiAgICAgICAgIFN0eWxlZEVsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKGF0dHIpOwogfQogCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRWxl
bWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQordm9pZCBTVkdFbGVtZW50Ojphbmlt
YXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lLCBWZWN0b3I8QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+JiBwcm9wZXJ0eVR5cGVzKQogewot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcDsKLX0KLQotQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIFNWR0VsZW1lbnQ6OmFu
aW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhbmltYXRlZEF0dHJpYnV0
ZU1hcCA9IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgaWYgKGFuaW1hdGVkQXR0
cmlidXRlTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7Ci0gICAgaWYgKGFuaW1hdGVkQXR0cmlidXRlTWFwLmNvbnRhaW5zKGF0dHJOYW1lKSkK
LSAgICAgICAgcmV0dXJuIGFuaW1hdGVkQXR0cmlidXRlTWFwLmdldChhdHRyTmFtZSk7Ci0gICAg
aWYgKGlzU3R5bGVkKCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVt
ZW50Kj4odGhpcyktPmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQ1NTUHJvcGVydHkoYXR0ck5hbWUp
OwotCi0gICAgcmV0dXJuIEFuaW1hdGVkVW5rbm93bjsKKyAgICBsb2NhbEF0dHJpYnV0ZVRvUHJv
cGVydHlNYXAoKS5hbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1l
LCBwcm9wZXJ0eVR5cGVzKTsKIH0KIAogYm9vbCBTVkdFbGVtZW50OjpoYXZlTG9hZGVkUmVxdWly
ZWRSZXNvdXJjZXMoKQpAQCAtMzkyLDEzICszNzgsNDIgQEAgdm9pZCBTVkdFbGVtZW50Ojp1cGRh
dGVBbmltYXRlZFNWR0F0dHJpYgogCiAgICAgc2V0SXNTeW5jaHJvbml6aW5nU1ZHQXR0cmlidXRl
cygpOwogCi0gICAgY29uc3RfY2FzdDxTVkdFbGVtZW50Kj4odGhpcyktPnN5bmNocm9uaXplUHJv
cGVydHkobmFtZSk7Ci0gICAgaWYgKG5hbWUgPT0gYW55UU5hbWUoKSkKKyAgICBTVkdFbGVtZW50
KiBub25Db25zdFRoaXMgPSBjb25zdF9jYXN0PFNWR0VsZW1lbnQqPih0aGlzKTsKKyAgICBpZiAo
bmFtZSA9PSBhbnlRTmFtZSgpKSB7CisgICAgICAgIG5vbkNvbnN0VGhpcy0+bG9jYWxBdHRyaWJ1
dGVUb1Byb3BlcnR5TWFwKCkuc3luY2hyb25pemVQcm9wZXJ0aWVzKG5vbkNvbnN0VGhpcyk7CiAg
ICAgICAgIHNldEFyZVNWR0F0dHJpYnV0ZXNWYWxpZCgpOworICAgIH0gZWxzZQorICAgICAgICBu
b25Db25zdFRoaXMtPmxvY2FsQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpLnN5bmNocm9uaXplUHJv
cGVydHkobm9uQ29uc3RUaGlzLCBuYW1lKTsKIAogICAgIGNsZWFySXNTeW5jaHJvbml6aW5nU1ZH
QXR0cmlidXRlcygpOwogfQogCitTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBTVkdFbGVtZW50
Ojpsb2NhbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFw
LCBkdW1teU1hcCwgKCkpOworICAgIHJldHVybiBkdW1teU1hcDsKK30KKwordm9pZCBTVkdFbGVt
ZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModm9pZCogY29udGV4dEVsZW1lbnQpCit7
CisgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICBzdGF0aWNfY2FzdDxTVkdFbGVtZW50
Kj4oY29udGV4dEVsZW1lbnQpLT5zeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKTsKK30KKwor
dm9pZCBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh2b2lkKiBjb250
ZXh0RWxlbWVudCkKK3sKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgIHN0YXRpY19j
YXN0PFNWR0VsZW1lbnQqPihjb250ZXh0RWxlbWVudCktPnN5bmNocm9uaXplUmVxdWlyZWRFeHRl
bnNpb25zKCk7Cit9CisKK3ZvaWQgU1ZHRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFn
ZSh2b2lkKiBjb250ZXh0RWxlbWVudCkKK3sKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwor
ICAgIHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihjb250ZXh0RWxlbWVudCktPnN5bmNocm9uaXpl
U3lzdGVtTGFuZ3VhZ2UoKTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw0NyArMjQsMjcgQEAKIAog
I2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHTG9jYXRhYmxlLmgiCisjaW5jbHVkZSAiU1ZH
UHJvcGVydHlJbmZvLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBBbmltYXRlZEF0dHJp
YnV0ZVR5cGUgewotICAgIEFuaW1hdGVkQW5nbGUsCi0gICAgQW5pbWF0ZWRCb29sZWFuLAotICAg
IEFuaW1hdGVkQ29sb3IsCi0gICAgQW5pbWF0ZWRFbnVtZXJhdGlvbiwKLSAgICBBbmltYXRlZElu
dGVnZXIsCi0gICAgQW5pbWF0ZWRMZW5ndGgsCi0gICAgQW5pbWF0ZWRMZW5ndGhMaXN0LAotICAg
IEFuaW1hdGVkTnVtYmVyLAotICAgIEFuaW1hdGVkTnVtYmVyTGlzdCwKLSAgICBBbmltYXRlZE51
bWJlck9wdGlvbmFsTnVtYmVyLAotICAgIEFuaW1hdGVkUGF0aCwKLSAgICBBbmltYXRlZFBvaW50
cywKLSAgICBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8sCi0gICAgQW5pbWF0ZWRSZWN0LAot
ICAgIEFuaW1hdGVkU3RyaW5nLAotICAgIEFuaW1hdGVkVHJhbnNmb3JtTGlzdCwKLSAgICBBbmlt
YXRlZFVua25vd24KLX07Ci0KIGVudW0gU1ZHUGFyc2luZ0Vycm9yIHsKICAgICBOb0Vycm9yLAog
ICAgIFBhcnNpbmdBdHRyaWJ1dGVGYWlsZWRFcnJvciwKICAgICBOZWdhdGl2ZVZhbHVlRm9yYmlk
ZGVuRXJyb3IKIH07CiAKLXR5cGVkZWYgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZEF0
dHJpYnV0ZVR5cGU+IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotCitjbGFzcyBBZmZpbmVU
cmFuc2Zvcm07CiBjbGFzcyBDU1NDdXJzb3JJbWFnZVZhbHVlOwogY2xhc3MgRG9jdW1lbnQ7Citj
bGFzcyBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwOwogY2xhc3MgU1ZHQ3Vyc29yRWxlbWVudDsK
IGNsYXNzIFNWR0RvY3VtZW50RXh0ZW5zaW9uczsKIGNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZTsK
IGNsYXNzIFNWR0VsZW1lbnRSYXJlRGF0YTsKIGNsYXNzIFNWR1NWR0VsZW1lbnQ7Ci1jbGFzcyBB
ZmZpbmVUcmFuc2Zvcm07CiAKIGNsYXNzIFNWR0VsZW1lbnQgOiBwdWJsaWMgU3R5bGVkRWxlbWVu
dCB7CiBwdWJsaWM6CkBAIC05MSwxMiArNzEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpIHsgfQotCi0gICAg
dmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKLSAgICBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGVG
b3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCi0gICAgdmlydHVhbCB2b2lkIGZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhbmlt
YXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgVmVjdG9y
PEFuaW1hdGVkUHJvcGVydHlUeXBlPiYpOwogCiAgICAgdm9pZCBzZW5kU1ZHTG9hZEV2ZW50SWZQ
b3NzaWJsZShib29sIHNlbmRQYXJlbnRMb2FkRXZlbnRzID0gZmFsc2UpOwogCkBAIC0xMTUsNiAr
OTEsMTYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGVkU1ZHQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKIAorICAgIHN0YXRpYyB2b2lkIHN5
bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh2b2lkKiBjb250ZXh0RWxlbWVudCk7CisgICAgc3Rh
dGljIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModm9pZCogY29udGV4dEVsZW1l
bnQpOworICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2Uodm9pZCogY29u
dGV4dEVsZW1lbnQpOworCisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0
dXJlcygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9u
cygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyB9
CisKKyAgICB2aXJ0dWFsIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAmIGxvY2FsQXR0cmlidXRl
VG9Qcm9wZXJ0eU1hcCgpOworCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApAQCAtMTQxLDcgKzEyNyw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBtYXBJbnN0YW5jZVRvRWxlbWVudChTVkdFbGVtZW50SW5zdGFuY2UqKTsKICAgICB2
b2lkIHJlbW92ZUluc3RhbmNlTWFwcGluZyhTVkdFbGVtZW50SW5zdGFuY2UqKTsKIAotICAgIHZp
cnR1YWwgYm9vbCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKTsKKyAgICB2aXJ0dWFsIGJv
b2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCk7ICAgIAogfTsKIAogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDEyICszMywyMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVk
IHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0VsbGlwc2VF
bGVtZW50LCBTVkdOYW1lczo6Y3hBdHRyLCBDeCwgY3gpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RI
KFNWR0VsbGlwc2VFbGVtZW50LCBTVkdOYW1lczo6Y3lBdHRyLCBDeSwgY3kpCi1ERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdOYW1lczo6cnhBdHRyLCBSeCwgcngp
Ci1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdOYW1lczo6cnlB
dHRyLCBSeSwgcnkpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdFbGxpcHNlRWxlbWVudCwg
U1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1B
VEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0VsbGlwc2VFbGVt
ZW50LCBTVkdOYW1lczo6Y3hBdHRyLCBDeCwgY3gpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdU
SChTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTmFtZXM6OmN5QXR0ciwgQ3ksIGN5KQorICAgIERFRklO
RV9BTklNQVRFRF9MRU5HVEgoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR05hbWVzOjpyeEF0dHIsIFJ4
LCByeCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdO
YW1lczo6cnlBdHRyLCBSeSwgcnkpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHRWxs
aXBzZUVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9E
RUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR0VsbGlwc2VFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKGN4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGN5KQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHJ4KQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKHJ5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAgUkVHSVNU
RVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5J
TUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHRWxsaXBzZUVsZW1lbnQ6OlNWR0VsbGlwc2VF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
ICAgICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQpA
QCAtNDgsNiArNTksNyBAQCBpbmxpbmUgU1ZHRWxsaXBzZUVsZW1lbnQ6OlNWR0VsbGlwc2VFbGVt
CiAgICAgLCBtX3J5KExlbmd0aE1vZGVIZWlnaHQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
U1ZHTmFtZXM6OmVsbGlwc2VUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0Zv
clNWR0VsbGlwc2VFbGVtZW50KCk7CiB9ICAgIAogCiBQYXNzUmVmUHRyPFNWR0VsbGlwc2VFbGVt
ZW50PiBTVkdFbGxpcHNlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTE0OSw3NCArMTYxLDYgQEAgdm9pZCBTVkdFbGxp
cHNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQogCi12b2lkIFNWR0VsbGlwc2VFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgp
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplQ3goKTsKLSAgICAgICAgc3luY2hyb25pemVDeSgpOwot
ICAgICAgICBzeW5jaHJvbml6ZVJ4KCk7Ci0gICAgICAgIHN5bmNocm9uaXplUnkoKTsKLSAgICAg
ICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rl
c3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRl
KGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmN4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6
ZUN4KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmN5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUN5KCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJ4QXR0cikgewotICAg
ICAgICBzeW5jaHJvbml6ZVJ4KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJ5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVJ5KCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25p
emVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAg
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdFbGxpcHNlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1
cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdFbGxpcHNlRWxl
bWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk7ICAgIAotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6Y3hBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpjeUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnJ4QXR0ciwgQW5pbWF0ZWRMZW5n
dGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cnlBdHRy
LCBBbmltYXRlZExlbmd0aCk7Ci19Ci0KIHZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnRvUGF0aERh
dGEoUGF0aCYgcGF0aCkgY29uc3QKIHsKICAgICBBU1NFUlQocGF0aC5pc0VtcHR5KCkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDIyICs0NywyMyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCB2b2lk
IHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxh
dGl2ZUxlbmd0aHMoKSBjb25zdDsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0
aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN4LCBjeCkKLSAgICBERUNMQVJFX0FO
SU1BVEVEX0xFTkdUSChDeSwgY3kpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUngsIHJ4
KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFJ5LCByeSkKLQotICAgIC8vIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJ
Tl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRWxsaXBzZUVsZW1lbnQpCisgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN4LCBjeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9MRU5HVEgoQ3ksIGN5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSeCwgcngp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFJ5LCByeSkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisg
ICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1
cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0
czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lz
dGVtTGFuZ3VhZ2UodGhpcyk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSwxNiArMzEsMjUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmlt
YXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUJs
ZW5kRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4xLCBpbjEpCi1ERUZJTkVfQU5JTUFURURf
U1RSSU5HKFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdOYW1lczo6aW4yQXR0ciwgSW4yLCBpbjIpCi1E
RUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHRkVCbGVuZEVsZW1lbnQsIFNWR05hbWVzOjpt
b2RlQXR0ciwgTW9kZSwgbW9kZSwgQmxlbmRNb2RlVHlwZSkKK0JFR0lOX0RFRklORV9BTklNQVRF
RF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUJsZW5kRWxlbWVu
dCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4xLCBpbjEpCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklO
RyhTVkdGRUJsZW5kRWxlbWVudCwgU1ZHTmFtZXM6OmluMkF0dHIsIEluMiwgaW4yKQorICAgIERF
RklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRUJsZW5kRWxlbWVudCwgU1ZHTmFtZXM6Om1v
ZGVBdHRyLCBNb2RlLCBtb2RlLCBCbGVuZE1vZGVUeXBlKQorRU5EX0RFRklORV9BTklNQVRFRF9Q
Uk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVCbGVu
ZEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGluMikKKyAgICBSRUdJU1RFUl9MT0NB
TF9BTklNQVRFRF9QUk9QRVJUWShtb2RlKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJ
U1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdGRUJsZW5kRWxlbWVudDo6U1ZH
RkVCbGVuZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05h
bWUsIGRvY3VtZW50KQogICAgICwgbV9tb2RlKEZFQkxFTkRfTU9ERV9OT1JNQUwpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlQmxlbmRUYWcpKTsKKyAgICByZWdpc3RlckFu
aW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFQmxlbmRFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8
U1ZHRkVCbGVuZEVsZW1lbnQ+IFNWR0ZFQmxlbmRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTE5LDU1ICsxMjgsNiBA
QCB2b2lkIFNWR0ZFQmxlbmRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1l
ID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVNb2RlKCk7Ci0gICAgICAgIHN5
bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSW4yKCk7Ci0gICAgICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRy
TmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0
cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjptb2RlQXR0cikgewotICAg
ICAgICBzeW5jaHJvbml6ZU1vZGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4x
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmluMkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVJbjIoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgU1ZHRkVCbGVuZEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKTsgICAgCi0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluMkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om1vZGVBdHRyLCBBbmltYXRlZEVu
dW1lcmF0aW9uKTsKLX0KLQogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQmxlbmRFbGVt
ZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRl
cikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVj
dEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgJ
KHJldmlzaW9uIDkwNTYwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDE1ICs4MCwxMyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIGJv
b2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAotICAg
IC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURf
U1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMiwgaW4yKQot
ICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oTW9kZSwgbW9kZSwgQmxlbmRNb2RlVHlw
ZSkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVCbGVuZEVsZW1l
bnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjIsIGluMikKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9FTlVNRVJBVElPTihNb2RlLCBtb2RlLCBCbGVuZE1vZGVUeXBlKQorICAgIEVORF9ERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAkocmV2
aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNiArMzEsMjUgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1B
VEVEX1NUUklORyhTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4x
LCBpbjEpCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQsIFNWR05hbWVzOjp0eXBlQXR0ciwgVHlwZSwgdHlwZSwgQ29sb3JNYXRyaXhUeXBlKQotREVG
SU5FX0FOSU1BVEVEX05VTUJFUl9MSVNUKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTVkdOYW1l
czo6dmFsdWVzQXR0ciwgVmFsdWVzLCB2YWx1ZXMpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJP
UEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklORV9BTklNQVRFRF9FTlVN
RVJBVElPTihTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OnR5cGVBdHRyLCBUeXBl
LCB0eXBlLCBDb2xvck1hdHJpeFR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9MSVNU
KFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6dmFsdWVzQXR0ciwgVmFsdWVzLCB2
YWx1ZXMpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdGRUNvbG9yTWF0cml4RWxlbWVudCkKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkodHlwZSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh2
YWx1ZXMpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BF
UlRJRVMKIAogaW5saW5lIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpTVkdGRUNvbG9yTWF0cml4
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9j
dW1lbnQpCiAgICAgLCBtX3R5cGUoRkVDT0xPUk1BVFJJWF9UWVBFX1VOS05PV04pCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlQ29sb3JNYXRyaXhUYWcpKTsKKyAgICByZWdp
c3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KCk7CiB9CiAK
IFBhc3NSZWZQdHI8U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ+IFNWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQpAQCAtMTI0LDU1ICsxMzMsNiBAQCB2b2lkIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50Ojpz
dmdBdHRyaWJ1CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAg
c3luY2hyb25pemVUeXBlKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHN5
bmNocm9uaXplVmFsdWVzKCk7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAg
ICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJv
cGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjp0eXBlQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVR5cGUoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnZhbHVlc0F0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVWYWx1ZXMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKLQotICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6
ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Omlu
QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6dHlwZUF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dmFsdWVzQXR0ciwgQW5pbWF0ZWROdW1i
ZXJMaXN0KTsKLX0KLQogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZp
bHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVm
ZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50LmgJKHJldmlzaW9uIDkwNTYwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDE1ICs3NywxMyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVm
ZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0
ZXIqKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xB
UkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVS
QVRJT04oVHlwZSwgdHlwZSwgQ29sb3JNYXRyaXhUeXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURf
TlVNQkVSX0xJU1QoVmFsdWVzLCB2YWx1ZXMpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX1NUUklORyhJbjEsIGluMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElP
TihUeXBlLCB0eXBlLCBDb2xvck1hdHJpeFR5cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
TlVNQkVSX0xJU1QoVmFsdWVzLCB2YWx1ZXMpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCShyZXZp
c2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEzICszNCwyMCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotREVGSU5F
X0FOSU1BVEVEX1NUUklORyhTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCwgU1ZHTmFtZXM6
OmluQXR0ciwgSW4xLCBpbjEpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAg
IERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQsIFNW
R05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVT
CisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVDb21wb25lbnRUcmFu
c2ZlckVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQor
ICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAK
IGlubGluZSBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6U1ZHRkVDb21wb25lbnRUcmFu
c2ZlckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUs
IGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUNvbXBvbmVu
dFRyYW5zZmVyVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTcyLDQx
ICs3OSw2IEBAIHZvaWQgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OnBhcnMKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxl
bWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
LXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6
ZUluMSgpOwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5
bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJO
YW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjphdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAg
IHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQot
ewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0K
LQogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50
OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikK
IHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5
SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9u
ZW50VHJhbnNmZXJFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDEzICszNywxMSBAQCBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
IG1pc3NpbmcuCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSop
OwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0
eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAg
ICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVDb21wb25lbnRUcmFuc2Zl
ckVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAg
IEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0
ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwyMCArMzEsMzMgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5F
X0FOSU1BVEVEX1NUUklORyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIs
IEluMSwgaW4xKQotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQs
IFNWR05hbWVzOjppbjJBdHRyLCBJbjIsIGluMikKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElP
TihTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjpvcGVyYXRvckF0dHIsIF9vcGVyYXRv
ciwgX29wZXJhdG9yLCBDb21wb3NpdGVPcGVyYXRpb25UeXBlKQotREVGSU5FX0FOSU1BVEVEX05V
TUJFUihTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjprMUF0dHIsIEsxLCBrMSkKLURF
RklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6azJB
dHRyLCBLMiwgazIpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFQ29tcG9zaXRlRWxlbWVu
dCwgU1ZHTmFtZXM6OmszQXR0ciwgSzMsIGszKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdG
RUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjprNEF0dHIsIEs0LCBrNCkKK0JFR0lOX0RFRklO
RV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUNv
bXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklORV9B
TklNQVRFRF9TVFJJTkcoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6aW4yQXR0ciwg
SW4yLCBpbjIpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFQ29tcG9zaXRl
RWxlbWVudCwgU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciwgX29wZXJhdG9yLCBfb3BlcmF0b3IsIENv
bXBvc2l0ZU9wZXJhdGlvblR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUNv
bXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjprMUF0dHIsIEsxLCBrMSkKKyAgICBERUZJTkVfQU5J
TUFURURfTlVNQkVSKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6OmsyQXR0ciwgSzIs
IGsyKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBT
VkdOYW1lczo6azNBdHRyLCBLMywgazMpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdG
RUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjprNEF0dHIsIEs0LCBrNCkKK0VORF9ERUZJTkVf
QU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR0ZFQ29tcG9zaXRlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWShpbjEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4yKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKF9vcGVyYXRvcikKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrMSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShrMikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrMykK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrNCkKKyAgICBSRUdJU1RFUl9Q
QVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHRkVD
b21wb3NpdGVFbGVtZW50OjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9fb3BlcmF0b3Io
RkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZFUikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdO
YW1lczo6ZmVDb21wb3NpdGVUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0Zv
clNWR0ZFQ29tcG9zaXRlRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFQ29tcG9zaXRl
RWxlbWVudD4gU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTYwLDgzICsxNzMsNiBAQCB2b2lk
IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6c3ZnQXR0cmlidXRlCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9
PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplX29wZXJhdG9yKCk7Ci0gICAgICAg
IHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSW4yKCk7Ci0gICAgICAgIHN5
bmNocm9uaXplSzEoKTsKLSAgICAgICAgc3luY2hyb25pemVLMigpOwotICAgICAgICBzeW5jaHJv
bml6ZUszKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSzQoKTsKLSAgICAgICAgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
czo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0cikgewotICAgICAg
ICBzeW5jaHJvbml6ZV9vcGVyYXRvcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVJ
bjEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6aW4yQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMigpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjprMUF0dHIpIHsKLSAg
ICAgICAgc3luY2hyb25pemVLMSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjprMkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVLMigp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
OjprM0F0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVLMygpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjprNEF0dHIpIHsKLSAgICAgICAg
c3luY2hyb25pemVLNCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRUNvbXBv
c2l0ZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXA7Ci19Ci0KLXZvaWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7ICAg
IAotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBB
bmltYXRlZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjppbjJBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjpvcGVyYXRvckF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwot
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6azFBdHRyLCBBbmlt
YXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjprMkF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OmszQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6azRBdHRyLCBBbmltYXRlZE51bWJlcik7Ci19
Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAg
IEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEo
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCShy
ZXZpc2lvbiA5MDU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtODUsMTkgKzg1LDE3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwg
Ym9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRl
ckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCi0gICAgLy8gQW5p
bWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkco
SW4xLCBpbjEpCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4yLCBpbjIpCi0gICAgREVD
TEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihfb3BlcmF0b3IsIF9vcGVyYXRvciwgQ29tcG9zaXRl
T3BlcmF0aW9uVHlwZSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLMSwgazEpCi0gICAg
REVDTEFSRV9BTklNQVRFRF9OVU1CRVIoSzIsIGsyKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVN
QkVSKEszLCBrMykKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLNCwgazQpCisgICAgQkVH
SU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfU1RSSU5HKEluMiwgaW4yKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1F
UkFUSU9OKF9vcGVyYXRvciwgX29wZXJhdG9yLCBDb21wb3NpdGVPcGVyYXRpb25UeXBlKQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLMSwgazEpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfTlVNQkVSKEsyLCBrMikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoSzMs
IGszKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLNCwgazQpCisgICAgRU5EX0RF
Q0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDI1ICszNCw0MyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25z
Ci1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdO
YW1lczo6aW5BdHRyLCBJbjEsIGluMSkKLURFRklORV9BTklNQVRFRF9JTlRFR0VSX01VTFRJUExF
X1dSQVBQRVJTKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6b3JkZXJBdHRy
LCBvcmRlclhJZGVudGlmaWVyKCksIE9yZGVyWCwgb3JkZXJYKQotREVGSU5FX0FOSU1BVEVEX0lO
VEVHRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQsIFNWR05h
bWVzOjpvcmRlckF0dHIsIG9yZGVyWUlkZW50aWZpZXIoKSwgT3JkZXJZLCBvcmRlclkpIAotREVG
SU5FX0FOSU1BVEVEX05VTUJFUl9MSVNUKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdO
YW1lczo6a2VybmVsTWF0cml4QXR0ciwgS2VybmVsTWF0cml4LCBrZXJuZWxNYXRyaXgpCi1ERUZJ
TkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6
ZGl2aXNvckF0dHIsIERpdmlzb3IsIGRpdmlzb3IpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6Ymlhc0F0dHIsIEJpYXMsIGJpYXMp
Ci1ERUZJTkVfQU5JTUFURURfSU5URUdFUihTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZH
TmFtZXM6OnRhcmdldFhBdHRyLCBUYXJnZXRYLCB0YXJnZXRYKQotREVGSU5FX0FOSU1BVEVEX0lO
VEVHRVIoU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQsIFNWR05hbWVzOjp0YXJnZXRZQXR0ciwg
VGFyZ2V0WSwgdGFyZ2V0WSkKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OmVkZ2VNb2RlQXR0ciwgRWRnZU1vZGUsIGVkZ2VN
b2RlLCBFZGdlTW9kZVR5cGUpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQ
RVJTKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0
aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpLCBLZXJuZWxVbml0TGVuZ3RoWCwg
a2VybmVsVW5pdExlbmd0aFgpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQ
RVJTKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0
aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigpLCBLZXJuZWxVbml0TGVuZ3RoWSwg
a2VybmVsVW5pdExlbmd0aFkpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQWxwaGFBdHRyLCBQcmVzZXJ2ZUFscGhh
LCBwcmVzZXJ2ZUFscGhhKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBE
RUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1l
czo6aW5BdHRyLCBJbjEsIGluMSkKKyAgICBERUZJTkVfQU5JTUFURURfSU5URUdFUl9NVUxUSVBM
RV9XUkFQUEVSUyhTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6Om9yZGVyQXR0
ciwgb3JkZXJYSWRlbnRpZmllcigpLCBPcmRlclgsIG9yZGVyWCkKKyAgICBERUZJTkVfQU5JTUFU
RURfSU5URUdFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwg
U1ZHTmFtZXM6Om9yZGVyQXR0ciwgb3JkZXJZSWRlbnRpZmllcigpLCBPcmRlclksIG9yZGVyWSkg
CisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9MSVNUKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50LCBTVkdOYW1lczo6a2VybmVsTWF0cml4QXR0ciwgS2VybmVsTWF0cml4LCBrZXJuZWxNYXRy
aXgpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dCwgU1ZHTmFtZXM6OmRpdmlzb3JBdHRyLCBEaXZpc29yLCBkaXZpc29yKQorICAgIERFRklORV9B
TklNQVRFRF9OVU1CRVIoU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQsIFNWR05hbWVzOjpiaWFz
QXR0ciwgQmlhcywgYmlhcykKKyAgICBERUZJTkVfQU5JTUFURURfSU5URUdFUihTVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OnRhcmdldFhBdHRyLCBUYXJnZXRYLCB0YXJnZXRY
KQorICAgIERFRklORV9BTklNQVRFRF9JTlRFR0VSKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
LCBTVkdOYW1lczo6dGFyZ2V0WUF0dHIsIFRhcmdldFksIHRhcmdldFkpCisgICAgREVGSU5FX0FO
SU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6
ZWRnZU1vZGVBdHRyLCBFZGdlTW9kZSwgZWRnZU1vZGUsIEVkZ2VNb2RlVHlwZSkKKyAgICBERUZJ
TkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50LCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhY
SWRlbnRpZmllcigpLCBLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgpCisgICAg
REVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudCwgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBrZXJuZWxVbml0TGVu
Z3RoWUlkZW50aWZpZXIoKSwgS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZKQor
ICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBT
VkdOYW1lczo6cHJlc2VydmVBbHBoYUF0dHIsIFByZXNlcnZlQWxwaGEsIHByZXNlcnZlQWxwaGEp
CitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCkKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkob3JkZXJYKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKG9y
ZGVyWSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrZXJuZWxNYXRyaXgp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZGl2aXNvcikKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShiaWFzKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKHRhcmdldFgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkodGFyZ2V0WSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShlZGdl
TW9kZSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrZXJuZWxVbml0TGVu
Z3RoWCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrZXJuZWxVbml0TGVu
Z3RoWSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShwcmVzZXJ2ZUFscGhh
KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVT
CiAKIGlubGluZSBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6U1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRv
Y3VtZW50KQogICAgICwgbV9lZGdlTW9kZShFREdFTU9ERV9EVVBMSUNBVEUpCiB7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlQ29udm9sdmVNYXRyaXhUYWcpKTsKKyAgICByZWdp
c3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50KCk7CiB9
CiAKIFBhc3NSZWZQdHI8U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ+IFNWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQpAQCAtMjQ1LDg4ICsyNjMsNiBAQCB2b2lkIFNWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50OjpzdmdBdHRyCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQg
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkp
IHsKLSAgICAgICAgc3luY2hyb25pemVFZGdlTW9kZSgpOwotICAgICAgICBzeW5jaHJvbml6ZURp
dmlzb3IoKTsKLSAgICAgICAgc3luY2hyb25pemVCaWFzKCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
VGFyZ2V0WCgpOwotICAgICAgICBzeW5jaHJvbml6ZVRhcmdldFkoKTsKLSAgICAgICAgc3luY2hy
b25pemVLZXJuZWxVbml0TGVuZ3RoWCgpOwotICAgICAgICBzeW5jaHJvbml6ZUtlcm5lbFVuaXRM
ZW5ndGhZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUHJlc2VydmVBbHBoYSgpOwotICAgICAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHko
YXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZWRnZU1vZGVBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplRWRnZU1vZGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZGl2aXNvckF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVEaXZpc29yKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmJpYXNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
QmlhcygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjp0YXJnZXRYQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVRhcmdldFgoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dGFy
Z2V0WUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVUYXJnZXRZKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5n
dGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplS2VybmVsVW5pdExlbmd0aFgoKTsKLSAgICAg
ICAgc3luY2hyb25pemVLZXJuZWxVbml0TGVuZ3RoWSgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFscGhhQXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZVByZXNlcnZlQWxwaGEoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNf
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6b3JkZXJBdHRyLCBBbmltYXRlZE51bWJlck9w
dGlvbmFsTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6Omtlcm5lbE1hdHJpeEF0dHIsIEFuaW1hdGVkTnVtYmVyTGlzdCk7Ci0gICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpkaXZpc29yQXR0ciwgQW5pbWF0ZWROdW1i
ZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Ymlhc0F0
dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OnRhcmdldFhBdHRyLCBBbmltYXRlZEludGVnZXIpOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dGFyZ2V0WUF0dHIsIEFuaW1hdGVkSW50ZWdl
cik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpvcGVyYXRv
ckF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0
aW9uYWxOdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6cHJlc2VydmVBbHBoYUF0dHIsIEFuaW1hdGVkQm9vbGVhbik7Ci19Ci0KIFBhc3NSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZm
ZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCShy
ZXZpc2lvbiA5MDU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw5ICs3OCw2IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1
YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZp
bHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCiAgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgb3JkZXJYSWRlbnRpZmllcigpOwpAQCAtODgsMTkgKzg1
LDIwIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYga2VybmVsVW5p
dExlbmd0aFhJZGVudGlmaWVyKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYga2Vy
bmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCk7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBk
ZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoT3JkZXJYLCBvcmRlclgpCi0gICAgREVDTEFSRV9BTklN
QVRFRF9JTlRFR0VSKE9yZGVyWSwgb3JkZXJZKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVS
X0xJU1QoS2VybmVsTWF0cml4LCBrZXJuZWxNYXRyaXgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9O
VU1CRVIoRGl2aXNvciwgZGl2aXNvcikKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihCaWFz
LCBiaWFzKQotICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihUYXJnZXRYLCB0YXJnZXRYKQot
ICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihUYXJnZXRZLCB0YXJnZXRZKQotICAgIERFQ0xB
UkVfQU5JTUFURURfRU5VTUVSQVRJT04oRWRnZU1vZGUsIGVkZ2VNb2RlLCBFZGdlTW9kZVR5cGUp
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVu
aXRMZW5ndGhYKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEtlcm5lbFVuaXRMZW5ndGhZ
LCBrZXJuZWxVbml0TGVuZ3RoWSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oUHJlc2Vy
dmVBbHBoYSwgcHJlc2VydmVBbHBoYSkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfU1RSSU5HKEluMSwgaW4xKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoT3Jk
ZXJYLCBvcmRlclgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihPcmRlclksIG9y
ZGVyWSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVJfTElTVChLZXJuZWxNYXRyaXgs
IGtlcm5lbE1hdHJpeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoRGl2aXNvciwg
ZGl2aXNvcikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQmlhcywgYmlhcykKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9JTlRFR0VSKFRhcmdldFgsIHRhcmdldFgpCisgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihUYXJnZXRZLCB0YXJnZXRZKQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKEVkZ2VNb2RlLCBlZGdlTW9kZSwgRWRnZU1vZGVUeXBl
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWCwga2Vy
bmVsVW5pdExlbmd0aFgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEtlcm5lbFVu
aXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9C
T09MRUFOKFByZXNlcnZlQWxwaGEsIHByZXNlcnZlQWxwaGEpCisgICAgRU5EX0RFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEyICszNSwyMiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJ
TkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6
OmluQXR0ciwgSW4xLCBpbjEpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIsIERpZmZ1c2VDb25z
dGFudCwgZGlmZnVzZUNvbnN0YW50KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyLCBTdXJmYWNlU2Nh
bGUsIHN1cmZhY2VTY2FsZSkKLURFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBF
UlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0
aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpLCBLZXJuZWxVbml0TGVuZ3RoWCwg
a2VybmVsVW5pdExlbmd0aFgpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQ
RVJTKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5n
dGhBdHRyLCBrZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIoKSwgS2VybmVsVW5pdExlbmd0aFks
IGtlcm5lbFVuaXRMZW5ndGhZKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAg
ICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgU1ZH
TmFtZXM6OmluQXR0ciwgSW4xLCBpbjEpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpkaWZmdXNlQ29uc3RhbnRBdHRyLCBE
aWZmdXNlQ29uc3RhbnQsIGRpZmZ1c2VDb25zdGFudCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVN
QkVSKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0
dHIsIFN1cmZhY2VTY2FsZSwgc3VyZmFjZVNjYWxlKQorICAgIERFRklORV9BTklNQVRFRF9OVU1C
RVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1l
czo6a2VybmVsVW5pdExlbmd0aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpLCBL
ZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgpCisgICAgREVGSU5FX0FOSU1BVEVE
X05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNW
R05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwga2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVy
KCksIEtlcm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKK0VORF9ERUZJTkVfQU5J
TUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWShpbjEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZGlmZnVz
ZUNvbnN0YW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHN1cmZhY2VT
Y2FsZSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrZXJuZWxVbml0TGVu
Z3RoWCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrZXJuZWxVbml0TGVu
Z3RoWSkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVS
VElFUwogCiBpbmxpbmUgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpTVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05h
bWUsIGRvY3VtZW50KQpAQCAtNDgsNiArNTgsNyBAQCBpbmxpbmUgU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50OjpTVkdGCiAgICAgLCBtX3N1cmZhY2VTY2FsZSgxKQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKFNWR05hbWVzOjpmZURpZmZ1c2VMaWdodGluZ1RhZykpOworICAgIHJlZ2lzdGVy
QW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50KCk7CiB9CiAK
IFBhc3NSZWZQdHI8U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50PiBTVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCkBAIC0xOTQsNjcgKzIwNSw2IEBAIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50OjpsaWdodEUKICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1l
KTsKIH0KIAotdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1l
ID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVTdXJmYWNlU2NhbGUoKTsKLSAgICAgICAgc3luY2hyb25pemVEaWZmdXNlQ29uc3Rh
bnQoKTsKLSAgICAgICAgc3luY2hyb25pemVLZXJuZWxVbml0TGVuZ3RoWCgpOwotICAgICAgICBz
eW5jaHJvbml6ZUtlcm5lbFVuaXRMZW5ndGhZKCk7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJO
YW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5
bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpsaWdodGluZ19jb2xvckF0dHIpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIpIHsKLSAgICAgICAgc3luY2hy
b25pemVTdXJmYWNlU2NhbGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6ZGlmZnVzZUNvbnN0YW50QXR0cikgewotICAgICAgICBzeW5j
aHJvbml6ZURpZmZ1c2VDb25zdGFudCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0cikgewotICAgICAg
ICBzeW5jaHJvbml6ZUtlcm5lbFVuaXRMZW5ndGhYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplS2Vy
bmVsVW5pdExlbmd0aFkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXApOyAgICAKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6ZGlmZnVzZUNvbnN0YW50QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwot
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6c3VyZmFjZVNjYWxl
QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxO
dW1iZXIpOwotfQotCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIq
IGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdl
dEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVz
ZUxpZ2h0aW5nRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDIwICs0MywxOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0
cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAg
IHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0
dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGtl
cm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIGtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJv
cGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEp
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoRGlmZnVzZUNvbnN0YW50LCBkaWZmdXNlQ29u
c3RhbnQpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3VyZmFjZVNjYWxlLCBzdXJmYWNl
U2NhbGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFgsIGtl
cm5lbFVuaXRMZW5ndGhYKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEtlcm5lbFVuaXRM
ZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIo
RGlmZnVzZUNvbnN0YW50LCBkaWZmdXNlQ29uc3RhbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfTlVNQkVSKFN1cmZhY2VTY2FsZSwgc3VyZmFjZVNjYWxlKQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEtlcm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0
TGVuZ3RoWSkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFj
ZW1lbnRNYXBFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzAsMTIgKzMwLDIyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0
ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKLURFRklORV9B
TklNQVRFRF9TVFJJTkcoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBTVkdOYW1lczo6aW4y
QXR0ciwgSW4yLCBpbjIpCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHRkVEaXNwbGFj
ZW1lbnRNYXBFbGVtZW50LCBTVkdOYW1lczo6eENoYW5uZWxTZWxlY3RvckF0dHIsIFhDaGFubmVs
U2VsZWN0b3IsIHhDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxTZWxlY3RvclR5cGUpCi1ERUZJTkVf
QU5JTUFURURfRU5VTUVSQVRJT04oU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBTVkdOYW1l
czo6eUNoYW5uZWxTZWxlY3RvckF0dHIsIFlDaGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0
b3IsIENoYW5uZWxTZWxlY3RvclR5cGUpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OnNjYWxlQXR0ciwgU2NhbGUsIHNjYWxlKQor
QkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfU1RS
SU5HKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4xLCBp
bjEpCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQsIFNWR05hbWVzOjppbjJBdHRyLCBJbjIsIGluMikKKyAgICBERUZJTkVfQU5JTUFURURfRU5V
TUVSQVRJT04oU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBTVkdOYW1lczo6eENoYW5uZWxT
ZWxlY3RvckF0dHIsIFhDaGFubmVsU2VsZWN0b3IsIHhDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxT
ZWxlY3RvclR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OnlDaGFubmVsU2VsZWN0b3JBdHRyLCBZQ2hhbm5l
bFNlbGVjdG9yLCB5Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0b3JUeXBlKQorICAgIERF
RklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBTVkdOYW1l
czo6c2NhbGVBdHRyLCBTY2FsZSwgc2NhbGUpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJ
RVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGluMikKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWSh4Q2hhbm5lbFNlbGVjdG9yKQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKHlDaGFubmVsU2VsZWN0b3IpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkoc2NhbGUpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JF
R0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudDo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTQzLDYgKzUzLDcgQEAgaW5s
aW5lIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6U1ZHRgogICAgICwgbV95Q2hhbm5lbFNl
bGVjdG9yKENIQU5ORUxfQSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVE
aXNwbGFjZW1lbnRNYXBUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudD4gU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTM5LDY5
ICsxNTAsNiBAQCB2b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6c3ZnQXR0CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQot
ewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
WENoYW5uZWxTZWxlY3RvcigpOwotICAgICAgICBzeW5jaHJvbml6ZVlDaGFubmVsU2VsZWN0b3Io
KTsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgc3luY2hyb25pemVJbjIoKTsK
LSAgICAgICAgc3luY2hyb25pemVTY2FsZSgpOwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFt
ZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5j
aHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eENoYW5uZWxTZWxlY3RvckF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVYQ2hhbm5lbFNlbGVjdG9yKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlDaGFubmVsU2VsZWN0b3JBdHRyKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplWUNoYW5uZWxTZWxlY3RvcigpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMigp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
OjpzY2FsZUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVTY2FsZSgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAg
cmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewot
ICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluMkF0dHIsIEFuaW1hdGVk
U3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhD
aGFubmVsU2VsZWN0b3JBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlDaGFubmVsU2VsZWN0b3JBdHRyLCBBbmlt
YXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OnNjYWxlQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotfQotCiBQYXNzUmVmUHRyPEZpbHRl
ckVmZmVjdD4gU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3Qq
IGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAkocmV2
aXNpb24gOTA1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDE3ICs3OCwxNSBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0
dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsK
IAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5J
TUFURURfU1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMiwg
aW4yKQotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oWENoYW5uZWxTZWxlY3Rvciwg
eENoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSkKLSAgICBERUNMQVJFX0FOSU1B
VEVEX0VOVU1FUkFUSU9OKFlDaGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0b3IsIENoYW5u
ZWxTZWxlY3RvclR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU2NhbGUsIHNjYWxl
KQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjIsIGluMikKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9FTlVNRVJBVElPTihYQ2hhbm5lbFNlbGVjdG9yLCB4Q2hhbm5lbFNlbGVjdG9y
LCBDaGFubmVsU2VsZWN0b3JUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFU
SU9OKFlDaGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxTZWxlY3RvclR5
cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFNjYWxlLCBzY2FsZSkKKyAgICBF
TkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFk
b3dFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDIyIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklO
RV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVEcm9wU2hhZG93RWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0
ciwgSW4xLCBpbjEpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQsIFNWR05hbWVzOjpkeEF0dHIsIER4LCBkeCkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZH
RkVEcm9wU2hhZG93RWxlbWVudCwgU1ZHTmFtZXM6OmR5QXR0ciwgRHksIGR5KQotREVGSU5FX0FO
SU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRURyb3BTaGFkb3dFbGVtZW50LCBT
VkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwgc3RkRGV2aWF0aW9uWElkZW50aWZpZXIoKSwgU3Rk
RGV2aWF0aW9uWCwgc3RkRGV2aWF0aW9uWCkKLURFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQ
TEVfV1JBUFBFUlMoU1ZHRkVEcm9wU2hhZG93RWxlbWVudCwgU1ZHTmFtZXM6OnN0ZERldmlhdGlv
bkF0dHIsIHN0ZERldmlhdGlvbllJZGVudGlmaWVyKCksIFN0ZERldmlhdGlvblksIHN0ZERldmlh
dGlvblkpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklN
QVRFRF9TVFJJTkcoU1ZHRkVEcm9wU2hhZG93RWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4x
LCBpbjEpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRURyb3BTaGFkb3dFbGVtZW50
LCBTVkdOYW1lczo6ZHhBdHRyLCBEeCwgZHgpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihT
VkdGRURyb3BTaGFkb3dFbGVtZW50LCBTVkdOYW1lczo6ZHlBdHRyLCBEeSwgZHkpCisgICAgREVG
SU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRURyb3BTaGFkb3dFbGVt
ZW50LCBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwgc3RkRGV2aWF0aW9uWElkZW50aWZpZXIo
KSwgU3RkRGV2aWF0aW9uWCwgc3RkRGV2aWF0aW9uWCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVN
QkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQsIFNWR05hbWVzOjpz
dGREZXZpYXRpb25BdHRyLCBzdGREZXZpYXRpb25ZSWRlbnRpZmllcigpLCBTdGREZXZpYXRpb25Z
LCBzdGREZXZpYXRpb25ZKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lO
X1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVEcm9wU2hhZG93RWxlbWVudCkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjEpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkoZHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkoZHkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc3RkRGV2aWF0
aW9uWCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShzdGREZXZpYXRpb25Z
KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVT
CiAKIGlubGluZSBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpTVkdGRURyb3BTaGFkb3dFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkK
QEAgLTQ3LDYgKzU3LDcgQEAgaW5saW5lIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OlNWR0ZFRHJv
cAogICAgICwgbV9zdGREZXZpYXRpb25ZKDIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZH
TmFtZXM6OmZlRHJvcFNoYWRvd1RhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVz
Rm9yU1ZHRkVEcm9wU2hhZG93RWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQ+IFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xNDAsNDcgKzE1MSw2IEBA
IHZvaWQgU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3ZnQXR0cmlidXQKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRy
TmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplU3RkRGV2aWF0aW9uWCgp
OwotICAgICAgICBzeW5jaHJvbml6ZVN0ZERldmlhdGlvblkoKTsKLSAgICAgICAgc3luY2hyb25p
emVEeCgpOwotICAgICAgICBzeW5jaHJvbml6ZUR5KCk7Ci0gICAgICAgIHN5bmNocm9uaXplSW4x
KCk7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
OjpzdGREZXZpYXRpb25BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplU3RkRGV2aWF0aW9uWCgp
OwotICAgICAgICBzeW5jaHJvbml6ZVN0ZERldmlhdGlvblkoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmR4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUR4KCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmR5
QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUR5KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQogUGFzc1JlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRl
ckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSB0aGlzLT5yZW5kZXJlcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9w
U2hhZG93RWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRURyb3BTaGFkb3dFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDE4ICszOSwxOCBA
QCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKICAgICAKICAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBzdGREZXZpYXRpb25YSWRlbnRpZmllcigpOwogICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIHN0ZERldmlhdGlvbllJZGVudGlmaWVyKCk7CiAgICAgCi0gICAgLy8gQW5pbWF0
ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4x
LCBpbjEpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoRHgsIGR4KQotICAgIERFQ0xBUkVf
QU5JTUFURURfTlVNQkVSKER5LCBkeSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihTdGRE
ZXZpYXRpb25YLCBzdGREZXZpYXRpb25YKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFN0
ZERldmlhdGlvblksIHN0ZERldmlhdGlvblkpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfU1RSSU5HKEluMSwgaW4xKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihEeCwg
ZHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKER5LCBkeSkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9OVU1CRVIoU3RkRGV2aWF0aW9uWCwgc3RkRGV2aWF0aW9uWCkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3RkRGV2aWF0aW9uWSwgc3RkRGV2aWF0aW9uWSkK
KyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogICAgIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDE5ICs3NCw2IEBAIFBhc3NSZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRUZsb29kRWxlbWUKICAgICByZXR1cm4gRkVGbG9vZDo6Y3JlYXRlKGZp
bHRlciwgY29sb3IsIG9wYWNpdHkpOwogfQogCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYg
U1ZHRkVGbG9vZEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVGbG9vZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKSk7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJM
RShGSUxURVJTKQotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVGbG9vZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVGbG9vZEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVGbG9vZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsNiBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIFNWR0ZFRmxvb2RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVj
dEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSk7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciosIEZpbHRlciopOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MiwxNSArMzIsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9w
ZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQotREVGSU5FX0FOSU1BVEVEX05V
TUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQsIFNWR05hbWVz
OjpzdGREZXZpYXRpb25BdHRyLCBzdGREZXZpYXRpb25YSWRlbnRpZmllcigpLCBTdGREZXZpYXRp
b25YLCBzdGREZXZpYXRpb25YKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQ
UEVSUyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQsIFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRy
LCBzdGREZXZpYXRpb25ZSWRlbnRpZmllcigpLCBTdGREZXZpYXRpb25ZLCBzdGREZXZpYXRpb25Z
KQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURf
U1RSSU5HKFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4xLCBp
bjEpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRUdh
dXNzaWFuQmx1ckVsZW1lbnQsIFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRyLCBzdGREZXZpYXRp
b25YSWRlbnRpZmllcigpLCBTdGREZXZpYXRpb25YLCBzdGREZXZpYXRpb25YKQorICAgIERFRklO
RV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50LCBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwgc3RkRGV2aWF0aW9uWUlkZW50aWZpZXIo
KSwgU3RkRGV2aWF0aW9uWSwgc3RkRGV2aWF0aW9uWSkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJP
UEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjEp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc3RkRGV2aWF0aW9uWCkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShzdGREZXZpYXRpb25ZKQorICAgIFJF
R0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGlu
ZSBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlR2F1c3NpYW5CbHVyVGFnKSk7CisgICAg
cmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQoKTsK
IH0KIAogUGFzc1JlZlB0cjxTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ+IFNWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKQEAgLTExOSw1MCArMTI4LDYgQEAgdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQ6OnN2Z0F0dHJpYgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewot
ICAgICAgICBzeW5jaHJvbml6ZVN0ZERldmlhdGlvblgoKTsKLSAgICAgICAgc3luY2hyb25pemVT
dGREZXZpYXRpb25ZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRy
TmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0
cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplU3RkRGV2aWF0aW9uWCgpOwotICAgICAgICBzeW5jaHJv
bml6ZVN0ZERldmlhdGlvblkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
LQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAs
ICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9p
ZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcp
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6c3RkRGV2aWF0
aW9uQXR0ciwgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7Ci19Ci0KIFBhc3NSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVj
dCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCShyZXZpc2lv
biA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTggKzQwLDE2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVh
bCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciosIEZpbHRlciopOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3RkRGV2aWF0
aW9uWElkZW50aWZpZXIoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdGREZXZp
YXRpb25ZSWRlbnRpZmllcigpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRp
b25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCi0gICAgREVDTEFSRV9B
TklNQVRFRF9OVU1CRVIoU3RkRGV2aWF0aW9uWCwgc3RkRGV2aWF0aW9uWCkKLSAgICBERUNMQVJF
X0FOSU1BVEVEX05VTUJFUihTdGREZXZpYXRpb25ZLCBzdGREZXZpYXRpb25ZKQorICAgIEJFR0lO
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX05VTUJFUihTdGREZXZpYXRpb25YLCBzdGREZXZpYXRpb25YKQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX05VTUJFUihTdGREZXZpYXRpb25ZLCBzdGREZXZpYXRpb25ZKQorICAg
IEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAkocmV2
aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxNSArMzksMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1BS
RVNFUlZFQVNQRUNUUkFUSU8oU1ZHRkVJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFz
cGVjdFJhdGlvQXR0ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykK
LURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVJbWFnZUVsZW1lbnQsIFhMaW5rTmFtZXM6Omhy
ZWZBdHRyLCBIcmVmLCBocmVmKQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHRkVJbWFnZUVs
ZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklO
RV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNU
UkFUSU8oU1ZHRkVJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0
ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICBERUZJTkVf
QU5JTUFURURfU1RSSU5HKFNWR0ZFSW1hZ2VFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwg
SHJlZiwgaHJlZikKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdGRUltYWdlRWxlbWVu
dCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorRU5EX0RFRklORV9BTklN
QVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZH
RkVJbWFnZUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocHJl
c2VydmVBc3BlY3RSYXRpbykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSho
cmVmKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVE
X1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZFSW1hZ2VFbGVtZW50OjpTVkdGRUltYWdlRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAg
OiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQp
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlSW1hZ2VUYWcpKTsKKyAgICBy
ZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFSW1hZ2VFbGVtZW50KCk7CiB9CiAKIFBh
c3NSZWZQdHI8U1ZHRkVJbWFnZUVsZW1lbnQ+IFNWR0ZFSW1hZ2VFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTM4LDU0
ICsxNDcsNiBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYg
KGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVQcmVzZXJ2ZUFz
cGVjdFJhdGlvKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICBzeW5jaHJv
bml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6
c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9ICAg
Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplUHJlc2VydmVBc3BlY3RSYXRpbygpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFSW1hZ2VF
bGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwot
fQotCi12b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0
ciwgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQog
dm9pZCBTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQog
ewogICAgIGlmICghaW5Eb2N1bWVudCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
SW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1h
Z2VFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
SW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDkgKzUxLDYgQEAgcHJpdmF0ZToK
ICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmly
dHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAg
dmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Uq
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhh
c2hTZXQ8S1VSTD4mKSBjb25zdDsKQEAgLTYxLDE0ICs1OCwxMSBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCByZXF1ZXN0SW1hZ2VSZXNvdXJjZSgpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkg
ZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFBy
ZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCi0KLSAgICAvLyBTVkdVUklS
ZWZlcmVuY2UKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQotCi0gICAg
Ly8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9P
TEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRUltYWdlRWxlbWVu
dCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZl
QXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfU1RSSU5HKEhyZWYsIGhyZWYpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAg
IEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZEltYWdlPiBtX2NhY2hlZEltYWdlOwogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4g
bV90YXJnZXRJbWFnZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50
LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwyMiArMzYsMzcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FO
SU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OmF6aW11dGhBdHRyLCBB
emltdXRoLCBhemltdXRoKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVu
dCwgU1ZHTmFtZXM6OmVsZXZhdGlvbkF0dHIsIEVsZXZhdGlvbiwgZWxldmF0aW9uKQotREVGSU5F
X0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4
KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OnlB
dHRyLCBZLCB5KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZH
TmFtZXM6OnpBdHRyLCBaLCB6KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxl
bWVudCwgU1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIsIFBvaW50c0F0WCwgcG9pbnRzQXRYKQotREVG
SU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OnBvaW50c0F0
WUF0dHIsIFBvaW50c0F0WSwgcG9pbnRzQXRZKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdG
RUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OnBvaW50c0F0WkF0dHIsIFBvaW50c0F0WiwgcG9pbnRz
QXRaKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6
OnNwZWN1bGFyRXhwb25lbnRBdHRyLCBTcGVjdWxhckV4cG9uZW50LCBzcGVjdWxhckV4cG9uZW50
KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6Omxp
bWl0aW5nQ29uZUFuZ2xlQXR0ciwgTGltaXRpbmdDb25lQW5nbGUsIGxpbWl0aW5nQ29uZUFuZ2xl
KQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURf
TlVNQkVSKFNWR0ZFTGlnaHRFbGVtZW50LCBTVkdOYW1lczo6YXppbXV0aEF0dHIsIEF6aW11dGgs
IGF6aW11dGgpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwg
U1ZHTmFtZXM6OmVsZXZhdGlvbkF0dHIsIEVsZXZhdGlvbiwgZWxldmF0aW9uKQorICAgIERFRklO
RV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwg
eCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFTGlnaHRFbGVtZW50LCBTVkdOYW1l
czo6eUF0dHIsIFksIHkpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxl
bWVudCwgU1ZHTmFtZXM6OnpBdHRyLCBaLCB6KQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIo
U1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjpwb2ludHNBdFhBdHRyLCBQb2ludHNBdFgsIHBv
aW50c0F0WCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFTGlnaHRFbGVtZW50LCBT
VkdOYW1lczo6cG9pbnRzQXRZQXR0ciwgUG9pbnRzQXRZLCBwb2ludHNBdFkpCisgICAgREVGSU5F
X0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OnBvaW50c0F0WkF0
dHIsIFBvaW50c0F0WiwgcG9pbnRzQXRaKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZH
RkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciwgU3BlY3VsYXJF
eHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNW
R0ZFTGlnaHRFbGVtZW50LCBTVkdOYW1lczo6bGltaXRpbmdDb25lQW5nbGVBdHRyLCBMaW1pdGlu
Z0NvbmVBbmdsZSwgbGltaXRpbmdDb25lQW5nbGUpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRUxpZ2h0RWxl
bWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShhemltdXRoKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGVsZXZhdGlvbikKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVE
X1BST1BFUlRZKHkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeikKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShwb2ludHNBdFgpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocG9pbnRzQXRZKQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKHBvaW50c0F0WikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShzcGVjdWxhckV4cG9uZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVE
X1BST1BFUlRZKGxpbWl0aW5nQ29uZUFuZ2xlKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BF
UlRJRVMKIAogU1ZHRkVMaWdodEVsZW1lbnQ6OlNWR0ZFTGlnaHRFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0VsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3NwZWN1bGFyRXhwb25lbnQoMSkKIHsKKyAgICBy
ZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFTGlnaHRFbGVtZW50KCk7CiB9CiAKIFNW
R0ZFTGlnaHRFbGVtZW50KiBTVkdGRUxpZ2h0RWxlbWVudDo6ZmluZExpZ2h0RWxlbWVudChjb25z
dCBTVkdFbGVtZW50KiBzdmdFbGVtZW50KQpAQCAtMTk0LDEwMiArMjA5LDYgQEAgdm9pZCBTVkdG
RUxpZ2h0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCi12b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFt
ZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplQXppbXV0aCgpOwotICAgICAgICBzeW5jaHJvbml6
ZUVsZXZhdGlvbigpOwotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgc3luY2hyb25p
emVZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWigpOwotICAgICAgICBzeW5jaHJvbml6ZVBvaW50
c0F0WCgpOwotICAgICAgICBzeW5jaHJvbml6ZVBvaW50c0F0WSgpOwotICAgICAgICBzeW5jaHJv
bml6ZVBvaW50c0F0WigpOwotICAgICAgICBzeW5jaHJvbml6ZVNwZWN1bGFyRXhwb25lbnQoKTsK
LSAgICAgICAgc3luY2hyb25pemVMaW1pdGluZ0NvbmVBbmdsZSgpOwotICAgICAgICBTVkdFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAg
IFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIAotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6YXppbXV0aEF0
dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVBemltdXRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmVsZXZhdGlvbkF0dHIpIHsKLSAg
ICAgICAgc3luY2hyb25pemVFbGV2YXRpb24oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25p
emVYKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp6QXR0cikgewotICAgICAg
ICBzeW5jaHJvbml6ZVooKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXRYQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVBv
aW50c0F0WCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjpwb2ludHNBdFlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplUG9pbnRzQXRZ
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnBvaW50c0F0WkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVQb2ludHNBdFooKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3Bl
Y3VsYXJFeHBvbmVudEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVTcGVjdWxhckV4cG9uZW50
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUxpbWl0aW5n
Q29uZUFuZ2xlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFTGlnaHRFbGVt
ZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQot
Ci12b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjphemltdXRoQXR0ciwgQW5pbWF0ZWRO
dW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZWxl
dmF0aW9uQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZE51bWJlcik7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp6QXR0ciwgQW5pbWF0
ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
cG9pbnRzQXRYQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChTVkdOYW1lczo6cG9pbnRzQXRZQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cG9pbnRzQXRaQXR0ciwg
QW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0ciwg
QW5pbWF0ZWROdW1iZXIpOwotfQotCiB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0
ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgU1ZHRWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hp
bGRDb3VudERlbHRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5o
CShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwyMiArNDIsMjAgQEAgcHJpdmF0ZToKICAgICBib29s
IGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0g
ZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50
IGNoaWxkQ291bnREZWx0YSA9IDApOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFy
YXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQXppbXV0aCwgYXppbXV0aCkKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihFbGV2YXRpb24sIGVsZXZhdGlvbikKLSAgICBERUNM
QVJFX0FOSU1BVEVEX05VTUJFUihYLCB4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFks
IHkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoWiwgeikKLSAgICBERUNMQVJFX0FOSU1B
VEVEX05VTUJFUihQb2ludHNBdFgsIHBvaW50c0F0WCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05V
TUJFUihQb2ludHNBdFksIHBvaW50c0F0WSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihQ
b2ludHNBdFosIHBvaW50c0F0WikKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihTcGVjdWxh
ckV4cG9uZW50LCBzcGVjdWxhckV4cG9uZW50KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVS
KExpbWl0aW5nQ29uZUFuZ2xlLCBsaW1pdGluZ0NvbmVBbmdsZSkKKyAgICBCRUdJTl9ERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVMaWdodEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfTlVNQkVSKEF6aW11dGgsIGF6aW11dGgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfTlVNQkVSKEVsZXZhdGlvbiwgZWxldmF0aW9uKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X05VTUJFUihYLCB4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihZLCB5KQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihaLCB6KQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX05VTUJFUihQb2ludHNBdFgsIHBvaW50c0F0WCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9OVU1CRVIoUG9pbnRzQXRZLCBwb2ludHNBdFkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
TlVNQkVSKFBvaW50c0F0WiwgcG9pbnRzQXRaKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05V
TUJFUihTcGVjdWxhckV4cG9uZW50LCBzcGVjdWxhckV4cG9uZW50KQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX05VTUJFUihMaW1pdGluZ0NvbmVBbmdsZSwgbGltaXRpbmdDb25lQW5nbGUpCisg
ICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDE5ICs2MCw2IEBAIFBhc3NSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBTVkdGRU1lcmdlRWxlbWUKICAgICByZXR1cm4gZWZmZWN0LnJlbGVhc2UoKTsKIH0KIAot
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFTWVyZ2VFbGVtZW50OjphdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAg
IHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0ZFTWVy
Z2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkpOwotfQotCiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQs
NiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0ZFTWVyZ2VFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogfTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwxOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFU
RURfU1RSSU5HKFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4xLCBp
bjEpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRF
RF9TVFJJTkcoU1ZHRkVNZXJnZU5vZGVFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGlu
MSkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklN
QVRFRF9QUk9QRVJUSUVTKFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NB
TF9BTklNQVRFRF9QUk9QRVJUWShpbjEpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElF
UwogCiBpbmxpbmUgU1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpTVkdGRU1lcmdlTm9kZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDog
U1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShT
VkdOYW1lczo6ZmVNZXJnZU5vZGVUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGll
c0ZvclNWR0ZFTWVyZ2VOb2RlRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFTWVyZ2VO
b2RlRWxlbWVudD4gU1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtOTQsMzggKzEwMCw2IEBAIHZv
aWQgU1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpzdmdBdHRyaWJ1dGUKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFTWVyZ2VOb2Rl
RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsK
LX0KLQotdm9pZCBTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpCi17Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKS5zZXQoU1ZHTmFt
ZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotfQotCi12b2lkIFNWR0ZFTWVyZ2VOb2RlRWxl
bWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
LXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6
ZUluMSgpOwotICAgICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1l
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHko
YXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfSAgIAotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCiB9CiAK
ICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVy
Z2VOb2RlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1l
cmdlTm9kZUVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEyICszNywxMCBA
QCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRp
b25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCisgICAgQkVHSU5fREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDE3ICszMSwyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5H
KFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQotREVG
SU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQsIFNWR05hbWVz
OjpvcGVyYXRvckF0dHIsIF9vcGVyYXRvciwgX29wZXJhdG9yLCBNb3JwaG9sb2d5T3BlcmF0b3JU
eXBlKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRU1vcnBo
b2xvZ3lFbGVtZW50LCBTVkdOYW1lczo6cmFkaXVzQXR0ciwgcmFkaXVzWElkZW50aWZpZXIoKSwg
UmFkaXVzWCwgcmFkaXVzWCkKLURFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBF
UlMoU1ZHRkVNb3JwaG9sb2d5RWxlbWVudCwgU1ZHTmFtZXM6OnJhZGl1c0F0dHIsIHJhZGl1c1lJ
ZGVudGlmaWVyKCksIFJhZGl1c1ksIHJhZGl1c1kpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJP
UEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4xLCBpbjEpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1F
UkFUSU9OKFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQsIFNWR05hbWVzOjpvcGVyYXRvckF0dHIsIF9v
cGVyYXRvciwgX29wZXJhdG9yLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlKQorICAgIERFRklORV9B
TklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVNb3JwaG9sb2d5RWxlbWVudCwg
U1ZHTmFtZXM6OnJhZGl1c0F0dHIsIHJhZGl1c1hJZGVudGlmaWVyKCksIFJhZGl1c1gsIHJhZGl1
c1gpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRU1v
cnBob2xvZ3lFbGVtZW50LCBTVkdOYW1lczo6cmFkaXVzQXR0ciwgcmFkaXVzWUlkZW50aWZpZXIo
KSwgUmFkaXVzWSwgcmFkaXVzWSkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitC
RUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKF9vcGVyYXRvcikKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWShyYWRpdXNYKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKHJhZGl1c1kpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1B
VEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OlNWR0ZFTW9y
cGhvbG9neUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05h
bWUsIGRvY3VtZW50KQogICAgICwgbV9fb3BlcmF0b3IoRkVNT1JQSE9MT0dZX09QRVJBVE9SX0VS
T0RFKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZU1vcnBob2xvZ3lUYWcp
KTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFTW9ycGhvbG9neUVsZW1l
bnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRU1vcnBob2xvZ3lFbGVtZW50PiBTVkdGRU1vcnBo
b2xvZ3lFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQpAQCAtMTQ1LDU3ICsxNTUsNiBAQCB2b2lkIFNWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQg
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewot
ICAgICAgICBzeW5jaHJvbml6ZV9vcGVyYXRvcigpOwotICAgICAgICBzeW5jaHJvbml6ZUluMSgp
OwotICAgICAgICBzeW5jaHJvbml6ZVJhZGl1c1goKTsKLSAgICAgICAgc3luY2hyb25pemVSYWRp
dXNZKCk7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3lu
Y2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5h
bWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjpvcGVyYXRvckF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVfb3BlcmF0b3IoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5B
dHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJhZGl1c0F0dHIpIHsKLSAgICAgICAg
c3luY2hyb25pemVSYWRpdXNYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUmFkaXVzWSgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjphdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwot
ICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0ZF
TW9ycGhvbG9neUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0g
ICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
ID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6b3BlcmF0b3JBdHRyLCBBbmlt
YXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OnJhZGl1c0F0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOwotfQotCiBQ
YXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6YnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmls
dGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAkocmV2
aXNpb24gOTA1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCwxOSArNzAsMTcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCBi
b29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVy
RWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiByYWRpdXNYSWRlbnRpZmllcigpOwogICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIHJhZGl1c1lJZGVudGlmaWVyKCk7CiAKLSAgICAvLyBBbmltYXRlZCBw
cm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGlu
MSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKF9vcGVyYXRvciwgX29wZXJhdG9y
LCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFJh
ZGl1c1gsIHJhZGl1c1gpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoUmFkaXVzWSwgcmFk
aXVzWSkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oX29wZXJhdG9yLCBfb3BlcmF0b3Is
IE1vcnBob2xvZ3lPcGVyYXRvclR5cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVS
KFJhZGl1c1gsIHJhZGl1c1gpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFJhZGl1
c1ksIHJhZGl1c1kpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zm
c2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zm
c2V0RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFT2Zmc2V0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE1ICszMSwyNCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25z
Ci1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFT2Zmc2V0RWxlbWVudCwgU1ZHTmFtZXM6Omlu
QXR0ciwgSW4xLCBpbjEpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFT2Zmc2V0RWxlbWVu
dCwgU1ZHTmFtZXM6OmR4QXR0ciwgRHgsIGR4KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdG
RU9mZnNldEVsZW1lbnQsIFNWR05hbWVzOjpkeUF0dHIsIER5LCBkeSkKK0JFR0lOX0RFRklORV9B
TklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRU9mZnNl
dEVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklORV9BTklNQVRF
RF9OVU1CRVIoU1ZHRkVPZmZzZXRFbGVtZW50LCBTVkdOYW1lczo6ZHhBdHRyLCBEeCwgZHgpCisg
ICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRU9mZnNldEVsZW1lbnQsIFNWR05hbWVzOjpk
eUF0dHIsIER5LCBkeSkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9S
RUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFT2Zmc2V0RWxlbWVudCkKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoZHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
ZHkpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJ
RVMKIAogaW5saW5lIFNWR0ZFT2Zmc2V0RWxlbWVudDo6U1ZHRkVPZmZzZXRFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVPZmZzZXRUYWcpKTsKKyAgICByZWdpc3Rl
ckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFT2Zmc2V0RWxlbWVudCgpOwogfQogCiBQYXNzUmVm
UHRyPFNWR0ZFT2Zmc2V0RWxlbWVudD4gU1ZHRkVPZmZzZXRFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTAxLDU1ICsx
MTAsNiBAQCB2b2lkIFNWR0ZFT2Zmc2V0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVPZmZzZXRFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChh
dHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRHgoKTsKLSAgICAg
ICAgc3luY2hyb25pemVEeSgpOwotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHko
YXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZHhBdHRyKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplRHgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZHlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRHko
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIFNWR0ZFT2Zmc2V0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6ZHhBdHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpkeUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsK
LX0KLQogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAg
RmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgp
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgJKHJldmlzaW9u
IDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCwxNSArMzgsMTMgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9y
dGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5j
aHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmls
dGVyKik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNM
QVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJF
UihEeCwgZHgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoRHksIGR5KQorICAgIEJFR0lO
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRU9mZnNldEVsZW1lbnQpCisgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX05VTUJFUihEeCwgZHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKER5LCBk
eSkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzYsMTMgKzM2LDI0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQg
cHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4xLCBpbjEpCi1ERUZJTkVfQU5J
TUFURURfTlVNQkVSKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpzcGVj
dWxhckNvbnN0YW50QXR0ciwgU3BlY3VsYXJDb25zdGFudCwgc3BlY3VsYXJDb25zdGFudCkKLURF
RklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFt
ZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyLCBTcGVjdWxhckV4cG9uZW50LCBzcGVjdWxhckV4cG9u
ZW50KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50
LCBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0ciwgU3VyZmFjZVNjYWxlLCBzdXJmYWNlU2NhbGUp
Ci1ERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwga2VybmVsVW5p
dExlbmd0aFhJZGVudGlmaWVyKCksIEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3Ro
WCkKLURFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBrZXJuZWxV
bml0TGVuZ3RoWUlkZW50aWZpZXIoKSwgS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5n
dGhZKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFU
RURfU1RSSU5HKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIs
IEluMSwgaW4xKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudCwgU1ZHTmFtZXM6OnNwZWN1bGFyQ29uc3RhbnRBdHRyLCBTcGVjdWxhckNvbnN0
YW50LCBzcGVjdWxhckNvbnN0YW50KQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyLCBT
cGVjdWxhckV4cG9uZW50LCBzcGVjdWxhckV4cG9uZW50KQorICAgIERFRklORV9BTklNQVRFRF9O
VU1CRVIoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OnN1cmZhY2VTY2Fs
ZUF0dHIsIFN1cmZhY2VTY2FsZSwgc3VyZmFjZVNjYWxlKQorICAgIERFRklORV9BTklNQVRFRF9O
VU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZH
TmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBrZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIo
KSwgS2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhYKQorICAgIERFRklORV9BTklN
QVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dCwgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBrZXJuZWxVbml0TGVuZ3RoWUlkZW50
aWZpZXIoKSwgS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZKQorRU5EX0RFRklO
RV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShpbjEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
c3BlY3VsYXJDb25zdGFudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShz
cGVjdWxhckV4cG9uZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHN1
cmZhY2VTY2FsZSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrZXJuZWxV
bml0TGVuZ3RoWCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrZXJuZWxV
bml0TGVuZ3RoWSkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCitFTkRfUkVHSVNURVJfQU5JTUFURURf
UFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6U1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXModGFnTmFtZSwgZG9jdW1lbnQpCkBAIC01MSw2ICs2Miw3IEBAIGlubGluZSBTVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50OjpTVkcKICAgICAsIG1fc3VyZmFjZVNjYWxlKDEpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlU3BlY3VsYXJMaWdodGluZ1RhZykpOworICAg
IHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ+IFNWR0ZF
U3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0yMDQsNzEgKzIxNiw2IEBAIHZvaWQgU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6bGlnaHQKICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFu
Z2VkKGF0dHJOYW1lKTsKIH0KIAotdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Ojpz
eW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAg
IGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7
Ci0gICAgICAgIHN5bmNocm9uaXplU3VyZmFjZVNjYWxlKCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
U3BlY3VsYXJDb25zdGFudCgpOwotICAgICAgICBzeW5jaHJvbml6ZVNwZWN1bGFyRXhwb25lbnQo
KTsKLSAgICAgICAgc3luY2hyb25pemVLZXJuZWxVbml0TGVuZ3RoWCgpOwotICAgICAgICBzeW5j
aHJvbml6ZUtlcm5lbFVuaXRMZW5ndGhZKCk7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1l
KSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNo
cm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVJ
bjEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6c3VyZmFjZVNjYWxlQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVN1cmZhY2VTY2Fs
ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjpzcGVjdWxhckNvbnN0YW50QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVNwZWN1bGFy
Q29uc3RhbnQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVT
cGVjdWxhckV4cG9uZW50KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplS2VybmVsVW5pdExlbmd0aFgoKTsKLSAgICAgICAgc3luY2hyb25pemVLZXJuZWxVbml0
TGVuZ3RoWSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwOwotfQotCi12b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKLQotICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Zmls
bFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0
ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6c3BlY3VsYXJDb25zdGFudEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRy
LCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwgQW5p
bWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7Ci19Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBm
aWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0
MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCShyZXZpc2lv
biA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDIxICs0MiwxOSBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFs
IGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpOwogICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigp
OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9B
TklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3Bl
Y3VsYXJDb25zdGFudCwgc3BlY3VsYXJDb25zdGFudCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05V
TUJFUihTcGVjdWxhckV4cG9uZW50LCBzcGVjdWxhckV4cG9uZW50KQotICAgIERFQ0xBUkVfQU5J
TUFURURfTlVNQkVSKFN1cmZhY2VTY2FsZSwgc3VyZmFjZVNjYWxlKQotICAgIERFQ0xBUkVfQU5J
TUFURURfTlVNQkVSKEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWCkKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0
aFkpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4x
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihTcGVjdWxhckNvbnN0YW50LCBzcGVj
dWxhckNvbnN0YW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihTcGVjdWxhckV4
cG9uZW50LCBzcGVjdWxhckV4cG9uZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJF
UihTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9O
VU1CRVIoS2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhYKQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0aFkp
CisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAko
cmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURf
U1RSSU5HKFNWR0ZFVGlsZUVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorQkVH
SU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5H
KFNWR0ZFVGlsZUVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorRU5EX0RFRklO
RV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHRkVUaWxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShpbjEpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BF
UlRJRVMKIAogaW5saW5lIFNWR0ZFVGlsZUVsZW1lbnQ6OlNWR0ZFVGlsZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZVRpbGVUYWcpKTsKKyAgICByZWdpc3RlckFu
aW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFVGlsZUVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxT
VkdGRVRpbGVFbGVtZW50PiBTVkdGRVRpbGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtODYsNDEgKzkzLDYgQEAgdm9p
ZCBTVkdGRVRpbGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZwogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogfQogCi12b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFu
eVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1l
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVU
aWxlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cDsKLX0KLQotdm9pZCBTVkdGRVRpbGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAg
ICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3Ry
aW5nKTsKLX0KLQogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFVGlsZUVsZW1lbnQ6OmJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewog
ICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChp
bjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgJKHJldmlzaW9u
IDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsMTMgKzM3LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRl
ciopOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFS
RV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR0ZFVGlsZUVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RS
SU5HKEluMSwgaW4xKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1
cmJ1bGVuY2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVUdXJidWxlbmNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwx
MyArMzAsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0
eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhT
VkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0dHIsIGJhc2VG
cmVxdWVuY3lYSWRlbnRpZmllcigpLCBCYXNlRnJlcXVlbmN5WCwgYmFzZUZyZXF1ZW5jeVgpCi1E
RUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQsIFNWR05hbWVzOjpiYXNlRnJlcXVlbmN5QXR0ciwgYmFzZUZyZXF1ZW5jeVlJZGVudGlm
aWVyKCksIEJhc2VGcmVxdWVuY3lZLCBiYXNlRnJlcXVlbmN5WSkKLURFRklORV9BTklNQVRFRF9J
TlRFR0VSKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIFNWR05hbWVzOjpudW1PY3RhdmVzQXR0ciwg
TnVtT2N0YXZlcywgbnVtT2N0YXZlcykKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OnNlZWRBdHRyLCBTZWVkLCBzZWVkKQotREVGSU5FX0FO
SU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIFNWR05hbWVzOjpzdGl0
Y2hUaWxlc0F0dHIsIFN0aXRjaFRpbGVzLCBzdGl0Y2hUaWxlcywgU1ZHU3RpdGNoT3B0aW9ucykK
LURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdO
YW1lczo6dHlwZUF0dHIsIFR5cGUsIHR5cGUsIFR1cmJ1bGVuY2VUeXBlKQorQkVHSU5fREVGSU5F
X0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExF
X1dSQVBQRVJTKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIFNWR05hbWVzOjpiYXNlRnJlcXVlbmN5
QXR0ciwgYmFzZUZyZXF1ZW5jeVhJZGVudGlmaWVyKCksIEJhc2VGcmVxdWVuY3lYLCBiYXNlRnJl
cXVlbmN5WCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQsIFNWR05hbWVzOjpiYXNlRnJlcXVlbmN5QXR0ciwgYmFzZUZy
ZXF1ZW5jeVlJZGVudGlmaWVyKCksIEJhc2VGcmVxdWVuY3lZLCBiYXNlRnJlcXVlbmN5WSkKKyAg
ICBERUZJTkVfQU5JTUFURURfSU5URUdFUihTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1l
czo6bnVtT2N0YXZlc0F0dHIsIE51bU9jdGF2ZXMsIG51bU9jdGF2ZXMpCisgICAgREVGSU5FX0FO
SU1BVEVEX05VTUJFUihTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6c2VlZEF0dHIs
IFNlZWQsIHNlZWQpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQsIFNWR05hbWVzOjpzdGl0Y2hUaWxlc0F0dHIsIFN0aXRjaFRpbGVzLCBzdGl0
Y2hUaWxlcywgU1ZHU3RpdGNoT3B0aW9ucykKKyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJ
T04oU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OnR5cGVBdHRyLCBUeXBlLCB0eXBl
LCBUdXJidWxlbmNlVHlwZSkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJ
Tl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoYmFzZUZyZXF1ZW5jeVgpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoYmFzZUZyZXF1ZW5jeVkpCisgICAgUkVH
SVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkobnVtT2N0YXZlcykKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShzZWVkKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVE
X1BST1BFUlRZKHN0aXRjaFRpbGVzKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKHR5cGUpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BS
T1BFUlRJRVMKIAogaW5saW5lIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OlNWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRv
Y3VtZW50KQpAQCAtNDUsNiArNTYsNyBAQCBpbmxpbmUgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6
U1ZHRkVUdXJiCiAgICAgLCBtX3R5cGUoRkVUVVJCVUxFTkNFX1RZUEVfVFVSQlVMRU5DRSkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVUdXJidWxlbmNlVGFnKSk7CisgICAg
cmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRVR1cmJ1bGVuY2VFbGVtZW50KCk7CiB9
CiAKIFBhc3NSZWZQdHI8U1ZHRkVUdXJidWxlbmNlRWxlbWVudD4gU1ZHRkVUdXJidWxlbmNlRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKQEAgLTE2MCw3MSArMTcyLDYgQEAgdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50Ojpz
dmdBdHRyaWJ1dAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0ZFVHVy
YnVsZW5jZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAg
c3luY2hyb25pemVUeXBlKCk7Ci0gICAgICAgIHN5bmNocm9uaXplU3RpdGNoVGlsZXMoKTsKLSAg
ICAgICAgc3luY2hyb25pemVCYXNlRnJlcXVlbmN5WCgpOwotICAgICAgICBzeW5jaHJvbml6ZUJh
c2VGcmVxdWVuY3lZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplU2VlZCgpOwotICAgICAgICBzeW5j
aHJvbml6ZU51bU9jdGF2ZXMoKTsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0g
ICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQ
cm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplVHlwZSgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
OjpzdGl0Y2hUaWxlc0F0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVTdGl0Y2hUaWxlcygpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpi
YXNlRnJlcXVlbmN5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUJhc2VGcmVxdWVuY3lYKCk7
Ci0gICAgICAgIHN5bmNocm9uaXplQmFzZUZyZXF1ZW5jeVkoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c2VlZEF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVTZWVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om51bU9jdGF2ZXNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplTnVtT2N0YXZlcygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRVR1cmJ1
bGVuY2VFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwOwotfQotCi12b2lkIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKLQotICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbFBhc3Nl
ZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmJhc2VGcmVxdWVu
Y3lBdHRyLCBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om51bU9jdGF2ZXNBdHRyLCBBbmltYXRlZEludGVn
ZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6c2VlZEF0
dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OnN0aXRjaFRpbGVzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp0eXBlQXR0ciwgQW5pbWF0ZWRF
bnVtZXJhdGlvbik7Ci19Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAg
ICAgaWYgKGJhc2VGcmVxdWVuY3lYKCkgPCAwIHx8IGJhc2VGcmVxdWVuY3lZKCkgPCAwKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCShyZXZpc2lv
biA5MDU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNSwyMSArMTA1LDE5IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgYm9v
bCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCiAgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYmFzZUZyZXF1ZW5jeVhJZGVudGlmaWVyKCk7CiAg
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYmFzZUZyZXF1ZW5jeVlJZGVudGlmaWVyKCk7
CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FO
SU1BVEVEX05VTUJFUihCYXNlRnJlcXVlbmN5WCwgYmFzZUZyZXF1ZW5jeVgpCi0gICAgREVDTEFS
RV9BTklNQVRFRF9OVU1CRVIoQmFzZUZyZXF1ZW5jeVksIGJhc2VGcmVxdWVuY3lZKQotICAgIERF
Q0xBUkVfQU5JTUFURURfSU5URUdFUihOdW1PY3RhdmVzLCBudW1PY3RhdmVzKQotICAgIERFQ0xB
UkVfQU5JTUFURURfTlVNQkVSKFNlZWQsIHNlZWQpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVN
RVJBVElPTihTdGl0Y2hUaWxlcywgc3RpdGNoVGlsZXMsIFNWR1N0aXRjaE9wdGlvbnMpCi0gICAg
REVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihUeXBlLCB0eXBlLCBUdXJidWxlbmNlVHlwZSkK
KyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVUdXJidWxlbmNlRWxl
bWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQmFzZUZyZXF1ZW5jeVgsIGJh
c2VGcmVxdWVuY3lYKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihCYXNlRnJlcXVl
bmN5WSwgYmFzZUZyZXF1ZW5jeVkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihO
dW1PY3RhdmVzLCBudW1PY3RhdmVzKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihT
ZWVkLCBzZWVkKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFN0aXRjaFRp
bGVzLCBzdGl0Y2hUaWxlcywgU1ZHU3RpdGNoT3B0aW9ucykKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9FTlVNRVJBVElPTihUeXBlLCB0eXBlLCBUdXJidWxlbmNlVHlwZSkKKyAgICBFTkRfREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzYsMjMgKzM2LDM0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5p
bWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihT
VkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyLCBGaWx0ZXJVbml0cywg
ZmlsdGVyVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCi1ERUZJTkVfQU5JTUFURURf
RU5VTUVSQVRJT04oU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OnByaW1pdGl2ZVVuaXRzQXR0
ciwgUHJpbWl0aXZlVW5pdHMsIHByaW1pdGl2ZVVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlKQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6
eEF0dHIsIFgsIHgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlckVsZW1lbnQsIFNW
R05hbWVzOjp5QXR0ciwgWSwgeSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRmlsdGVyRWxl
bWVudCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgV2lkdGgsIHdpZHRoKQotREVGSU5FX0FOSU1BVEVE
X0xFTkdUSChTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBo
ZWlnaHQpCi1ERUZJTkVfQU5JTUFURURfSU5URUdFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGaWx0
ZXJFbGVtZW50LCBTVkdOYW1lczo6ZmlsdGVyUmVzQXR0ciwgZmlsdGVyUmVzWElkZW50aWZpZXIo
KSwgRmlsdGVyUmVzWCwgZmlsdGVyUmVzWCkKLURFRklORV9BTklNQVRFRF9JTlRFR0VSX01VTFRJ
UExFX1dSQVBQRVJTKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpmaWx0ZXJSZXNBdHRyLCBm
aWx0ZXJSZXNZSWRlbnRpZmllcigpLCBGaWx0ZXJSZXNZLCBmaWx0ZXJSZXNZKQotREVGSU5FX0FO
SU1BVEVEX1NUUklORyhTVkdGaWx0ZXJFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJl
ZiwgaHJlZikKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05h
bWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9Q
Uk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZpbHRlckVsZW1l
bnQsIFNWR05hbWVzOjpmaWx0ZXJVbml0c0F0dHIsIEZpbHRlclVuaXRzLCBmaWx0ZXJVbml0cywg
U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJ
T04oU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OnByaW1pdGl2ZVVuaXRzQXR0ciwgUHJpbWl0
aXZlVW5pdHMsIHByaW1pdGl2ZVVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQorICAg
IERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRy
LCBYLCB4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRmlsdGVyRWxlbWVudCwgU1ZH
TmFtZXM6OnlBdHRyLCBZLCB5KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRmlsdGVy
RWxlbWVudCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgV2lkdGgsIHdpZHRoKQorICAgIERFRklORV9B
TklNQVRFRF9MRU5HVEgoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhl
aWdodCwgaGVpZ2h0KQorICAgIERFRklORV9BTklNQVRFRF9JTlRFR0VSX01VTFRJUExFX1dSQVBQ
RVJTKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpmaWx0ZXJSZXNBdHRyLCBmaWx0ZXJSZXNY
SWRlbnRpZmllcigpLCBGaWx0ZXJSZXNYLCBmaWx0ZXJSZXNYKQorICAgIERFRklORV9BTklNQVRF
RF9JTlRFR0VSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpm
aWx0ZXJSZXNBdHRyLCBmaWx0ZXJSZXNZSWRlbnRpZmllcigpLCBGaWx0ZXJSZXNZLCBmaWx0ZXJS
ZXNZKQorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRmlsdGVyRWxlbWVudCwgWExpbmtO
YW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4o
U1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRy
LCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQor
RU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHRmlsdGVyRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShmaWx0ZXJVbml0cykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWShwcmltaXRpdmVVbml0cykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WSh4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHkpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkod2lkdGgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoaGVpZ2h0KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKGZpbHRlclJlc1gpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZmls
dGVyUmVzWSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShocmVmKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHRmlsdGVy
RWxlbWVudDo6U1ZHRmlsdGVyRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KQotICAgICwgU1ZHVVJJUmVmZXJlbmNlKCkKLSAgICAsIFNWR0xhbmdTcGFjZSgpCi0gICAg
LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKICAgICAsIG1fZmlsdGVyVW5pdHMoU1ZH
VW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKQogICAgICwgbV9wcmlt
aXRpdmVVbml0cyhTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpCiAg
ICAgLCBtX3goTGVuZ3RoTW9kZVdpZHRoLCAiLTEwJSIpCkBAIC02Myw2ICs3NCw3IEBAIGlubGlu
ZSBTVkdGaWx0ZXJFbGVtZW50OjpTVkdGaWx0ZXJFbGVtZW4KICAgICAvLyBTcGVjOiBJZiB0aGUg
eC95IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFs
dWUgb2YgIi0xMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIC8vIFNwZWM6IElmIHRoZSB3aWR0aC9o
ZWlnaHQgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2
YWx1ZSBvZiAiMTIwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZH
TmFtZXM6OmZpbHRlclRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZH
RmlsdGVyRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZpbHRlckVsZW1lbnQ+IFNWR0Zp
bHRlckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCkBAIC0xODksOTggKzIwMSw2IEBAIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmcKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCh0cnVlKTsK
IH0KIAotdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgp
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAg
ICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwot
ICAgICAgICBzeW5jaHJvbml6ZUZpbHRlclVuaXRzKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUHJp
bWl0aXZlVW5pdHMoKTsKLSAgICAgICAgc3luY2hyb25pemVGaWx0ZXJSZXNYKCk7Ci0gICAgICAg
IHN5bmNocm9uaXplRmlsdGVyUmVzWSgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIFNW
R1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFt
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikgewotICAgICAgICBz
eW5jaHJvbml6ZVkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aGVpZ2h0QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpmaWx0ZXJVbml0c0F0
dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVGaWx0ZXJVbml0cygpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwcmltaXRpdmVVbml0c0F0
dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVQcmltaXRpdmVVbml0cygpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpmaWx0ZXJSZXNBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplRmlsdGVyUmVzWCgpOwotICAgICAgICBzeW5jaHJvbml6
ZUZpbHRlclJlc1koKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAg
ICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBTVkdGaWx0ZXJFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0ZpbHRlckVsZW1lbnQ6OmZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpmaWx0ZXJVbml0c0F0dHIsIEFu
aW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6cHJpbWl0aXZlVW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExl
bmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0
ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpmaWx0ZXJSZXNBdHRy
LCBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQog
dm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJz
ZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50
RGVsdGEpCiB7CiAgICAgU1ZHU3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRC
eVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NCw5ICs1NCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxk
cmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFu
Z2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsK
IAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKik7CkBAIC02NiwyMSArNjMsMTggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBmaWx0ZXJSZXNYSWRlbnRpZmllcigpOwogICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIGZpbHRlclJlc1lJZGVudGlmaWVyKCk7CiAKLSAgICAvLyBBbmlt
YXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFU
SU9OKEZpbHRlclVuaXRzLCBmaWx0ZXJVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkK
LSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFByaW1pdGl2ZVVuaXRzLCBwcmltaXRp
dmVVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKLSAgICBERUNMQVJFX0FOSU1BVEVE
X0xFTkdUSChYLCB4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCi0gICAgREVD
TEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQotICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIKEhlaWdodCwgaGVpZ2h0KQotICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihGaWx0
ZXJSZXNYLCBmaWx0ZXJSZXNYKQotICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihGaWx0ZXJS
ZXNZLCBmaWx0ZXJSZXNZKQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9B
TklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVyRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9FTlVNRVJBVElPTihGaWx0ZXJVbml0cywgZmlsdGVyVW5pdHMsIFNWR1VuaXRUeXBlczo6
U1ZHVW5pdFR5cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oUHJpbWl0
aXZlVW5pdHMsIHByaW1pdGl2ZVVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX0xFTkdUSChZLCB5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwg
d2lkdGgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoRmlsdGVyUmVzWCwgZmlsdGVyUmVzWCkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9JTlRFR0VSKEZpbHRlclJlc1ksIGZpbHRlclJlc1kp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMK
IH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMSArMzcsMjIgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9M
RU5HVEgoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdOYW1lczo6eEF0
dHIsIFgsIHgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcywgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQotREVGSU5FX0FOSU1BVEVEX0xF
TkdUSChTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR05hbWVzOjp3aWR0
aEF0dHIsIFdpZHRoLCB3aWR0aCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBo
ZWlnaHQpCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcywgU1ZHTmFtZXM6OnJlc3VsdEF0dHIsIFJlc3VsdCwgcmVzdWx0KQorQkVHSU5f
REVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4
KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCisgICAgREVGSU5FX0FOSU1BVEVEX0xF
TkdUSChTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR05hbWVzOjp3aWR0
aEF0dHIsIFdpZHRoLCB3aWR0aCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhlaWdo
dCwgaGVpZ2h0KQorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdOYW1lczo6cmVzdWx0QXR0ciwgUmVzdWx0LCByZXN1bHQp
CitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeCkKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWSh5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZ
KHdpZHRoKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGhlaWdodCkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShyZXN1bHQpCisgICAgUkVHSVNURVJf
UEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkRWxlbWVudCkKK0VORF9SRUdJU1RF
Ul9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0eWxlZEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC01Miw2ICs2Myw3IEBAIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6U1YKIHsKICAgICAvLyBTcGVjOiBJZiB0aGUgeC95IGF0dHJp
YnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjAl
IiB3ZXJlIHNwZWNpZmllZC4KICAgICAvLyBTcGVjOiBJZiB0aGUgd2lkdGgvaGVpZ2h0IGF0dHJp
YnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEw
MCUiIHdlcmUgc3BlY2lmaWVkLgorICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKCk7CiB9CiAKIGJvb2wgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKQEAgLTEyMSw1MSArMTMzLDYgQEAgdm9pZCBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZQogICAgIGludmFsaWRhdGUoKTsKIH0KIAotdm9p
ZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17ICAgIAotICAgIGlmIChhdHRyTmFt
ZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBzeW5j
aHJvbml6ZVkoKTsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICBzeW5jaHJv
bml6ZUhlaWdodCgpOwotICAgICAgICBzeW5jaHJvbml6ZVJlc3VsdCgpOwotICAgICAgICBTVkdT
dHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
Ojp4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVdpZHRoKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omhl
aWdodEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cmVzdWx0QXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZVJlc3VsdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzOjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5v
ZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEp
CiB7CiAgICAgU1ZHU3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNl
ciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKQEAgLTIwNCwx
NyArMTcxLDYgQEAgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZQogICAg
IGZpbHRlckVmZmVjdC0+c2V0RWZmZWN0Qm91bmRhcmllcyhlZmZlY3RCQm94KTsKIH0KIAotdm9p
ZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXApCi17Ci0gICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbFBhc3NlZEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAg
ICAKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBB
bmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExl
bmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyZXN1
bHRBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0KIFJlbmRlck9iamVjdCogU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJl
bmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXJQcmltaXRpdmUodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCShyZXZp
c2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsOCArNTEsNiBAQCBwcm90ZWN0
ZWQ6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAg
IHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci0gICAgdm9pZCBmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5v
ZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgaW5s
aW5lIHZvaWQgaW52YWxpZGF0ZSgpCkBAIC03MywxMiArNzEsMTMgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5k
ZXJpbmdDb250ZXh0Jik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMK
LSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQotICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIKFksIHkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQot
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQotICAgIERFQ0xBUkVf
QU5JTUFURURfU1RSSU5HKFJlc3VsdCwgcmVzdWx0KQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfTEVOR1RIKFksIHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3
aWR0aCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKFJlc3VsdCwgcmVzdWx0KQorICAgIEVORF9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCShyZXZpc2lvbiA5MDQ1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDQsMjAgKzEwNCw2IEBAIGJvb2wgU1ZHRml0VG9WaWV3Qm94OjpwYXJzZU1hcHBl
ZEF0dHJpYnUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgU1ZHRml0VG9WaWV3Qm94Ojpz
eW5jaHJvbml6ZVByb3BlcnRpZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0g
ICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVWaWV3
Qm94KCk7Ci0gICAgICAgIHN5bmNocm9uaXplUHJlc2VydmVBc3BlY3RSYXRpbygpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp2aWV3Qm94
QXR0cikKLSAgICAgICAgc3luY2hyb25pemVWaWV3Qm94KCk7Ci0gICAgZWxzZSBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyKQotICAgICAgICBzeW5jaHJv
bml6ZVByZXNlcnZlQXNwZWN0UmF0aW8oKTsKLX0KLQogYm9vbCBTVkdGaXRUb1ZpZXdCb3g6Omlz
S25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgcmV0
dXJuIGF0dHJOYW1lID09IFNWR05hbWVzOjp2aWV3Qm94QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRml0VG9WaWV3Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
dFRvVmlld0JveC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aXRUb1ZpZXdCb3guaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTQgKzQzLDEwIEBAIHB1YmxpYzoK
ICAgICBib29sIHBhcnNlTWFwcGVkQXR0cmlidXRlKERvY3VtZW50KiwgQXR0cmlidXRlKik7CiAg
ICAgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2b2lk
IGFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMoSGFzaFNldDxRdWFsaWZpZWROYW1lPiYpOwotICAgIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0aWVzKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBzZXRWaWV3Qm94QmFzZVZhbHVlKGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0UHJlc2VydmVBc3BlY3RSYXRpb0Jhc2VWYWx1ZShjb25zdCBTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvJikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
Vmlld0JveCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcmVzZXJ2ZUFzcGVj
dFJhdGlvKCkgPSAwOwotCiBwcml2YXRlOgogICAgIGJvb2wgcGFyc2VWaWV3Qm94KERvY3VtZW50
KiwgY29uc3QgU3RyaW5nJiwgRmxvYXRSZWN0Jik7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZvbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRm9udEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDE0IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25z
Ci1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdGb250RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMK
KyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdGb250RWxlbWVudCwgU1ZHTmFtZXM6OmV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVT
CisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRm9udEVsZW1lbnQpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRF
bGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0Zv
bnRFbGVtZW50OjpTVkdGb250RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KSAKQEAgLTQ1LDYgKzUxLDcgQEAgaW5saW5lIFNWR0ZvbnRFbGVtZW50OjpTVkdGb250RWxl
bWVudChjbwogICAgICwgbV9pc0dseXBoQ2FjaGVWYWxpZChmYWxzZSkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShTVkdOYW1lczo6Zm9udFRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9w
ZXJ0aWVzRm9yU1ZHRm9udEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGb250RWxlbWVu
dD4gU1ZHRm9udEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCkBAIC01MiwxNCArNTksNiBAQCBQYXNzUmVmUHRyPFNWR0ZvbnRF
bGVtZW50PiBTVkdGb250RWxlbWVuCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdGb250RWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIFNWR0ZvbnRFbGVtZW50OjpzeW5j
aHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIFNW
R1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotCi0gICAgaWYg
KGF0dHJOYW1lID09IGFueVFOYW1lKCkgfHwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCgpOwotfQotCiB2b2lkIFNWR0ZvbnRFbGVtZW50OjppbnZhbGlkYXRl
R2x5cGhDYWNoZSgpCiB7CiAgICAgaWYgKG1faXNHbHlwaENhY2hlVmFsaWQpIHsKQEAgLTI1OSwx
NyArMjU4LDYgQEAgR2x5cGggU1ZHRm9udEVsZW1lbnQ6Om1pc3NpbmdHbHlwaCgpCiAgICAgcmV0
dXJuIG1fbWlzc2luZ0dseXBoOwogfQogCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZH
Rm9udEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXA7Ci19Ci0KLXZvaWQgU1ZHRm9udEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCi17Ci0gICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkpOwotfQotCiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoU1ZHX0ZPTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zv
bnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVt
ZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDE4ICs3MywxNCBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIFNWR0ZvbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwog
Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJp
bmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0gIAotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdm9pZCBlbnN1
cmVHbHlwaENhY2hlKCk7CiAgICAgdm9pZCByZWdpc3RlckxpZ2F0dXJlc0luR2x5cGhDYWNoZShW
ZWN0b3I8U3RyaW5nPiYpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25z
Ci0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklN
QVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZvbnRF
bGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICBLZXJuaW5nUGFpclZlY3RvciBtX2hvcml6b250YWxL
ZXJuaW5nUGFpcnM7CiAgICAgS2VybmluZ1BhaXJWZWN0b3IgbV92ZXJ0aWNhbEtlcm5pbmdQYWly
czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50
LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMyArMzQsMjUgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVG
SU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnhB
dHRyLCBYLCB4KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGb3JlaWduT2JqZWN0RWxlbWVu
dCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGb3Jl
aWduT2JqZWN0RWxlbWVudCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgV2lkdGgsIHdpZHRoKQotREVG
SU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTmFtZXM6Omhl
aWdodEF0dHIsIEhlaWdodCwgaGVpZ2h0KQotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGb3Jl
aWduT2JqZWN0RWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCi1ERUZJ
TkVfQU5JTUFURURfQk9PTEVBTihTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTmFtZXM6OmV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJ
RVMKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBT
VkdOYW1lczo6eEF0dHIsIFgsIHgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGb3Jl
aWduT2JqZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQorICAgIERFRklORV9BTklN
QVRFRF9MRU5HVEgoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIs
IFdpZHRoLCB3aWR0aCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQpCisgICAgREVG
SU5FX0FOSU1BVEVEX1NUUklORyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgWExpbmtOYW1lczo6
aHJlZkF0dHIsIEhyZWYsIGhyZWYpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0
ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkK
K0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh3aWR0aCkKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShoZWlnaHQpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KQorICAgIFJF
R0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVS
X0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpT
VkdGb3JlaWduT2JqZWN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkKQEAgLTUwLDYgKzYyLDcgQEAgaW5saW5lIFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50OjpTVkdGb3JlaQogICAgICwgbV9oZWlnaHQoTGVuZ3RoTW9kZUhlaWdodCkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZykpOworICAgIHJl
Z2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQoKTsKIH0K
IAogUGFzc1JlZlB0cjxTVkdGb3JlaWduT2JqZWN0RWxlbWVudD4gU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCkBAIC0xMzQsNzYgKzE0Nyw2IEBAIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6
OnN2Z0F0dHJpYnUKICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQ
YXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlcik7CiB9CiAKLXZvaWQgU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAg
c3luY2hyb25pemVYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICBzeW5jaHJv
bml6ZVdpZHRoKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHN5bmNo
cm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhy
ZWYoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRy
TmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICgh
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpIHsK
LSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWSgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
Ojp3aWR0aEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3Bl
cnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdG
b3JlaWduT2JqZWN0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsgICAgCi0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxs
UGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIs
IEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVk
TGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6
aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQogUmVuZGVyT2JqZWN0KiBTVkdGb3JlaWdu
T2JqZWN0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJT
dHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Qo
dGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMjYgKzQ1LDI1IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAg
IHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihO
b2RlKikgY29uc3Q7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKTsKIAogICAgIHZpcnR1YWwgYm9v
bCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9w
ZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQotICAg
IERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoV2lkdGgsIHdpZHRoKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVp
Z2h0KQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJ
TkcoSHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIKFgsIHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfU1RSSU5HKEhyZWYsIGhyZWYpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAg
IEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3RzCisgICAg
dmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5
bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5j
aHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWly
ZWRFeHRlbnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVt
TGFuZ3VhZ2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxl
bWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTMgKzMxLDIxIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi1ERUZJTkVfQU5J
TUFURURfQk9PTEVBTihTVkdHRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5J
TUFURURfQk9PTEVBTihTVkdHRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVS
X0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHR0VsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9Q
QVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkK
KyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9S
RUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIFNWR0dFbGVtZW50OjpTVkdHRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBB
U1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6Z1RhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQ
cm9wZXJ0aWVzRm9yU1ZHR0VsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdHRWxlbWVudD4g
U1ZHR0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCkBAIC04OSw0NCArOTcsNiBAQCB2b2lkIFNWR0dFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvCiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0
QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVyZXIpOwogfQogCi12b2lkIFNWR0dF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBTVkdUZXN0czo6c3luY2hy
b25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHR0VsZW1lbnQ6OmF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7
Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZH
R0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpKTsKLX0KLQogUmVuZGVyT2JqZWN0KiBT
VkdHRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHls
ZSogc3R5bGUpCiB7CiAgICAgLy8gU1ZHIDEuMSB0ZXN0c3VpdGUgZXhwbGljaXRlbHkgdXNlcyBj
b25zdHJ1Y3RzIGxpa2UgPGcgZGlzcGxheT0ibm9uZSI+PGxpbmVhckdyYWRpZW50PgpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDE2ICs1MSwxNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29u
c3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRl
Y2xhcmF0aW9ucworICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdHRWxl
bWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVElFUwogCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAot
ICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXpl
UmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJl
cXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNp
b25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2Uo
KSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVt
ZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDIwICsxMjksNiBAQCBzdGF0aWMgaW5s
aW5lIGZsb2F0IHBhcnNlU1ZHR2x5cGhBdHRyaWJ1CiAgICAgcmV0dXJuIHZhbHVlLnRvRmxvYXQo
KTsKIH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0dseXBoRWxlbWVudDo6YXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgp
KTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBT
VkdHbHlwaEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAg
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0g
dGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZEVsZW1l
bnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjpkQXR0ciwgQW5pbWF0ZWRQYXRoKTsKLX0KLQogU1ZHR2x5cGggU1ZHR2x5cGhFbGVtZW50Ojpi
dWlsZEdlbmVyaWNHbHlwaElkZW50aWZpZXIoY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkKIHsK
ICAgICBTVkdHbHlwaCBpZGVudGlmaWVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ds
eXBoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVs
ZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDggQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBTVkdHbHlwaEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7
CiAKKyAgICAvLyBGSVhNRTogc3ZnQXR0cmlidXRlQ2hhbmdlZCBtaXNzaW5nLgogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVkRnJvbURvY3VtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGll
bnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGll
bnRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTggKzM4LDI5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMK
LURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVz
OjpzcHJlYWRNZXRob2RBdHRyLCBTcHJlYWRNZXRob2QsIHNwcmVhZE1ldGhvZCwgU1ZHU3ByZWFk
TWV0aG9kVHlwZSkKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdHcmFkaWVudEVsZW1l
bnQsIFNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0ciwgR3JhZGllbnRVbml0cywgZ3JhZGllbnRV
bml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKLURFRklORV9BTklNQVRFRF9UUkFOU0ZP
Uk1fTElTVChTVkdHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0
dHIsIEdyYWRpZW50VHJhbnNmb3JtLCBncmFkaWVudFRyYW5zZm9ybSkKLURFRklORV9BTklNQVRF
RF9TVFJJTkcoU1ZHR3JhZGllbnRFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwg
aHJlZikKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0dyYWRpZW50RWxlbWVudCwgU1ZHTmFt
ZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotCitCRUdJTl9ERUZJTkVfQU5JTUFURURf
UFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdHcmFkaWVudEVs
ZW1lbnQsIFNWR05hbWVzOjpzcHJlYWRNZXRob2RBdHRyLCBTcHJlYWRNZXRob2QsIHNwcmVhZE1l
dGhvZCwgU1ZHU3ByZWFkTWV0aG9kVHlwZSkKKyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJ
T04oU1ZHR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6Z3JhZGllbnRVbml0c0F0dHIsIEdyYWRp
ZW50VW5pdHMsIGdyYWRpZW50VW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAg
REVGSU5FX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFNWR0dyYWRpZW50RWxlbWVudCwgU1ZHTmFt
ZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0ciwgR3JhZGllbnRUcmFuc2Zvcm0sIGdyYWRpZW50VHJh
bnNmb3JtKQorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHR3JhZGllbnRFbGVtZW50LCBY
TGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKKyAgICBERUZJTkVfQU5JTUFURURfQk9P
TEVBTihTVkdHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR0dyYWRpZW50RWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NB
TF9BTklNQVRFRF9QUk9QRVJUWShzcHJlYWRNZXRob2QpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoZ3JhZGllbnRVbml0cykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShncmFkaWVudFRyYW5zZm9ybSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShocmVmKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHU3R5bGVkRWxlbWVudCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJU
SUVTCisgCiBTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR0dyYWRpZW50RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9zcHJlYWRNZXRob2QoU1ZHU3ByZWFk
TWV0aG9kUGFkKQogICAgICwgbV9ncmFkaWVudFVuaXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRf
VFlQRV9PQkpFQ1RCT1VORElOR0JPWCkKIHsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGll
c0ZvclNWR0dyYWRpZW50RWxlbWVudCgpOwogfQogCiBib29sIFNWR0dyYWRpZW50RWxlbWVudDo6
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBAIC0x
MTYsNjEgKzEyNyw2IEBAIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGEK
ICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQogICAgICAgICBvYmpl
Y3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQotCi12b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAg
ICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUdyYWRp
ZW50VW5pdHMoKTsKLSAgICAgICAgc3luY2hyb25pemVHcmFkaWVudFRyYW5zZm9ybSgpOwotICAg
ICAgICBzeW5jaHJvbml6ZVNwcmVhZE1ldGhvZCgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAg
ICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShh
dHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplR3JhZGll
bnRVbml0cygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVH
cmFkaWVudFRyYW5zZm9ybSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjpzcHJlYWRNZXRob2RBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplU3ByZWFkTWV0aG9kKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsK
LSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFNWR0dy
YWRpZW50RWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCkKLXsKLSAg
ICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotCi0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjpzcHJlYWRNZXRob2RBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9u
KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmdyYWRpZW50
VW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0ciwgQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1l
czo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KICAgICAKIHZvaWQgU1ZHR3JhZGllbnRF
bGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9y
ZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiA5MDU2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNzMsNyArNzMsNiBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHU3ByZWFkTWV0
aG9kCiAgICAgfQogfTsKIAotCiBjbGFzcyBTVkdHcmFkaWVudEVsZW1lbnQgOiBwdWJsaWMgU1ZH
U3R5bGVkRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklS
ZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCB7CkBAIC05MywyNCArOTIsMTkgQEAgcHJvdGVjdGVkOgogICAgIGJv
b2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZv
aWQgZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG5lZWRzUGVuZGluZ1Jl
c291cmNlSGFuZGxpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2
b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBi
ZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVs
dGEgPSAwKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERF
Q0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oU3ByZWFkTWV0aG9kLCBzcHJlYWRNZXRob2QsIFNW
R1NwcmVhZE1ldGhvZFR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihHcmFk
aWVudFVuaXRzLCBncmFkaWVudFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQotICAg
IERFQ0xBUkVfQU5JTUFURURfVFJBTlNGT1JNX0xJU1QoR3JhZGllbnRUcmFuc2Zvcm0sIGdyYWRp
ZW50VHJhbnNmb3JtKQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklN
QVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHR3JhZGllbnRFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX0VOVU1FUkFUSU9OKFNwcmVhZE1ldGhvZCwgc3ByZWFkTWV0aG9kLCBTVkdTcHJlYWRNZXRo
b2RUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKEdyYWRpZW50VW5p
dHMsIGdyYWRpZW50VW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfVFJBTlNGT1JNX0xJU1QoR3JhZGllbnRUcmFuc2Zvcm0sIGdyYWRpZW50
VHJhbnNmb3JtKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTQgKzM2
LDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVm
aW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1l
czo6eEF0dHIsIFgsIHgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ltYWdlRWxlbWVudCwg
U1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdJbWFnZUVs
ZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKLURFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBo
ZWlnaHQpCi1ERUZJTkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhTVkdJbWFnZUVsZW1l
bnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgUHJlc2VydmVBc3BlY3RSYXRp
bywgcHJlc2VydmVBc3BlY3RSYXRpbykKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHSW1hZ2VF
bGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKLURFRklORV9BTklNQVRF
RF9CT09MRUFOKFNWR0ltYWdlRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR0ltYWdlRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQorICAg
IERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIs
IFksIHkpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdJbWFnZUVsZW1lbnQsIFNWR05h
bWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RI
KFNWR0ltYWdlRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhlaWdodCwgaGVpZ2h0KQor
ICAgIERFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR0ltYWdlRWxlbWVudCwg
U1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBw
cmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHSW1hZ2VF
bGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKKyAgICBERUZJTkVfQU5J
TUFURURfQk9PTEVBTihTVkdJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJ
U1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ltYWdlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWSh4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKHkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkod2lkdGgpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaGVpZ2h0KQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BB
UkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KQor
ICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5EX1JF
R0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ltYWdlRWxlbWVudDo6U1ZH
SW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKICAgICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KQpAQCAtNTQsNiArNjcsNyBAQCBpbmxpbmUgU1ZHSW1hZ2VFbGVtZW50OjpTVkdJbWFnZUVs
ZW1lbnQoCiAgICAgLCBtX2ltYWdlTG9hZGVyKHRoaXMpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05h
bWUoU1ZHTmFtZXM6OmltYWdlVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNG
b3JTVkdJbWFnZUVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdJbWFnZUVsZW1lbnQ+IFNW
R0ltYWdlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKQEAgLTE3Myw4OCArMTg3LDYgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lk
IFNWR0ltYWdlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAg
ICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHN5bmNo
cm9uaXplV2lkdGgoKTsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVQcmVzZXJ2ZUFzcGVjdFJhdGlvKCk7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAg
ICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAg
ICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVYKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OnlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIp
IHsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplUHJlc2VydmVBc3BlY3RSYXRpbygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRp
ZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdJbWFn
ZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7
Ci19Ci0KLXZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0ZWRM
ZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6d2lk
dGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwg
QW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQogYm9v
bCBTVkdJbWFnZUVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdAogewogICAg
IHJldHVybiB4KCkuaXNSZWxhdGl2ZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxl
bWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsOSArNTEsNiBAQCBwcml2YXRlOgogICAgIGJv
b2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZp
cnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFs
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwogCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRl
ZEludG9Eb2N1bWVudCgpOwpAQCAtNjgsMTggKzY1LDIwIEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5
IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCi0gICAgREVD
TEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChX
aWR0aCwgd2lkdGgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQp
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0
UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCi0KLSAgICAvLyBTVkdVUklSZWZlcmVuY2UKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQotCi0gICAgLy8gU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJFR0lO
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdJbWFnZUVsZW1lbnQpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVO
R1RIKFksIHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCisgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlv
LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhI
cmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJl
cXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1
aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9u
cyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkg
eyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogCiAgICAgU1ZH
SW1hZ2VMb2FkZXIgbV9pbWFnZUxvYWRlcjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGluZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
aW5lRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xpbmVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDIzIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURF
RklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZUVsZW1lbnQsIFNWR05hbWVzOjp4MUF0dHIsIFgx
LCB4MSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZUVsZW1lbnQsIFNWR05hbWVzOjp5
MUF0dHIsIFkxLCB5MSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZUVsZW1lbnQsIFNW
R05hbWVzOjp4MkF0dHIsIFgyLCB4MikKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZUVs
ZW1lbnQsIFNWR05hbWVzOjp5MkF0dHIsIFkyLCB5MikKLURFRklORV9BTklNQVRFRF9CT09MRUFO
KFNWR0xpbmVFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIs
IEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitC
RUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9MRU5H
VEgoU1ZHTGluZUVsZW1lbnQsIFNWR05hbWVzOjp4MUF0dHIsIFgxLCB4MSkKKyAgICBERUZJTkVf
QU5JTUFURURfTEVOR1RIKFNWR0xpbmVFbGVtZW50LCBTVkdOYW1lczo6eTFBdHRyLCBZMSwgeTEp
CisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6Ongy
QXR0ciwgWDIsIHgyKQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZUVsZW1lbnQs
IFNWR05hbWVzOjp5MkF0dHIsIFkyLCB5MikKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihT
VkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorRU5E
X0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHTGluZUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkoeDEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeTEpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeDIpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoeTIpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJU1RF
Ul9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklN
QVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdMaW5lRWxlbWVudDo6U1ZHTGluZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDog
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC00OCw2
ICs1OSw3IEBAIGlubGluZSBTVkdMaW5lRWxlbWVudDo6U1ZHTGluZUVsZW1lbnQoY28KICAgICAs
IG1feTIoTGVuZ3RoTW9kZUhlaWdodCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1l
czo6bGluZVRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHTGluZUVs
ZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdMaW5lRWxlbWVudD4gU1ZHTGluZUVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CkBAIC0xNDUsNzQgKzE1Nyw2IEBAIHZvaWQgU1ZHTGluZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdMaW5lRWxlbWVu
dDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsK
LSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVgx
KCk7Ci0gICAgICAgIHN5bmNocm9uaXplWTEoKTsKLSAgICAgICAgc3luY2hyb25pemVYMigpOwot
ICAgICAgICBzeW5jaHJvbml6ZVkyKCk7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVz
KHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
Ojp4MUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYMSgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5MUF0dHIpIHsKLSAgICAgICAg
c3luY2hyb25pemVZMSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjp4MkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYMigpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5MkF0
dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVZMigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3du
QXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9w
ZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZH
TGluZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXA7Ci19Ci0KLXZvaWQgU1ZHTGluZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAg
IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eDFBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5MUF0dHIsIEFuaW1h
dGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OngyQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6eTJBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci19Ci0KIHZvaWQgU1ZHTGlu
ZUVsZW1lbnQ6OnRvUGF0aERhdGEoUGF0aCYgcGF0aCkgY29uc3QKIHsKICAgICBBU1NFUlQocGF0
aC5pc0VtcHR5KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgJKHJldmlz
aW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ3LDkgKzQ3LDYgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVk
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VN
YXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1
YWwgdm9pZCB0b1BhdGhEYXRhKFBhdGgmKSBjb25zdDsKIApAQCAtNTcsMTQgKzU0LDE4IEBAIHBy
aXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0
OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9B
TklNQVRFRF9MRU5HVEgoWDEsIHgxKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFkxLCB5
MSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYMiwgeDIpCi0gICAgREVDTEFSRV9BTklN
QVRFRF9MRU5HVEgoWTIsIHkyKQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdMaW5lRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoWDEsIHgxKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZMSwgeTEpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgyLCB4MikKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9MRU5HVEgoWTIsIHkyKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBF
TkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5j
aHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVk
RXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxh
bmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDExICs0MCwyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1h
dGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OngxQXR0ciwgWDEsIHgxKQotREVGSU5FX0FOSU1B
VEVEX0xFTkdUSChTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjp5MUF0dHIsIFkx
LCB5MSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBT
VkdOYW1lczo6eDJBdHRyLCBYMiwgeDIpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OnkyQXR0ciwgWTIsIHkyKQorQkVHSU5fREVGSU5F
X0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OngxQXR0ciwgWDEsIHgxKQorICAgIERFRklORV9B
TklNQVRFRF9MRU5HVEgoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6eTFBdHRy
LCBZMSwgeTEpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQsIFNWR05hbWVzOjp4MkF0dHIsIFgyLCB4MikKKyAgICBERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OnkyQXR0ciwgWTIsIHkyKQor
RU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKHgxKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKHkxKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgyKQorICAgIFJF
R0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHkyKQorICAgIFJFR0lTVEVSX1BBUkVOVF9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR0dyYWRpZW50RWxlbWVudCkKK0VORF9SRUdJU1RFUl9BTklN
QVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OlNWR0xp
bmVhckdyYWRpZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgOiBTVkdHcmFkaWVudEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
CkBAIC01NSw2ICs2NCw3IEBAIGlubGluZSBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OlNWR0xp
bmUKIHsKICAgICAvLyBTcGVjOiBJZiB0aGUgeDIgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQs
IHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmxpbmVhckdyYWRpZW50VGFnKSk7CisgICAg
cmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQoKTsK
IH0KIAogUGFzc1JlZlB0cjxTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ+IFNWR0xpbmVhckdyYWRp
ZW50RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKQEAgLTExOSw2MiArMTI5LDYgQEAgdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQ6OnN2Z0F0dHJpYgogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwog
fQogCi12b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsgICAgCi0gICAgaWYgKGF0dHJOYW1lID09
IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVYMSgpOwotICAgICAgICBzeW5jaHJv
bml6ZVkxKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWDIoKTsKLSAgICAgICAgc3luY2hyb25pemVZ
MigpOwotICAgICAgICBTVkdHcmFkaWVudEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0
ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHR3JhZGllbnRFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0gICAKLQotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eDFBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
WDEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6eTFBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWTEoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eDJBdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplWDIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6eTJBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWTIoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQot
Ci1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Ojph
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
KCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lk
IFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZH
R3JhZGllbnRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6eDFBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5MUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OngyQXR0ciwgQW5pbWF0
ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
eTJBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci19Ci0KIFJlbmRlck9iamVjdCogU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0
eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJH
cmFkaWVudCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxOSArNDIsMTcg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
Kik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKICAgICB2aXJ0dWFsIGJvb2wg
c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWDEsIHgxKQotICAg
IERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFkxLCB5MSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSChYMiwgeDIpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWTIsIHkyKQorICAgIEJF
R0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgxLCB4MSkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoWTEsIHkxKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdU
SChYMiwgeDIpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFkyLCB5MikKKyAgICBF
TkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24g
OTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsMTQgKzI4LDIxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8g
QW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZH
TVBhdGhFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKLURFRklORV9B
TklNQVRFRF9CT09MRUFOKFNWR01QYXRoRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJ
TkVfQU5JTUFURURfU1RSSU5HKFNWR01QYXRoRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIs
IEhyZWYsIGhyZWYpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHTVBhdGhFbGVtZW50
LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1B
VEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdN
UGF0aEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR01Q
YXRoRWxlbWVudDo6U1ZHTVBhdGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6Om1wYXRoVGFnKSk7CisgICAgcmVn
aXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdNUGF0aEVsZW1lbnQoKTsKIH0KIAogUGFzc1Jl
ZlB0cjxTVkdNUGF0aEVsZW1lbnQ+IFNWR01QYXRoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTY4LDQxICs3NSw2IEBA
IHZvaWQgU1ZHTVBhdGhFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnUKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdNUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09
IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdVUklSZWZl
cmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
SHJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdNUGF0aEVsZW1lbnQ6OmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAo
KSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQg
U1ZHTVBhdGhFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBB
bmltYXRlZFN0cmluZyk7Ci19Ci0KIFNWR1BhdGhFbGVtZW50KiBTVkdNUGF0aEVsZW1lbnQ6OnBh
dGhFbGVtZW50KCkKIHsKICAgICBFbGVtZW50KiB0YXJnZXQgPSB0cmVlU2NvcGUoKS0+Z2V0RWxl
bWVudEJ5SWQoZ2V0VGFyZ2V0KGhyZWYoKSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R01QYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0
aEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBh
dGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE3ICs0NCwxMSBAQCBwcml2YXRlOgog
ICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFuZ2VkIG1pc3NpbmcuCiAgICAgYm9vbCBpc1N1
cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwotICAgIHZpcnR1YWwgdm9pZCBzeW5j
aHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAotICAgIC8v
IEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNl
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBC
RUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHTVBhdGhFbGVtZW50KQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2Vy
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA5MDU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJr
ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTcgKzMyLDQ2IEBACiAjaW5jbHVk
ZSAiU1ZHU1ZHRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEFuaW1hdGVk
IHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01hcmtlckVs
ZW1lbnQsIFNWR05hbWVzOjpyZWZYQXR0ciwgUmVmWCwgcmVmWCkKLURFRklORV9BTklNQVRFRF9M
RU5HVEgoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6OnJlZllBdHRyLCBSZWZZLCByZWZZKQot
REVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6bWFya2Vy
V2lkdGhBdHRyLCBNYXJrZXJXaWR0aCwgbWFya2VyV2lkdGgpCi1ERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjptYXJrZXJIZWlnaHRBdHRyLCBNYXJrZXJI
ZWlnaHQsIG1hcmtlckhlaWdodCkKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdNYXJr
ZXJFbGVtZW50LCBTVkdOYW1lczo6bWFya2VyVW5pdHNBdHRyLCBNYXJrZXJVbml0cywgbWFya2Vy
VW5pdHMsIFNWR01hcmtlclVuaXRzVHlwZSkKLURFRklORV9BTklNQVRFRF9BTkdMRV9NVUxUSVBM
RV9XUkFQUEVSUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6b3JpZW50QXR0ciwgb3JpZW50
QW5nbGVJZGVudGlmaWVyKCksIE9yaWVudEFuZ2xlLCBvcmllbnRBbmdsZSkKLURFRklORV9BTklN
QVRFRF9CT09MRUFOKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKLURFRklORV9BTklNQVRFRF9SRUNUKFNWR01hcmtlckVsZW1lbnQsIFNWR05h
bWVzOjp2aWV3Qm94QXR0ciwgVmlld0JveCwgdmlld0JveCkKLURFRklORV9BTklNQVRFRF9QUkVT
RVJWRUFTUEVDVFJBVElPKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVj
dFJhdGlvQXR0ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAK
Ky8vIERlZmluZSBjdXN0b20gYW5pbWF0ZWQgcHJvcGVydHkgJ29yaWVudFR5cGUnLgorY29uc3Qg
U1ZHUHJvcGVydHlJbmZvKiBTVkdNYXJrZXJFbGVtZW50OjpvcmllbnRUeXBlUHJvcGVydHlJbmZv
KCkKK3sKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBzX3Byb3BlcnR5SW5mbyA9
IDA7CisgICAgaWYgKCFzX3Byb3BlcnR5SW5mbykgeworICAgICAgICBzX3Byb3BlcnR5SW5mbyA9
IG5ldyBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRFbnVtZXJhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpvcmllbnRBdHRyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZW50VHlwZUlkZW50
aWZpZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZT
VkdNYXJrZXJFbGVtZW50OjpzeW5jaHJvbml6ZU9yaWVudFR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU1ZHTWFya2VyRWxlbWVudDo6bG9va3VwT3JD
cmVhdGVPcmllbnRUeXBlV3JhcHBlcik7CisgICAgfQorICAgIHJldHVybiBzX3Byb3BlcnR5SW5m
bzsKK30KKworQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjpyZWZYQXR0ciwgUmVmWCwg
cmVmWCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01hcmtlckVsZW1lbnQsIFNWR05h
bWVzOjpyZWZZQXR0ciwgUmVmWSwgcmVmWSkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNW
R01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjptYXJrZXJXaWR0aEF0dHIsIE1hcmtlcldpZHRoLCBt
YXJrZXJXaWR0aCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01hcmtlckVsZW1lbnQs
IFNWR05hbWVzOjptYXJrZXJIZWlnaHRBdHRyLCBNYXJrZXJIZWlnaHQsIG1hcmtlckhlaWdodCkK
KyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFt
ZXM6Om1hcmtlclVuaXRzQXR0ciwgTWFya2VyVW5pdHMsIG1hcmtlclVuaXRzLCBTVkdNYXJrZXJV
bml0c1R5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX0FOR0xFX01VTFRJUExFX1dSQVBQRVJTKFNW
R01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjpvcmllbnRBdHRyLCBvcmllbnRBbmdsZUlkZW50aWZp
ZXIoKSwgT3JpZW50QW5nbGUsIG9yaWVudEFuZ2xlKQorICAgIERFRklORV9BTklNQVRFRF9CT09M
RUFOKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
QXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCkKKyAgICBERUZJTkVfQU5JTUFURURfUkVDVChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6
dmlld0JveEF0dHIsIFZpZXdCb3gsIHZpZXdCb3gpCisgICAgREVGSU5FX0FOSU1BVEVEX1BSRVNF
UlZFQVNQRUNUUkFUSU8oU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0
UmF0aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorRU5E
X0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHTWFya2VyRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWShyZWZYKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHJlZlkp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkobWFya2VyV2lkdGgpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkobWFya2VySGVpZ2h0KQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKG1hcmtlclVuaXRzKQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKG9yaWVudEFuZ2xlKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKG9yaWVudFR5cGUpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWSh2aWV3Qm94KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHU3R5bGVkRWxlbWVudCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9Q
RVJUSUVTCiAKIGlubGluZSBTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0
eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC01NSw2ICs4NCw3IEBAIGlubGluZSBT
VkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJFbGVtZW4KIHsKICAgICAvLyBTcGVjOiBJZiB0aGUg
bWFya2VyV2lkdGgvbWFya2VySGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUg
ZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjMiIHdlcmUgc3BlY2lmaWVkLgogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjptYXJrZXJUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVk
UHJvcGVydGllc0ZvclNWR01hcmtlckVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdNYXJr
ZXJFbGVtZW50PiBTVkdNYXJrZXJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTcwLDkxICsyMDAsNiBAQCB2b2lkIFNW
R01hcmtlckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nCiAgICAgICAgIG9iamVjdC0+c2V0TmVl
ZHNMYXlvdXQodHJ1ZSk7CiB9CiAKLXZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c3luY2hyb25pemVQ
cm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5h
bWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZU1hcmtlclVuaXRzKCk7Ci0g
ICAgICAgIHN5bmNocm9uaXplUmVmWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVJlZlkoKTsKLSAg
ICAgICAgc3luY2hyb25pemVNYXJrZXJXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZU1hcmtl
ckhlaWdodCgpOwotICAgICAgICBzeW5jaHJvbml6ZU9yaWVudEFuZ2xlKCk7Ci0gICAgICAgIHN5
bmNocm9uaXplT3JpZW50VHlwZSgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHRml0VG9WaWV3Qm94OjpzeW5jaHJvbml6ZVByb3Bl
cnRpZXMoYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjptYXJrZXJVbml0c0F0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVNYXJrZXJVbml0cygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpyZWZYQXR0cikgewotICAgICAgICBzeW5jaHJv
bml6ZVJlZlgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6cmVmWUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVSZWZZKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1hcmtl
cldpZHRoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZU1hcmtlcldpZHRoKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1hcmtlckhl
aWdodEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVNYXJrZXJIZWlnaHQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6b3JpZW50QXR0
cikgewotICAgICAgICBzeW5jaHJvbml6ZU9yaWVudEFuZ2xlKCk7Ci0gICAgICAgIHN5bmNocm9u
aXplT3JpZW50VHlwZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRml0VG9WaWV3Qm94OjpzeW5jaHJvbml6ZVByb3Bl
cnRpZXMoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdNYXJrZXJF
bGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwot
fQotCi12b2lkIFNWR01hcmtlckVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNW
R1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjpyZWZYQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cmVmWUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om1hcmtlcldpZHRo
QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6bWFya2VySGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6bWFya2VyVW5pdHNBdHRyLCBBbmlt
YXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6Om9yaWVudEF0dHIsIEFuaW1hdGVkQW5nbGUpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6dmlld0JveEF0dHIsIEFuaW1hdGVkUmVjdCk7Ci19Ci0K
IHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFy
c2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3Vu
dERlbHRhKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2Vk
QnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkBA
IC0yNzAsOSArMjE1LDEyIEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50VG9BdXRv
KCkKIHsKICAgICBzZXRPcmllbnRUeXBlQmFzZVZhbHVlKFNWR01hcmtlck9yaWVudEF1dG8pOwog
ICAgIHNldE9yaWVudEFuZ2xlQmFzZVZhbHVlKFNWR0FuZ2xlKCkpOwotCi0gICAgaWYgKFJlbmRl
ck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xh
eW91dCh0cnVlKTsKKyAKKyAgICAvLyBNYXJrIG9yaWVudEF0dHIgZGlydHkgLSB0aGUgbmV4dCBY
TUwgRE9NIGFjY2VzcyBvZiB0aGF0IGF0dHJpYnV0ZSBraWNrcyBpbiBzeW5jaHJvbml6YXRpb24u
CisgICAgbV9vcmllbnRBbmdsZS5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7CisgICAgbV9vcmll
bnRUeXBlLnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKKyAgICBpbnZhbGlkYXRlU1ZHQXR0cmli
dXRlcygpOworICAgIHN2Z0F0dHJpYnV0ZUNoYW5nZWQob3JpZW50QW5nbGVQcm9wZXJ0eUluZm8o
KS0+YXR0cmlidXRlTmFtZSk7CiB9CiAKIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50
VG9BbmdsZShjb25zdCBTVkdBbmdsZSYgYW5nbGUpCkBAIC0yODAsOCArMjI4LDExIEBAIHZvaWQg
U1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50VG9BbmdsZSgKICAgICBzZXRPcmllbnRUeXBlQmFz
ZVZhbHVlKFNWR01hcmtlck9yaWVudEFuZ2xlKTsKICAgICBzZXRPcmllbnRBbmdsZUJhc2VWYWx1
ZShhbmdsZSk7CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQot
ICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOworICAgIC8vIE1hcmsgb3JpZW50
QXR0ciBkaXJ0eSAtIHRoZSBuZXh0IFhNTCBET00gYWNjZXNzIG9mIHRoYXQgYXR0cmlidXRlIGtp
Y2tzIGluIHN5bmNocm9uaXphdGlvbi4KKyAgICBtX29yaWVudEFuZ2xlLnNob3VsZFN5bmNocm9u
aXplID0gdHJ1ZTsKKyAgICBtX29yaWVudFR5cGUuc2hvdWxkU3luY2hyb25pemUgPSB0cnVlOwor
ICAgIGludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7CisgICAgc3ZnQXR0cmlidXRlQ2hhbmdlZChv
cmllbnRBbmdsZVByb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lKTsKIH0KIAogUmVuZGVyT2Jq
ZWN0KiBTVkdNYXJrZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEs
IFJlbmRlclN0eWxlKikKQEAgLTI5NywyNCArMjQ4LDM0IEBAIGJvb2wgU1ZHTWFya2VyRWxlbWVu
dDo6c2VsZkhhc1JlbGF0aXZlTGUKICAgICAgICAgfHwgbWFya2VySGVpZ2h0KCkuaXNSZWxhdGl2
ZSgpOwogfQogCi12b2lkIFNWR01hcmtlckVsZW1lbnQ6OnN5bmNocm9uaXplT3JpZW50VHlwZSgp
Cit2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnN5bmNocm9uaXplT3JpZW50VHlwZSh2b2lkKiBjb250
ZXh0RWxlbWVudCkKIHsKLSAgICBpZiAoIW1fb3JpZW50VHlwZS5zaG91bGRTeW5jaHJvbml6ZSkK
KyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgIFNWR01hcmtlckVsZW1lbnQqIG93bmVy
VHlwZSA9IHN0YXRpY19jYXN0PFNWR01hcmtlckVsZW1lbnQqPihjb250ZXh0RWxlbWVudCk7Cisg
ICAgaWYgKCFvd25lclR5cGUtPm1fb3JpZW50VHlwZS5zaG91bGRTeW5jaHJvbml6ZSkKICAgICAg
ICAgcmV0dXJuOwotICAgIAorCiAgICAgQXRvbWljU3RyaW5nIHZhbHVlOwotICAgIGlmIChtX29y
aWVudFR5cGUudmFsdWUgPT0gU1ZHTWFya2VyT3JpZW50QXV0bykKKyAgICBpZiAob3duZXJUeXBl
LT5tX29yaWVudFR5cGUudmFsdWUgPT0gU1ZHTWFya2VyT3JpZW50QXV0bykKICAgICAgICAgdmFs
dWUgPSAiYXV0byI7Ci0gICAgZWxzZSBpZiAobV9vcmllbnRUeXBlLnZhbHVlID09IFNWR01hcmtl
ck9yaWVudEFuZ2xlKQotICAgICAgICB2YWx1ZSA9IG9yaWVudEFuZ2xlKCkudmFsdWVBc1N0cmlu
ZygpOworICAgIGVsc2UgaWYgKG93bmVyVHlwZS0+bV9vcmllbnRUeXBlLnZhbHVlID09IFNWR01h
cmtlck9yaWVudEFuZ2xlKQorICAgICAgICB2YWx1ZSA9IG93bmVyVHlwZS0+bV9vcmllbnRBbmds
ZS52YWx1ZS52YWx1ZUFzU3RyaW5nKCk7CiAKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hy
b25pemVyPHRydWU+OjpzeW5jaHJvbml6ZSh0aGlzLCBTVkdOYW1lczo6b3JpZW50QXR0ciwgdmFs
dWUpOworICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5bmNocm9u
aXplKG93bmVyVHlwZSwgb3JpZW50VHlwZVByb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lLCB2
YWx1ZSk7CiB9CiAKK1Bhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gU1ZHTWFya2VyRWxl
bWVudDo6bG9va3VwT3JDcmVhdGVPcmllbnRUeXBlV3JhcHBlcih2b2lkKiBjb250ZXh0RWxlbWVu
dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgIFNWR01hcmtlckVsZW1lbnQq
IG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR01hcmtlckVsZW1lbnQqPihjb250ZXh0RWxlbWVu
dCk7CisgICAgcmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBl
cjxTVkdNYXJrZXJFbGVtZW50LCBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2Zm
PFNWR01hcmtlck9yaWVudFR5cGU+LCBTVkdNYXJrZXJPcmllbnRUeXBlLCB0cnVlPgorICAgICAg
ICAgICAob3duZXJUeXBlLCBvcmllbnRUeXBlUHJvcGVydHlJbmZvKCksIG93bmVyVHlwZS0+bV9v
cmllbnRUeXBlLnZhbHVlKTsKK30KKyAgCiBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRp
b25Qcm9wZXJ0eVRlYXJPZmY8U1ZHTWFya2VyT3JpZW50VHlwZT4gPiBTVkdNYXJrZXJFbGVtZW50
OjpvcmllbnRUeXBlQW5pbWF0ZWQoKQogewogICAgIG1fb3JpZW50VHlwZS5zaG91bGRTeW5jaHJv
bml6ZSA9IHRydWU7Ci0gICAgcmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3Jl
YXRlV3JhcHBlcjxTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmPFNWR01hcmtl
ck9yaWVudFR5cGU+LCBTVkdNYXJrZXJPcmllbnRUeXBlPih0aGlzLCBTVkdOYW1lczo6b3JpZW50
QXR0ciwgb3JpZW50VHlwZUlkZW50aWZpZXIoKSwgbV9vcmllbnRUeXBlLnZhbHVlKTsKKyAgICBy
ZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlU
ZWFyT2ZmPFNWR01hcmtlck9yaWVudFR5cGU+ID4obG9va3VwT3JDcmVhdGVPcmllbnRUeXBlV3Jh
cHBlcih0aGlzKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1l
bnQuaAkocmV2aXNpb24gOTA1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNiArMTIwLDggQEAgcHVibGljOgogICAgIHZv
aWQgc2V0T3JpZW50VG9BdXRvKCk7CiAgICAgdm9pZCBzZXRPcmllbnRUb0FuZ2xlKGNvbnN0IFNW
R0FuZ2xlJik7CiAKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBvcmllbnRUeXBl
UHJvcGVydHlJbmZvKCk7CisKIHByaXZhdGU6CiAgICAgU1ZHTWFya2VyRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApAQCAtMTI4LDkgKzEzMCw2IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAg
IHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRC
eVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5n
ZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CkBAIC0xMzgs
MzMgKzEzNywzMyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2
ZUxlbmd0aHMoKSBjb25zdDsKIAorICAgIHZvaWQgc3luY2hyb25pemVPcmllbnRUeXBlKCk7CisK
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBvcmllbnRUeXBlSWRlbnRpZmllcigpOwog
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG9yaWVudEFuZ2xlSWRlbnRpZmllcigpOwot
Ci0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklN
QVRFRF9MRU5HVEgoUmVmWCwgcmVmWCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSZWZZ
LCByZWZZKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKE1hcmtlcldpZHRoLCBtYXJrZXJX
aWR0aCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChNYXJrZXJIZWlnaHQsIG1hcmtlckhl
aWdodCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKE1hcmtlclVuaXRzLCBtYXJr
ZXJVbml0cywgU1ZHTWFya2VyVW5pdHNUeXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURfQU5HTEUo
T3JpZW50QW5nbGUsIG9yaWVudEFuZ2xlKQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotCi0gICAgLy8gU1ZHRml0VG9WaWV3
Qm94Ci0gICAgREVDTEFSRV9BTklNQVRFRF9SRUNUKFZpZXdCb3gsIHZpZXdCb3gpCi0gICAgREVD
TEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHBy
ZXNlcnZlQXNwZWN0UmF0aW8pCi0KKyAKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHTWFya2VyRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgo
UmVmWCwgcmVmWCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUmVmWSwgcmVmWSkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoTWFya2VyV2lkdGgsIG1hcmtlcldpZHRo
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChNYXJrZXJIZWlnaHQsIG1hcmtlckhl
aWdodCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihNYXJrZXJVbml0cywg
bWFya2VyVW5pdHMsIFNWR01hcmtlclVuaXRzVHlwZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9BTkdMRShPcmllbnRBbmdsZSwgb3JpZW50QW5nbGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1JFQ1QoVmlld0JveCwgdmlld0JveCkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNw
ZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURf
UFJPUEVSVElFUworICAKIHB1YmxpYzoKLSAgICAvLyBDdXN0b20gYW5pbWF0ZWQgcHJvcGVydHk6
IG9yaWVudFR5cGUKKyAgICAvLyBDdXN0b20gJ29yaWVudFR5cGUnIHByb3BlcnR5LgorICAgIHN0
YXRpYyB2b2lkIHN5bmNocm9uaXplT3JpZW50VHlwZSh2b2lkKiBjb250ZXh0RWxlbWVudCk7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVP
cmllbnRUeXBlV3JhcHBlcih2b2lkKiBjb250ZXh0RWxlbWVudCk7CiAgICAgU1ZHTWFya2VyT3Jp
ZW50VHlwZSYgb3JpZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50VHlwZS52YWx1ZTsg
fQogICAgIFNWR01hcmtlck9yaWVudFR5cGUmIG9yaWVudFR5cGVCYXNlVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX29yaWVudFR5cGUudmFsdWU7IH0KICAgICB2b2lkIHNldE9yaWVudFR5cGVCYXNl
VmFsdWUoY29uc3QgU1ZHTWFya2VyT3JpZW50VHlwZSYgdHlwZSkgeyBtX29yaWVudFR5cGUudmFs
dWUgPSB0eXBlOyB9CiAgICAgUGFzc1JlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVy
dHlUZWFyT2ZmPFNWR01hcmtlck9yaWVudFR5cGU+ID4gb3JpZW50VHlwZUFuaW1hdGVkKCk7CiAK
IHByaXZhdGU6Ci0gICAgdm9pZCBzeW5jaHJvbml6ZU9yaWVudFR5cGUoKTsKICAgICBtdXRhYmxl
IFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdNYXJrZXJPcmllbnRUeXBlPiBt
X29yaWVudFR5cGU7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5j
cHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTQgKzM2LDI3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRF
RF9FTlVNRVJBVElPTihTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6Om1hc2tVbml0c0F0dHIsIE1h
c2tVbml0cywgbWFza1VuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQotREVGSU5FX0FO
SU1BVEVEX0VOVU1FUkFUSU9OKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6bWFza0NvbnRlbnRV
bml0c0F0dHIsIE1hc2tDb250ZW50VW5pdHMsIG1hc2tDb250ZW50VW5pdHMsIFNWR1VuaXRUeXBl
czo6U1ZHVW5pdFR5cGUpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01hc2tFbGVtZW50LCBT
VkdOYW1lczo6eEF0dHIsIFgsIHgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01hc2tFbGVt
ZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01h
c2tFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0aCwgd2lkdGgpCi1ERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0
LCBoZWlnaHQpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdNYXNrRWxlbWVudCwgU1ZHTmFt
ZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BS
T1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHTWFza0VsZW1lbnQs
IFNWR05hbWVzOjptYXNrVW5pdHNBdHRyLCBNYXNrVW5pdHMsIG1hc2tVbml0cywgU1ZHVW5pdFR5
cGVzOjpTVkdVbml0VHlwZSkKKyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHTWFz
a0VsZW1lbnQsIFNWR05hbWVzOjptYXNrQ29udGVudFVuaXRzQXR0ciwgTWFza0NvbnRlbnRVbml0
cywgbWFza0NvbnRlbnRVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICBERUZJ
TkVfQU5JTUFURURfTEVOR1RIKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgp
CisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6OnlB
dHRyLCBZLCB5KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTWFza0VsZW1lbnQsIFNW
R05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQp
CisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHTWFza0VsZW1lbnQsIFNWR05hbWVzOjpl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwg
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElF
UworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR01hc2tFbGVtZW50KQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKG1hc2tVbml0cykKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShtYXNrQ29udGVudFVuaXRzKQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh3aWR0
aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShoZWlnaHQpCisgICAgUkVH
SVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkK
KyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRMb2NhdGFi
bGVFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rl
c3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR01hc2tF
bGVtZW50OjpTVkdNYXNrRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KQpAQCAtNTcsNiArNzAsNyBAQCBpbmxpbmUgU1ZHTWFza0VsZW1lbnQ6OlNWR01h
c2tFbGVtZW50KGNvCiAgICAgLy8gU3BlYzogSWYgdGhlIHgveSBhdHRyaWJ1dGUgaXMgbm90IHNw
ZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICItMTAlIiB3ZXJlIHNwZWNp
ZmllZC4KICAgICAvLyBTcGVjOiBJZiB0aGUgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qg
c3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEyMCUiIHdlcmUgc3Bl
Y2lmaWVkLgogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjptYXNrVGFnKSk7CisgICAg
cmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdNYXNrRWxlbWVudCgpOwogfQogCiBQYXNz
UmVmUHRyPFNWR01hc2tFbGVtZW50PiBTVkdNYXNrRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTE1MSw4OCArMTY1LDYg
QEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgICAgICBvYmpl
Y3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCi12b2lkIFNWR01hc2tFbGVtZW50OjpzeW5j
aHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlm
IChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplTWFza1VuaXRz
KCk7Ci0gICAgICAgIHN5bmNocm9uaXplTWFza0NvbnRlbnRVbml0cygpOwotICAgICAgICBzeW5j
aHJvbml6ZVgoKTsKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
V2lkdGgoKTsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAgICAgc3luY2hyb25p
emVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRFbGVtZW50
OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNW
R1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjptYXNrVW5pdHNB
dHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplTWFza1VuaXRzKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1hc2tDb250ZW50VW5pdHNB
dHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplTWFza0NvbnRlbnRVbml0cygpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVZKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OndpZHRoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVdpZHRoKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsK
LSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVy
dGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR01h
c2tFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
OwotfQotCi12b2lkIFNWR01hc2tFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBT
VkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0
aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om1hc2tVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVy
YXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6bWFz
a0NvbnRlbnRVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotfQotCiB2b2lkIFNWR01h
c2tFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJl
Zm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAg
ICAgU1ZHU3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVm
b3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNYXNrRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNYXNrRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwyNSArNTAsMjYgQEAg
cHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7
CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wg
Y2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFm
dGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCBS
ZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsK
IAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKLSAg
ICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVE
X0VOVU1FUkFUSU9OKE1hc2tVbml0cywgbWFza1VuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oTWFza0NvbnRlbnRVbml0cywg
bWFza0NvbnRlbnRVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKLSAgICBERUNMQVJF
X0FOSU1BVEVEX0xFTkdUSChYLCB4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkp
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQotICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJFR0lOX0RFQ0xB
UkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdNYXNrRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9FTlVNRVJBVElPTihNYXNrVW5pdHMsIG1hc2tVbml0cywgU1ZHVW5pdFR5cGVzOjpT
VkdVbml0VHlwZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihNYXNrQ29u
dGVudFVuaXRzLCBtYXNrQ29udGVudFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX0xFTkdUSChZLCB5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0
aCwgd2lkdGgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVh
dHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVu
c2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0
czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogfTsKIAogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50LmNwcAkocmV2aXNpb24g
OTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDE3ICszNiw2IEBAIFBhc3NSZWZQdHI8U1ZHTWlzc2luZ0ds
eXBoRWxlbWVudD4gU1ZHTWkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR01pc3NpbmdHbHlw
aEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHTWlzc2luZ0dseXBoRWxlbWVudDo6
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBTVkdTdHlsZWRFbGVtZW50
OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKSk7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkdfRk9OVFMpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50LmgJKHJldmlzaW9u
IDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNW
R01pc3NpbmdHbHlwaEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAg
dmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKLQogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVS
ZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKQEAgLTQyLDUgKzM5LDMg
QEAgcHJpdmF0ZToKIAogI2VuZGlmIC8vIEVOQUJMRShTVkdfRk9OVFMpCiAjZW5kaWYKLQotLy8g
dmltOnRzPTQ6bm9ldApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDMyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9OVU1C
RVIoU1ZHUGF0aEVsZW1lbnQsIFNWR05hbWVzOjpwYXRoTGVuZ3RoQXR0ciwgUGF0aExlbmd0aCwg
cGF0aExlbmd0aCkKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1BhdGhFbGVtZW50LCBTVkdO
YW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisvLyBEZWZpbmUgY3VzdG9tIGFuaW1h
dGVkIHByb3BlcnR5ICdkJy4KK2NvbnN0IFNWR1Byb3BlcnR5SW5mbyogU1ZHUGF0aEVsZW1lbnQ6
OmRQcm9wZXJ0eUluZm8oKQoreworICAgIHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIHNf
cHJvcGVydHlJbmZvID0gMDsKKyAgICBpZiAoIXNfcHJvcGVydHlJbmZvKSB7CisgICAgICAgIHNf
cHJvcGVydHlJbmZvID0gbmV3IFNWR1Byb3BlcnR5SW5mbyhBbmltYXRlZFBhdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6ZEF0dHIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6ZEF0
dHIubG9jYWxOYW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmU1ZHUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplRCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZTVkdQYXRoRWxlbWVudDo6bG9va3VwT3JDcmVhdGVE
V3JhcHBlcik7CisgICAgfQorICAgIHJldHVybiBzX3Byb3BlcnR5SW5mbzsKK30KKworQkVHSU5f
REVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNW
R1BhdGhFbGVtZW50LCBTVkdOYW1lczo6cGF0aExlbmd0aEF0dHIsIFBhdGhMZW5ndGgsIHBhdGhM
ZW5ndGgpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHUGF0aEVsZW1lbnQsIFNWR05h
bWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJP
UEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1BhdGhFbGVt
ZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGQpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocGF0aExlbmd0aCkKKyAgICBSRUdJU1RFUl9MT0NB
TF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lT
VEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQor
RU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1BhdGhFbGVtZW50
OjpTVkdQYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKQEAgLTU2LDYgKzc5LDcgQEAgaW5saW5lIFNWR1BhdGhFbGVtZW50OjpTVkdQYXRo
RWxlbWVudChjbwogICAgICwgbV9wYXRoU2VnTGlzdChQYXRoU2VnVW5hbHRlcmVkUm9sZSkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6cGF0aFRhZykpOworICAgIHJlZ2lzdGVy
QW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHUGF0aEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxT
VkdQYXRoRWxlbWVudD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0yMzgsNyArMjYyLDcgQEAgdm9pZCBT
VkdQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgIFJlbmRlclNWR1BhdGgqIHJl
bmRlcmVyID0gc3RhdGljX2Nhc3Q8UmVuZGVyU1ZHUGF0aCo+KHRoaXMtPnJlbmRlcmVyKCkpOwog
CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkQXR0cikgewotICAgICAgICBpZiAobV9h
bmltYXRhYmxlUGF0aFNlZ0xpc3QpIHsKKyAgICAgICAgaWYgKFNWR0FuaW1hdGVkUHJvcGVydHk6
Omxvb2t1cFdyYXBwZXI8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4odGhp
cywgZFByb3BlcnR5SW5mbygpKSkgewogICAgICAgICAgICAgU1ZHUGF0aFNlZ0xpc3QgbmV3TGlz
dChQYXRoU2VnVW5hbHRlcmVkUm9sZSk7CiAgICAgICAgICAgICBTVkdQYXRoUGFyc2VyRmFjdG9y
eSogZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7CiAgICAgICAgICAgICBm
YWN0b3J5LT5idWlsZFNWR1BhdGhTZWdMaXN0RnJvbUJ5dGVTdHJlYW0obV9wYXRoQnl0ZVN0cmVh
bS5nZXQoKSwgdGhpcywgbmV3TGlzdCwgVW5hbHRlcmVkUGFyc2luZyk7CkBAIC0yNTMsODAgKzI3
NywzMiBAQCB2b2lkIFNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkCiAgICAgICAg
IFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlk
YXRpb24ocmVuZGVyZXIpOwogfQogCi12b2lkIFNWR1BhdGhFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQorUGFzc1JlZlB0cjxTVkdBbmlt
YXRlZFByb3BlcnR5PiBTVkdQYXRoRWxlbWVudDo6bG9va3VwT3JDcmVhdGVEV3JhcHBlcih2b2lk
KiBjb250ZXh0RWxlbWVudCkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewot
ICAgICAgICBzeW5jaHJvbml6ZUQoKTsKLSAgICAgICAgc3luY2hyb25pemVQYXRoTGVuZ3RoKCk7
Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAg
ICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAg
ICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0
ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkQXR0cikgewotICAgICAgICBzeW5j
aHJvbml6ZUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6cGF0aExlbmd0aEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVQYXRoTGVu
Z3RoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICBTVkdQYXRoRWxlbWVudCogb3du
ZXJUeXBlID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aEVsZW1lbnQqPihjb250ZXh0RWxlbWVudCk7CiAK
LSAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAg
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQorICAgIFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBmYWN0b3J5ID0gU1ZH
UGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKKyAgICBmYWN0b3J5LT5idWlsZFNWR1BhdGhTZWdM
aXN0RnJvbUJ5dGVTdHJlYW0ob3duZXJUeXBlLT5tX3BhdGhCeXRlU3RyZWFtLmdldCgpLCBvd25l
clR5cGUsIG93bmVyVHlwZS0+bV9wYXRoU2VnTGlzdC52YWx1ZSwgVW5hbHRlcmVkUGFyc2luZyk7
CiAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR1BhdGhFbGVtZW50LCBTVkdBbmltYXRlZFBh
dGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLCBTVkdQYXRoU2VnTGlzdCwgdHJ1ZT4KKyAgICAgICAg
ICAgKG93bmVyVHlwZSwgZFByb3BlcnR5SW5mbygpLCBvd25lclR5cGUtPm1fcGF0aFNlZ0xpc3Qu
dmFsdWUpOwogfQogCi12b2lkIFNWR1BhdGhFbGVtZW50OjpzeW5jaHJvbml6ZUQoKQordm9pZCBT
VkdQYXRoRWxlbWVudDo6c3luY2hyb25pemVEKHZvaWQqIGNvbnRleHRFbGVtZW50KQogewotICAg
IGlmICghbV9wYXRoU2VnTGlzdC5zaG91bGRTeW5jaHJvbml6ZSkKKyAgICBBU1NFUlQoY29udGV4
dEVsZW1lbnQpOworICAgIFNWR1BhdGhFbGVtZW50KiBvd25lclR5cGUgPSBzdGF0aWNfY2FzdDxT
VkdQYXRoRWxlbWVudCo+KGNvbnRleHRFbGVtZW50KTsKKyAgICBpZiAoIW93bmVyVHlwZS0+bV9w
YXRoU2VnTGlzdC5zaG91bGRTeW5jaHJvbml6ZSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUodGhpcywgU1ZH
TmFtZXM6OmRBdHRyLCBtX3BhdGhTZWdMaXN0LnZhbHVlLnZhbHVlQXNTdHJpbmcoKSk7Ci19Ci0K
LUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdQYXRoRWxlbWVudDo6YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICBy
ZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdQYXRoRWxl
bWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjpkQXR0ciwgQW5pbWF0ZWRQYXRoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUob3duZXJUeXBl
LCBkUHJvcGVydHlJbmZvKCktPmF0dHJpYnV0ZU5hbWUsIG93bmVyVHlwZS0+bV9wYXRoU2VnTGlz
dC52YWx1ZS52YWx1ZUFzU3RyaW5nKCkpOwogfQogCiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVh
ck9mZiogU1ZHUGF0aEVsZW1lbnQ6OnBhdGhTZWdMaXN0KCkKIHsKLSAgICBpZiAoIW1fYW5pbWF0
YWJsZVBhdGhTZWdMaXN0KSB7Ci0gICAgICAgIG1fcGF0aFNlZ0xpc3Quc2hvdWxkU3luY2hyb25p
emUgPSB0cnVlOwotCi0gICAgICAgIFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBmYWN0b3J5ID0gU1ZH
UGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKLSAgICAgICAgZmFjdG9yeS0+YnVpbGRTVkdQYXRo
U2VnTGlzdEZyb21CeXRlU3RyZWFtKG1fcGF0aEJ5dGVTdHJlYW0uZ2V0KCksIHRoaXMsIG1fcGF0
aFNlZ0xpc3QudmFsdWUsIFVuYWx0ZXJlZFBhcnNpbmcpOwotCi0gICAgICAgIG1fYW5pbWF0YWJs
ZVBhdGhTZWdMaXN0ID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVy
PFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYsIFNWR1BhdGhTZWdMaXN0Pgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMsIFNWR05hbWVzOjpkQXR0ciwg
U1ZHTmFtZXM6OmRBdHRyLmxvY2FsTmFtZSgpLCBtX3BhdGhTZWdMaXN0LnZhbHVlKTsKLSAgICB9
Ci0KKyAgICBtX3BhdGhTZWdMaXN0LnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKKyAgICBpZiAo
IW1fYW5pbWF0YWJsZVBhdGhTZWdMaXN0KQorICAgICAgICBtX2FuaW1hdGFibGVQYXRoU2VnTGlz
dCA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVh
ck9mZj4obG9va3VwT3JDcmVhdGVEV3JhcHBlcih0aGlzKSk7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmKj4obV9hbmltYXRhYmxlUGF0aFNlZ0xp
c3QtPmJhc2VWYWwoUGF0aFNlZ1VuYWx0ZXJlZFJvbGUpKTsKIH0KIApAQCAtMzM4LDE2ICszMTQs
OSBAQCBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZiogU1ZHUGF0aEVsCiAKIFNWR1BhdGhT
ZWdMaXN0UHJvcGVydHlUZWFyT2ZmKiBTVkdQYXRoRWxlbWVudDo6YW5pbWF0ZWRQYXRoU2VnTGlz
dCgpCiB7Ci0gICAgaWYgKCFtX2FuaW1hdGFibGVQYXRoU2VnTGlzdCkgewotICAgICAgICBtX3Bh
dGhTZWdMaXN0LnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKLQotICAgICAgICBTVkdQYXRoUGFy
c2VyRmFjdG9yeSogZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7Ci0gICAg
ICAgIGZhY3RvcnktPmJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbShtX3BhdGhCeXRl
U3RyZWFtLmdldCgpLCB0aGlzLCBtX3BhdGhTZWdMaXN0LnZhbHVlLCBVbmFsdGVyZWRQYXJzaW5n
KTsKLQotICAgICAgICBtX2FuaW1hdGFibGVQYXRoU2VnTGlzdCA9IFNWR0FuaW1hdGVkUHJvcGVy
dHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlU
ZWFyT2ZmLCBTVkdQYXRoU2VnTGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICh0aGlzLCBTVkdOYW1lczo6ZEF0dHIsIFNWR05hbWVzOjpkQXR0ci5sb2NhbE5hbWUoKSwgbV9w
YXRoU2VnTGlzdC52YWx1ZSk7Ci0gICAgfQotCisgICAgbV9wYXRoU2VnTGlzdC5zaG91bGRTeW5j
aHJvbml6ZSA9IHRydWU7CisgICAgaWYgKCFtX2FuaW1hdGFibGVQYXRoU2VnTGlzdCkKKyAgICAg
ICAgbV9hbmltYXRhYmxlUGF0aFNlZ0xpc3QgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR0FuaW1h
dGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+KGxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIodGhp
cykpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9m
Zio+KG1fYW5pbWF0YWJsZVBhdGhTZWdMaXN0LT5hbmltVmFsKFBhdGhTZWdVbmFsdGVyZWRSb2xl
KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCShyZXZpc2lvbiA5
MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC05MSwxMSArOTEsMTIgQEAgcHVibGljOgogICAgIFNWR1BhdGhTZWdMaXN0UHJvcGVy
dHlUZWFyT2ZmKiBhbmltYXRlZE5vcm1hbGl6ZWRQYXRoU2VnTGlzdCgpOwogCiAgICAgU1ZHUGF0
aEJ5dGVTdHJlYW0qIHBhdGhCeXRlU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9wYXRoQnl0ZVN0
cmVhbS5nZXQoKTsgfQotICAgIFNWR0FuaW1hdGVkUHJvcGVydHkqIGFuaW1hdGFibGVQYXRoU2Vn
TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0YWJsZVBhdGhTZWdMaXN0LmdldCgpOyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgdG9QYXRoRGF0YShQYXRoJikgY29uc3Q7CiAgICAgdm9pZCBwYXRo
U2VnTGlzdENoYW5nZWQoU1ZHUGF0aFNlZ1JvbGUpOwogCisgICAgc3RhdGljIGNvbnN0IFNWR1By
b3BlcnR5SW5mbyogZFByb3BlcnR5SW5mbygpOworCiBwcml2YXRlOgogICAgIFNWR1BhdGhFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCkBAIC0xMDQsMjEgKzEwNSwy
NCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSopOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzTWFya2Vy
cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRl
Y2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFBhdGhMZW5ndGgsIHBhdGhM
ZW5ndGgpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFS
RV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQpCisgICAgLy8gQ3VzdG9tICdkJyBwcm9wZXJ0eQorICAgIHN0YXRpYyB2
b2lkIHN5bmNocm9uaXplRCh2b2lkKiBjb250ZXh0RWxlbWVudCk7CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVEV3JhcHBlcih2b2lkKiBj
b250ZXh0RWxlbWVudCk7CisKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHUGF0aEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFBhdGhMZW5n
dGgsIHBhdGhMZW5ndGgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRl
bnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3Vh
Z2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiAKLSAg
ICB2b2lkIHN5bmNocm9uaXplRCgpOwotCi1wcm90ZWN0ZWQ6Citwcml2YXRlOgogICAgIE93blB0
cjxTVkdQYXRoQnl0ZVN0cmVhbT4gbV9wYXRoQnl0ZVN0cmVhbTsKICAgICBtdXRhYmxlIFNWR1N5
bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdQYXRoU2VnTGlzdD4gbV9wYXRoU2VnTGlz
dDsKICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4gbV9h
bmltYXRhYmxlUGF0aFNlZ0xpc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNl
Z1dpdGhDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhT
ZWdXaXRoQ29udGV4dC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoU2VnV2l0aENvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBw
dWJsaWM6CiAgICAgICAgIGNhc2UgUGF0aFNlZ1VuZGVmaW5lZFJvbGU6CiAgICAgICAgICAgICBy
ZXR1cm4gMDsKICAgICAgICAgY2FzZSBQYXRoU2VnVW5hbHRlcmVkUm9sZToKLSAgICAgICAgICAg
IHJldHVybiBtX2VsZW1lbnQtPmFuaW1hdGFibGVQYXRoU2VnTGlzdCgpOworICAgICAgICAgICAg
cmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cFdyYXBwZXI8U1ZHQW5pbWF0ZWRQYXRo
U2VnTGlzdFByb3BlcnR5VGVhck9mZj4obV9lbGVtZW50LmdldCgpLCBTVkdQYXRoRWxlbWVudDo6
ZFByb3BlcnR5SW5mbygpKTsKICAgICAgICAgY2FzZSBQYXRoU2VnTm9ybWFsaXplZFJvbGU6CiAg
ICAgICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NDEyIC0gSW1wbGVtZW50IG5vcm1hbGl6ZWQgcGF0aCBzZWdtZW50IGxpc3RzIQogICAg
ICAgICAgICAgcmV0dXJuIDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxl
bWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRl
cm5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTggKzQyLDM1IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklO
RV9BTklNQVRFRF9MRU5HVEgoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwg
eCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjp5
QXR0ciwgWSwgeSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUGF0dGVybkVsZW1lbnQsIFNW
R05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgo
U1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdodCkK
LURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6
OnBhdHRlcm5Vbml0c0F0dHIsIFBhdHRlcm5Vbml0cywgcGF0dGVyblVuaXRzLCBTVkdVbml0VHlw
ZXM6OlNWR1VuaXRUeXBlKQotREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR1BhdHRlcm5F
bGVtZW50LCBTVkdOYW1lczo6cGF0dGVybkNvbnRlbnRVbml0c0F0dHIsIFBhdHRlcm5Db250ZW50
VW5pdHMsIHBhdHRlcm5Db250ZW50VW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCi1E
RUZJTkVfQU5JTUFURURfVFJBTlNGT1JNX0xJU1QoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVz
OjpwYXR0ZXJuVHJhbnNmb3JtQXR0ciwgUGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblRyYW5zZm9y
bSkgCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR1BhdHRlcm5FbGVtZW50LCBYTGlua05hbWVz
OjpocmVmQXR0ciwgSHJlZiwgaHJlZikKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1BhdHRl
cm5FbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi1ERUZJTkVf
QU5JTUFURURfUkVDVChTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBW
aWV3Qm94LCB2aWV3Qm94KQotREVGSU5FX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oU1ZH
UGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgUHJlc2Vy
dmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykgCitCRUdJTl9ERUZJTkVfQU5JTUFU
RURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUGF0dGVybkVsZW1l
bnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNW
R1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCisgICAgREVGSU5FX0FOSU1B
VEVEX0xFTkdUSChTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgV2lkdGgs
IHdpZHRoKQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUGF0dGVybkVsZW1lbnQsIFNW
R05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdodCkKKyAgICBERUZJTkVfQU5JTUFURURf
RU5VTUVSQVRJT04oU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRy
LCBQYXR0ZXJuVW5pdHMsIHBhdHRlcm5Vbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkK
KyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05h
bWVzOjpwYXR0ZXJuQ29udGVudFVuaXRzQXR0ciwgUGF0dGVybkNvbnRlbnRVbml0cywgcGF0dGVy
bkNvbnRlbnRVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICBERUZJTkVfQU5J
TUFURURfVFJBTlNGT1JNX0xJU1QoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjpwYXR0ZXJu
VHJhbnNmb3JtQXR0ciwgUGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblRyYW5zZm9ybSkgCisgICAg
REVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdQYXR0ZXJuRWxlbWVudCwgWExpbmtOYW1lczo6aHJl
ZkF0dHIsIEhyZWYsIGhyZWYpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHUGF0dGVy
bkVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBERUZJ
TkVfQU5JTUFURURfUkVDVChTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnZpZXdCb3hBdHRy
LCBWaWV3Qm94LCB2aWV3Qm94KQorICAgIERFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJB
VElPKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIs
IFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pIAorRU5EX0RFRklORV9B
TklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHUGF0dGVybkVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
eCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5KQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHdpZHRoKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1B
VEVEX1BST1BFUlRZKGhlaWdodCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShwYXR0ZXJuVW5pdHMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocGF0
dGVybkNvbnRlbnRVbml0cykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShw
YXR0ZXJuVHJhbnNmb3JtKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGhy
ZWYpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh2aWV3Qm94
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHByZXNlcnZlQXNwZWN0UmF0
aW8pIAorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVs
ZW1lbnQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMp
CitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHUGF0dGVybkVs
ZW1lbnQ6OlNWR1BhdHRlcm5FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCkBAIC02NSw2ICs4Miw3IEBAIGlubGluZSBTVkdQYXR0ZXJuRWxlbWVudDo6U1ZHUGF0dGVy
bkVsZW0KICAgICAsIG1fcGF0dGVybkNvbnRlbnRVbml0cyhTVkdVbml0VHlwZXM6OlNWR19VTklU
X1RZUEVfVVNFUlNQQUNFT05VU0UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6
OnBhdHRlcm5UYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1BhdHRl
cm5FbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHUGF0dGVybkVsZW1lbnQ+IFNWR1BhdHRl
cm5FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQpAQCAtMTgwLDExMCArMTk4LDYgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbgogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwog
fQogCi12b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoteyAgICAKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5h
bWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVBhdHRlcm5Vbml0cygpOwotICAgICAgICBzeW5j
aHJvbml6ZVBhdHRlcm5Db250ZW50VW5pdHMoKTsKLSAgICAgICAgc3luY2hyb25pemVQYXR0ZXJu
VHJhbnNmb3JtKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6
ZVkoKTsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhl
aWdodCgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsK
LSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIFNWR0ZpdFRvVmlld0JveDo6c3lu
Y2hyb25pemVQcm9wZXJ0aWVzKGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9u
aXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZH
U3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBhdHRlcm5Vbml0
c0F0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVQYXR0ZXJuVW5pdHMoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cGF0dGVybkNvbnRl
bnRVbml0c0F0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVQYXR0ZXJuQ29udGVudFVuaXRzKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnBhdHRlcm5UcmFuc2Zvcm1BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplUGF0dGVyblRyYW5z
Zm9ybSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjp4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVdpZHRo
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmhlaWdodEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChT
VkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNW
R0ZpdFRvVmlld0JveDo6c3luY2hyb25pemVQcm9wZXJ0aWVzKGF0dHJOYW1lKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJO
YW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHUGF0dGVybkVsZW1lbnQ6OmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAo
KSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQg
U1ZHUGF0dGVybkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0g
ICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
ID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZEVs
ZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgp
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0
ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6cGF0dGVyblVuaXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwYXR0ZXJuQ29udGVudFVuaXRz
QXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjpwYXR0ZXJuVHJhbnNmb3JtQXR0ciwgQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJl
ZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBBbmltYXRlZFJlY3QpOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIEFu
aW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7Ci19Ci0KIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdl
LCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKICAgICBTVkdTdHls
ZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2Us
IGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdHRlcm5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdHRlcm5FbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdHRlcm5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDMzICs2MCwzMCBAQCBw
cml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBj
aGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0
ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwog
CiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIAotICAg
IC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIKFgsIHgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKLSAgICBERUNM
QVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwgd2lkdGgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEgoSGVpZ2h0LCBoZWlnaHQpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihQ
YXR0ZXJuVW5pdHMsIHBhdHRlcm5Vbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFBhdHRlcm5Db250ZW50VW5pdHMsIHBhdHRl
cm5Db250ZW50VW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCi0gICAgREVDTEFSRV9B
TklNQVRFRF9UUkFOU0ZPUk1fTElTVChQYXR0ZXJuVHJhbnNmb3JtLCBwYXR0ZXJuVHJhbnNmb3Jt
KQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkco
SHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKLQotICAgIC8vIFNWR1BhdHRlcm5FbGVtZW50Ci0gICAgREVD
TEFSRV9BTklNQVRFRF9SRUNUKFZpZXdCb3gsIHZpZXdCb3gpCi0gICAgREVDTEFSRV9BTklNQVRF
RF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0
UmF0aW8pIAorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdQYXR0ZXJu
RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEgoV2lkdGgsIHdpZHRoKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWln
aHQsIGhlaWdodCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihQYXR0ZXJu
VW5pdHMsIHBhdHRlcm5Vbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihQYXR0ZXJuQ29udGVudFVuaXRzLCBwYXR0ZXJu
Q29udGVudFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFBhdHRlcm5UcmFuc2Zvcm0sIHBhdHRlcm5UcmFuc2Zv
cm0pCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCisgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1JFQ1QoVmll
d0JveCwgdmlld0JveCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJB
VElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pIAorICAgIEVORF9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRl
bnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3Vh
Z2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9s
eUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxl
bWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTIgKzM1LDM1IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9B
TklNQVRFRF9CT09MRUFOKFNWR1BvbHlFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQpCisvLyBEZWZpbmUgY3VzdG9tIGFuaW1hdGVkIHByb3BlcnR5ICdwb2ludHMn
LgorY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBTVkdQb2x5RWxlbWVudDo6cG9pbnRzUHJvcGVydHlJ
bmZvKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBzX3Byb3BlcnR5SW5m
byA9IDA7CisgICAgaWYgKCFzX3Byb3BlcnR5SW5mbykgeworICAgICAgICBzX3Byb3BlcnR5SW5m
byA9IG5ldyBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRQb2ludHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6cG9pbnRzQXR0ciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpwb2ludHNB
dHRyLmxvY2FsTmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJlNWR1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVBvaW50cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTVkdQb2x5RWxlbWVudDo6bG9va3VwT3JD
cmVhdGVQb2ludHNXcmFwcGVyKTsKKyAgICB9CisgICAgcmV0dXJuIHNfcHJvcGVydHlJbmZvOwor
fQorCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRF
RF9CT09MRUFOKFNWR1BvbHlFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdQb2x5RWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWShwb2ludHMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJ
U1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTCiAKIFNWR1BvbHlFbGVtZW50OjpTVkdQb2x5RWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKKyAgICByZWdp
c3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1BvbHlFbGVtZW50KCk7ICAgIAogfQogCiBib29s
IFNWR1BvbHlFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKQEAgLTY4LDggKzkxLDggQEAgdm9pZCBTVkdQb2x5RWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dAogICAgICAgICBpZiAoIXBvaW50c0xpc3RGcm9tU1ZHRGF0YShuZXdMaXN0
LCB2YWx1ZSkpCiAgICAgICAgICAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCkt
PnJlcG9ydEVycm9yKCJQcm9ibGVtIHBhcnNpbmcgcG9pbnRzPVwiIiArIHZhbHVlICsgIlwiIik7
CiAKLSAgICAgICAgaWYgKFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExp
c3Q+KiBsaXN0ID0gbV9hbmltYXRhYmxlUG9pbnRzTGlzdC5nZXQoKSkKLSAgICAgICAgICAgIGxp
c3QtPmRldGFjaExpc3RXcmFwcGVycyhuZXdMaXN0LnNpemUoKSk7CisgICAgICAgIGlmIChTVkdB
bmltYXRlZFByb3BlcnR5KiB3cmFwcGVyID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwV3Jh
cHBlcjxTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiA+KHRoaXMs
IHBvaW50c1Byb3BlcnR5SW5mbygpKSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFNWR0FuaW1h
dGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3Q+Kj4od3JhcHBlciktPmRldGFjaExp
c3RXcmFwcGVycyhuZXdMaXN0LnNpemUoKSk7CiAKICAgICAgICAgbV9wb2ludHMudmFsdWUgPSBu
ZXdMaXN0OwogICAgICAgICByZXR1cm47CkBAIC0xMTUsNjcgKzEzOCwzMyBAQCB2b2lkIFNWR1Bv
bHlFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLXZvaWQgU1ZHUG9seUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCit2b2lkIFNWR1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVBv
aW50cyh2b2lkKiBjb250ZXh0RWxlbWVudCkKIHsKLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQoKTsKLSAgICAgICAgc3luY2hyb25pemVQb2ludHMoKTsKLSAgICAgICAgU1ZHVGVz
dHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7CisgICAgQVNTRVJUKGNv
bnRleHRFbGVtZW50KTsKKyAgICBTVkdQb2x5RWxlbWVudCogb3duZXJUeXBlID0gc3RhdGljX2Nh
c3Q8U1ZHUG9seUVsZW1lbnQqPihjb250ZXh0RWxlbWVudCk7CisgICAgaWYgKCFvd25lclR5cGUt
Pm1fcG9pbnRzLnNob3VsZFN5bmNocm9uaXplKQogICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKQotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsK
LSAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXR0cikKLSAgICAgICAg
c3luY2hyb25pemVQb2ludHMoKTsKLSAgICBlbHNlIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXMo
dGhpcywgYXR0ck5hbWUpOworICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1
ZT46OnN5bmNocm9uaXplKG93bmVyVHlwZSwgcG9pbnRzUHJvcGVydHlJbmZvKCktPmF0dHJpYnV0
ZU5hbWUsIG93bmVyVHlwZS0+bV9wb2ludHMudmFsdWUudmFsdWVBc1N0cmluZygpKTsKIH0KIAot
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1BvbHlFbGVtZW50OjphdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCitQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IFNWR1BvbHlF
bGVtZW50Ojpsb29rdXBPckNyZWF0ZVBvaW50c1dyYXBwZXIodm9pZCogY29udGV4dEVsZW1lbnQp
CiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
c19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR1BvbHlFbGVtZW50OjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3Nl
ZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnBvaW50c0F0dHIs
IEFuaW1hdGVkUG9pbnRzKTsKLX0KLQotdm9pZCBTVkdQb2x5RWxlbWVudDo6c3luY2hyb25pemVQ
b2ludHMoKQotewotICAgIGlmICghbV9wb2ludHMuc2hvdWxkU3luY2hyb25pemUpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5
bmNocm9uaXplKHRoaXMsIFNWR05hbWVzOjpwb2ludHNBdHRyLCBtX3BvaW50cy52YWx1ZS52YWx1
ZUFzU3RyaW5nKCkpOworICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7CisgICAgU1ZHUG9seUVs
ZW1lbnQqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR1BvbHlFbGVtZW50Kj4oY29udGV4dEVs
ZW1lbnQpOworICAgIHJldHVybiBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBPckNyZWF0ZVdy
YXBwZXI8U1ZHUG9seUVsZW1lbnQsIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQ
b2ludExpc3Q+LCBTVkdQb2ludExpc3QsIHRydWU+CisgICAgICAgICAgIChvd25lclR5cGUsIHBv
aW50c1Byb3BlcnR5SW5mbygpLCBvd25lclR5cGUtPm1fcG9pbnRzLnZhbHVlKTsKIH0KIAogU1ZH
TGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3Q+KiBTVkdQb2x5RWxlbWVudDo6cG9pbnRz
KCkKIHsKLSAgICBpZiAoIW1fYW5pbWF0YWJsZVBvaW50c0xpc3QpIHsKLSAgICAgICAgbV9wb2lu
dHMuc2hvdWxkU3luY2hyb25pemUgPSB0cnVlOwotICAgICAgICBtX2FuaW1hdGFibGVQb2ludHNM
aXN0ID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR0FuaW1h
dGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3Q+ICwgU1ZHUG9pbnRMaXN0PgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMsIFNWR05hbWVzOjpwb2ludHNBdHRy
LCBTVkdOYW1lczo6cG9pbnRzQXR0ci5sb2NhbE5hbWUoKSwgbV9wb2ludHMudmFsdWUpOwotICAg
IH0KLQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1Bv
aW50TGlzdD4qPihtX2FuaW1hdGFibGVQb2ludHNMaXN0LT5iYXNlVmFsKCkpOworICAgIG1fcG9p
bnRzLnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZH
TGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3Q+Kj4oc3RhdGljX3BvaW50ZXJfY2FzdDxT
VkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiA+KGxvb2t1cE9yQ3Jl
YXRlUG9pbnRzV3JhcHBlcih0aGlzKSktPmJhc2VWYWwoKSk7CiB9CiAKIFNWR0xpc3RQcm9wZXJ0
eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiogU1ZHUG9seUVsZW1lbnQ6OmFuaW1hdGVkUG9pbnRzKCkK
IHsKLSAgICBpZiAoIW1fYW5pbWF0YWJsZVBvaW50c0xpc3QpIHsKLSAgICAgICAgbV9wb2ludHMu
c2hvdWxkU3luY2hyb25pemUgPSB0cnVlOwotICAgICAgICBtX2FuaW1hdGFibGVQb2ludHNMaXN0
ID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR0FuaW1hdGVk
TGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3Q+ICwgU1ZHUG9pbnRMaXN0PgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMsIFNWR05hbWVzOjpwb2ludHNBdHRyLCBT
VkdOYW1lczo6cG9pbnRzQXR0ci5sb2NhbE5hbWUoKSwgbV9wb2ludHMudmFsdWUpOwotICAgIH0K
LQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50
TGlzdD4qPihtX2FuaW1hdGFibGVQb2ludHNMaXN0LT5hbmltVmFsKCkpOworICAgIG1fcG9pbnRz
LnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHTGlz
dFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3Q+Kj4oc3RhdGljX3BvaW50ZXJfY2FzdDxTVkdB
bmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiA+KGxvb2t1cE9yQ3JlYXRl
UG9pbnRzV3JhcHBlcih0aGlzKSktPmFuaW1WYWwoKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQb2x5RWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQb2x5RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBAIHB1
YmxpYzoKIAogICAgIFNWR1BvaW50TGlzdCYgcG9pbnRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9w
b2ludHMudmFsdWU7IH0KIAorICAgIHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIHBvaW50
c1Byb3BlcnR5SW5mbygpOworCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHUG9seUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKQEAgLTUxLDIwICs1MywyNCBAQCBwcml2YXRl
OgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsgCiAgICAg
dmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwot
ICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0g
ICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c01hcmtlcnMoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAKLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi0KLSAgICB2b2lkIHN5bmNocm9uaXplUG9pbnRzKCk7
CisgICAgLy8gQ3VzdG9tICdwb2ludHMnIHByb3BlcnR5CisgICAgc3RhdGljIHZvaWQgc3luY2hy
b25pemVQb2ludHModm9pZCogY29udGV4dEVsZW1lbnQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNWR0FuaW1hdGVkUHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlUG9pbnRzV3JhcHBlcih2b2lkKiBj
b250ZXh0RWxlbWVudCk7CisKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHUG9seUVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRl
bnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3Vh
Z2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiAKIHBy
b3RlY3RlZDoKICAgICBtdXRhYmxlIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxT
VkdQb2ludExpc3Q+IG1fcG9pbnRzOwotICAgIFJlZlB0cjxTVkdBbmltYXRlZExpc3RQcm9wZXJ0
eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiA+IG1fYW5pbWF0YWJsZVBvaW50c0xpc3Q7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDAsMTIgKzQwLDIyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJv
cGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50LCBTVkdOYW1lczo6Y3hBdHRyLCBDeCwgY3gpCi1ERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmN5QXR0ciwgQ3ksIGN5KQot
REVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVz
OjpyQXR0ciwgUiwgcikKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50LCBTVkdOYW1lczo6ZnhBdHRyLCBGeCwgZngpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RI
KFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmZ5QXR0ciwgRnksIGZ5KQorQkVH
SU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RI
KFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmN4QXR0ciwgQ3gsIGN4KQorICAg
IERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdOYW1l
czo6Y3lBdHRyLCBDeSwgY3kpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpyQXR0ciwgUiwgcikKKyAgICBERUZJTkVfQU5JTUFU
RURfTEVOR1RIKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmZ4QXR0ciwgRngs
IGZ4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
LCBTVkdOYW1lczo6ZnlBdHRyLCBGeSwgZnkpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJ
RVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoY3gpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoY3kpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkocikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShmeCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShmeSkKKyAgICBSRUdJ
U1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdHcmFkaWVudEVsZW1lbnQpCitFTkRf
UkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50OjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHR3JhZGllbnRFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQpAQCAtNTcsNiArNjcsNyBAQCBpbmxpbmUgU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50OjpTVkdSYWRpCiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIGN4L2N5L3IgYXR0cmlidXRl
IGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiNTAlIiB3
ZXJlIHNwZWNpZmllZC4KICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6cmFkaWFsR3Jh
ZGllbnRUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dD4gU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTI5LDY5ICsxNDAsNiBAQCB2b2lkIFNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmliCiAgICAgICAgIG9iamVjdC0+c2V0TmVl
ZHNMYXlvdXQodHJ1ZSk7CiB9CiAKLXZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpzeW5j
aHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlm
IChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplQ3goKTsKLSAg
ICAgICAgc3luY2hyb25pemVDeSgpOwotICAgICAgICBzeW5jaHJvbml6ZUZ4KCk7Ci0gICAgICAg
IHN5bmNocm9uaXplRnkoKTsKLSAgICAgICAgc3luY2hyb25pemVSKCk7Ci0gICAgICAgIFNWR0dy
YWRpZW50RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewotICAgICAgICBTVkdHcmFkaWVudEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5h
bWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjpjeEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVDeCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpjeUF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVDeSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjpmeEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVGeCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpm
eUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVGeSgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpyQXR0cikgewotICAgICAgICBzeW5j
aHJvbml6ZVIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
OwotfQotCi12b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwotCi0gICAgU1ZHR3JhZGllbnRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Y3hBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpjeUF0dHIsIEFuaW1hdGVk
TGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnJB
dHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjpmeEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmZ5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotfQotCiBS
ZW5kZXJPYmplY3QqIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEp
IFJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQodGhpcyk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsMjAgKzQyLDE4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHls
ZSopOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsK
IAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5J
TUFURURfTEVOR1RIKEN4LCBjeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeSwgY3kp
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUiwgcikKLSAgICBERUNMQVJFX0FOSU1BVEVE
X0xFTkdUSChGeCwgZngpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoRnksIGZ5KQorICAg
IEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN4LCBjeCkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9MRU5HVEgoQ3ksIGN5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSChSLCByKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChGeCwgZngpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEZ5LCBmeSkKKyAgICBFTkRfREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTQg
KzMyLDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkg
ZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05h
bWVzOjp4QXR0ciwgWCwgeCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQs
IFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVs
ZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKLURFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhl
aWdodCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjpy
eEF0dHIsIFJ4LCByeCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNW
R05hbWVzOjpyeUF0dHIsIFJ5LCByeSkKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1JlY3RF
bGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJ
TkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVj
dEVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCisgICAgREVGSU5FX0FO
SU1BVEVEX0xFTkdUSChTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgV2lkdGgs
IHdpZHRoKQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05h
bWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdodCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6cnhBdHRyLCBSeCwgcngpCisgICAgREVGSU5F
X0FOSU1BVEVEX0xFTkdUSChTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnJ5QXR0ciwgUnksIHJ5
KQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJ
RVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdSZWN0RWxlbWVudCkK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh4KQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKHkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkod2lkdGgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaGVpZ2h0
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHJ4KQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHJ5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVE
X1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5U
X0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAg
UkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNU
RVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHUmVjdEVsZW1lbnQ6OlNWR1JlY3RF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
ICAgICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQpA
QCAtNTEsNiArNjQsNyBAQCBpbmxpbmUgU1ZHUmVjdEVsZW1lbnQ6OlNWR1JlY3RFbGVtZW50KGNv
CiAgICAgLCBtX3J5KExlbmd0aE1vZGVIZWlnaHQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
U1ZHTmFtZXM6OnJlY3RUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNW
R1JlY3RFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHUmVjdEVsZW1lbnQ+IFNWR1JlY3RF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQpAQCAtMTcwLDg4ICsxODQsNiBAQCB2b2lkIFNWR1JlY3RFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHUmVj
dEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hy
b25pemVYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICBzeW5jaHJvbml6ZVdp
ZHRoKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
UngoKTsKLSAgICAgICAgc3luY2hyb25pemVSeSgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJv
cGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAg
ICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6eEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVXaWR0
aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjpoZWlnaHRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJ4QXR0cikg
ewotICAgICAgICBzeW5jaHJvbml6ZVJ4KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJ5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6
ZVJ5KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0g
ICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0K
LUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdSZWN0RWxlbWVudDo6YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICBy
ZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdSZWN0RWxl
bWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgp
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0
ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6cnhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyeUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLX0KLQogdm9p
ZCBTVkdSZWN0RWxlbWVudDo6dG9QYXRoRGF0YShQYXRoJiBwYXRoKSBjb25zdAogewogICAgIEFT
U0VSVChwYXRoLmlzRW1wdHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQu
aAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcsMjQgKzQ3LDI1IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVh
bCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgdG9QYXRoRGF0YShQYXRoJikgY29uc3Q7CiAKICAgICB2aXJ0dWFs
IGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCi0gICAgLy8gQW5pbWF0ZWQg
cHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkK
LSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQotICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIKFdpZHRoLCB3aWR0aCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQs
IGhlaWdodCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSeCwgcngpCi0gICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoUnksIHJ5KQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdSZWN0RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9MRU5HVEgoWCwgeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9MRU5HVEgoUngsIHJ4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSeSwg
cnkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRG
ZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0
ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKHRoaXMp
OyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSB7IFNWR1Rl
c3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZp
c2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTYsMTQgKzU2LDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Ly8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9MRU5HVEgo
U1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQotREVGSU5FX0FOSU1BVEVEX0xF
TkdUSChTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCi1ERUZJTkVfQU5JTUFU
RURfTEVOR1RIKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0
aCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdo
dEF0dHIsIEhlaWdodCwgaGVpZ2h0KQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHU1ZHRWxl
bWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotREVGSU5FX0FOSU1B
VEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oU1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZl
QXNwZWN0UmF0aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlv
KQotREVGSU5FX0FOSU1BVEVEX1JFQ1QoU1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OnZpZXdCb3hB
dHRyLCBWaWV3Qm94LCB2aWV3Qm94KQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMK
KyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjp4QXR0
ciwgWCwgeCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1NWR0VsZW1lbnQsIFNWR05h
bWVzOjp5QXR0ciwgWSwgeSkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1NWR0VsZW1l
bnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKKyAgICBERUZJTkVfQU5JTUFU
RURfTEVOR1RIKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhl
aWdodCkKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdTVkdFbGVtZW50LCBTVkdOYW1l
czo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgREVGSU5FX0FOSU1BVEVEX1BSRVNF
UlZFQVNQRUNUUkFUSU8oU1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0
aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgIERF
RklORV9BTklNQVRFRF9SRUNUKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjp2aWV3Qm94QXR0ciwg
Vmlld0JveCwgdmlld0JveCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJ
Tl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1NWR0VsZW1lbnQpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWSh5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHdpZHRo
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGhlaWdodCkKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHZpZXdCb3gpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICBSRUdJ
U1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50
KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5E
X1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1NWR0VsZW1lbnQ6OlNW
R1NWR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykK
ICAgICA6IFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jKQpAQCAtNzcsNiAr
OTAsNyBAQCBpbmxpbmUgU1ZHU1ZHRWxlbWVudDo6U1ZHU1ZHRWxlbWVudChjb25zCiAgICAgLCBt
X2hhc1NldENvbnRhaW5lclNpemUoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZH
TmFtZXM6OnN2Z1RhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHU1ZH
RWxlbWVudCgpOwogICAgIGRvYy0+cmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFj
a3ModGhpcyk7CiB9CiAKQEAgLTM1NSw1NSArMzY5LDYgQEAgdm9pZCBTVkdTVkdFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKAogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoYXR0ck5hbWUpOwogfQogCi12b2lkIFNWR1NWR0VsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1l
ID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHN5bmNo
cm9uaXplWSgpOwotICAgICAgICBzeW5jaHJvbml6ZVdpZHRoKCk7Ci0gICAgICAgIHN5bmNocm9u
aXplSGVpZ2h0KCk7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCgpOwotICAgICAgICBTVkdGaXRUb1ZpZXdCb3g6OnN5bmNocm9uaXplUHJvcGVydGllcyhhdHRy
TmFtZSk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0
ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgIGVsc2UgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAg
ZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgc3luY2hy
b25pemVXaWR0aCgpOwotICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRB
dHRyKQotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgIGVsc2UgaWYgKFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAg
ICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICBlbHNlIGlmIChT
VkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSAKLSAgICAgICAgU1ZH
Rml0VG9WaWV3Qm94OjpzeW5jaHJvbml6ZVByb3BlcnRpZXMoYXR0ck5hbWUpOwotICAgIGVsc2Ug
aWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKLSAgICAgICAgU1ZHVGVz
dHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgZWxzZQotICAg
ICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLX0K
LQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1NWR0VsZW1lbnQ6OmF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAg
cmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHU1ZHRWxl
bWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1h
dGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBBbmltYXRlZFJlY3QpOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0
dHIsIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7Ci19Ci0KIHVuc2lnbmVkIFNWR1NWR0Vs
ZW1lbnQ6OnN1c3BlbmRSZWRyYXcodW5zaWduZWQgLyogbWF4V2FpdE1pbGxpc2Vjb25kcyAqLykK
IHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1lIChzZWUgYnVnIDExMjc1KQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NSwyNyArMTQ1LDI2
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3Ro
cygpIGNvbnN0OwogCiAgICAgdm9pZCBpbmhlcml0Vmlld0F0dHJpYnV0ZXMoU1ZHVmlld0VsZW1l
bnQqKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xB
UkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwg
eSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwgd2lkdGgpCi0gICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi0KLSAgICAvLyBTVkdG
aXRUb1ZpZXdCb3gKLSAgICBERUNMQVJFX0FOSU1BVEVEX1JFQ1QoVmlld0JveCwgdmlld0JveCkK
LSAgICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oUHJlc2VydmVBc3BlY3RS
YXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKLSAKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHU1ZHRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoWCwgeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9C
T09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUkVDVChWaWV3Qm94LCB2aWV3Qm94KQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oUHJlc2VydmVBc3BlY3RS
YXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJl
cXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMo
dGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMo
KSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3lu
Y2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQorCiAgICAgdmlydHVhbCB2b2lkIGRvY3Vt
ZW50V2lsbEJlY29tZUluYWN0aXZlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50RGlkQmVj
b21lQWN0aXZlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5j
cHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwyMSArMjgsMjkgQEAKICNpbmNsdWRlICJFdmVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNp
bmNsdWRlICJTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oIgogI2luY2x1ZGUgIlNW
R0VsZW1lbnRJbnN0YW5jZS5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXZlbnRMaXN0ZW5lci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVk
IHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR1NjcmlwdEVs
ZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQotREVGSU5FX0FOSU1BVEVE
X0JPT0xFQU4oU1ZHU2NyaXB0RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5J
TUFURURfU1RSSU5HKFNWR1NjcmlwdEVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVm
LCBocmVmKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1NjcmlwdEVsZW1lbnQsIFNW
R05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURf
UFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Njcmlw
dEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1Njcmlw
dEVsZW1lbnQ6OlNWR1NjcmlwdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHdhc0luc2VydGVkQnlQYXJzZXIsIGJvb2wgYWxyZWFk
eVN0YXJ0ZWQpCiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgU2Ny
aXB0RWxlbWVudCh0aGlzLCB3YXNJbnNlcnRlZEJ5UGFyc2VyLCBhbHJlYWR5U3RhcnRlZCkKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6c2NyaXB0VGFnKSk7CisgICAgcmVnaXN0
ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdTY3JpcHRFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQ
dHI8U1ZHU2NyaXB0RWxlbWVudD4gU1ZHU2NyaXB0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBpbnNlcnRlZEJ5UGFy
c2VyKQpAQCAtMTIwLDQ0ICsxMjgsNiBAQCB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHU2NyaXB0
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJv
bml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgc3luY2hyb25pemVIcmVm
KCk7Ci0gICAgICAgIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRy
TmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9ICAgCi0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAg
c3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgU1ZHU2NyaXB0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQot
ewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNf
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdTY3JpcHRFbGVtZW50OjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0KIHZvaWQg
U1ZHU2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewogICAgIFNWR0VsZW1l
bnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U2NyaXB0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3Jp
cHRFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Nj
cmlwdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsOSArNTEsNiBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBm
YWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQg
Y2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgYm9v
bCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZmlu
aXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAKQEAgLTc1LDEzICs3MiwxMCBAQCBwcml2YXRlOgogCiAg
ICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENo
aWxkcmVuKCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMK
LQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhy
ZWYsIGhyZWYpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVD
TEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR1NjcmlwdEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYs
IGhyZWYpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMKIAogICAgIFN0cmluZyBtX3R5cGU7CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE0ICsz
MywyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRl
ZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR1N0b3BFbGVtZW50LCBTVkdOYW1l
czo6b2Zmc2V0QXR0ciwgT2Zmc2V0LCBvZmZzZXQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJP
UEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHU3RvcEVsZW1lbnQsIFNWR05h
bWVzOjpvZmZzZXRBdHRyLCBPZmZzZXQsIG9mZnNldCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJP
UEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0b3BFbGVt
ZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKG9mZnNldCkKKyAgICBS
RUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRFbGVtZW50KQorRU5E
X1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1N0b3BFbGVtZW50OjpT
VkdTdG9wRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwg
bV9vZmZzZXQoMCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6c3RvcFRhZykp
OworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHU3RvcEVsZW1lbnQoKTsKIH0K
IAogUGFzc1JlZlB0cjxTVkdTdG9wRWxlbWVudD4gU1ZHU3RvcEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC05NSw0MSAr
MTAyLDYgQEAgdm9pZCBTVkdTdG9wRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR1N0b3BFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRy
TmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplT2Zmc2V0KCk7Ci0gICAg
ICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShh
dHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6Om9mZnNldEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVPZmZzZXQoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1B
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHU3RvcEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0
dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHU3RvcEVsZW1l
bnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNz
ZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpvZmZzZXRBdHRy
LCBBbmltYXRlZExlbmd0aCk7Ci19Ci0KIFJlbmRlck9iamVjdCogU1ZHU3RvcEVsZW1lbnQ6OmNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJl
dHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdHcmFkaWVudFN0b3AodGhpcyk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTYgKzM5LDE0
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0
ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNHcmFkaWVudFN0b3Ao
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCi0gICAgLy8gQW5pbWF0
ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoT2Zm
c2V0LCBvZmZzZXQpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0
b3BFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihPZmZzZXQsIG9mZnNl
dCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTEgKzQ0LDE3IEBACiAjaW5jbHVkZSAiU1ZHVXNl
RWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRF
RF9TVFJJTkcoU1ZHU3R5bGVkRWxlbWVudCwgSFRNTE5hbWVzOjpjbGFzc0F0dHIsIENsYXNzTmFt
ZSwgY2xhc3NOYW1lKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJ
TkVfQU5JTUFURURfU1RSSU5HKFNWR1N0eWxlZEVsZW1lbnQsIEhUTUxOYW1lczo6Y2xhc3NBdHRy
LCBDbGFzc05hbWUsIGNsYXNzTmFtZSkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUwor
CitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVsZW1lbnQpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoY2xhc3NOYW1lKQorRU5EX1JFR0lT
VEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogdXNpbmcgbmFtZXNwYWNlIFNWR05hbWVzOwogCkBA
IC02Miw2ICs2OCw3IEBAIHZvaWQgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShIYXNoTWFwPEEK
IFNWR1N0eWxlZEVsZW1lbnQ6OlNWR1N0eWxlZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKIHsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1N0eWxlZEVs
ZW1lbnQoKTsKIH0KIAogU1ZHU3R5bGVkRWxlbWVudDo6flNWR1N0eWxlZEVsZW1lbnQoKQpAQCAt
MjA1LDEwICsyMTIsMTEgQEAgaW50IFNWR1N0eWxlZEVsZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JT
VgogICAgIHJldHVybiBwcm9wZXJ0eU5hbWVUb0lkTWFwLT5nZXQoYXR0ck5hbWUubG9jYWxOYW1l
KCkuaW1wbCgpKTsKIH0KIAordHlwZWRlZiBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVk
UHJvcGVydHlUeXBlPiBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKIHN0YXRpYyBpbmxpbmUg
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGNzc1Byb3BlcnR5VG9UeXBlTWFwKCkKIHsKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2Nzc1By
b3BlcnR5TWFwLCAoKSk7Ci0gICAgCisKICAgICBpZiAoIXNfY3NzUHJvcGVydHlNYXAuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gc19jc3NQcm9wZXJ0eU1hcDsKIApAQCAtMjY5LDEyICsyNzcs
MTUgQEAgc3RhdGljIGlubGluZSBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcAogICAgIHJldHVy
biBzX2Nzc1Byb3BlcnR5TWFwOwogfQogCi1BbmltYXRlZEF0dHJpYnV0ZVR5cGUgU1ZHU3R5bGVk
RWxlbWVudDo6YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JDU1NQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKK3ZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6YW5pbWF0ZWRQcm9wZXJ0
eVR5cGVGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIFZlY3RvcjxB
bmltYXRlZFByb3BlcnR5VHlwZT4mIHByb3BlcnR5VHlwZXMpCiB7CisgICAgU1ZHRWxlbWVudDo6
YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUoYXR0ck5hbWUsIHByb3BlcnR5VHlwZXMp
OworICAgIGlmICghcHJvcGVydHlUeXBlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwog
ICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBjc3NQcm9wZXJ0eVR5cGVNYXAgPSBjc3NQ
cm9wZXJ0eVRvVHlwZU1hcCgpOwogICAgIGlmIChjc3NQcm9wZXJ0eVR5cGVNYXAuY29udGFpbnMo
YXR0ck5hbWUpKQotICAgICAgICByZXR1cm4gY3NzUHJvcGVydHlUeXBlTWFwLmdldChhdHRyTmFt
ZSk7Ci0gICAgcmV0dXJuIEFuaW1hdGVkVW5rbm93bjsKKyAgICAgICAgcHJvcGVydHlUeXBlcy5h
cHBlbmQoY3NzUHJvcGVydHlUeXBlTWFwLmdldChhdHRyTmFtZSkpOwogfQogCiBib29sIFNWR1N0
eWxlZEVsZW1lbnQ6OmlzQW5pbWF0YWJsZUNTU1Byb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQpAQCAtMjgyLDExICsyOTMsNiBAQCBib29sIFNWR1N0eWxlZEVsZW1lbnQ6Omlz
QW5pbWF0YWJsZUNTU1ByCiAgICAgcmV0dXJuIGNzc1Byb3BlcnR5VG9UeXBlTWFwKCkuY29udGFp
bnMoYXR0ck5hbWUpOwogfQogCi12b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXApCi17Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KEhUTUxOYW1lczo6Y2xhc3NBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0KIGJvb2wgU1ZH
U3R5bGVkRWxlbWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwg
TWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKIHsKICAgICBpZiAoU1ZHU3R5bGVk
RWxlbWVudDo6Y3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoYXR0ck5hbWUpID4gMCkg
ewpAQCAtMzUxLDEyICszNTcsNiBAQCB2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nCiAgICAgfQogfQogCi12b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1l
ID09IGFueVFOYW1lKCkgfHwgYXR0ck5hbWUgPT0gSFRNTE5hbWVzOjpjbGFzc0F0dHIpCi0gICAg
ICAgIHN5bmNocm9uaXplQ2xhc3NOYW1lKCk7Ci19Ci0KIHZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6
YXR0YWNoKCkKIHsKICAgICBTVkdFbGVtZW50OjphdHRhY2goKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBA
IHB1YmxpYzoKICAgICBib29sIGhhc1BlbmRpbmdSZXNvdXJjZXMoKSBjb25zdDsKICAgICB2b2lk
IHNldEhhc1BlbmRpbmdSZXNvdXJjZXMoYm9vbCk7CiAKLSAgICBBbmltYXRlZEF0dHJpYnV0ZVR5
cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JDU1NQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CisgICAgdmlydHVhbCB2b2lkIGFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBWZWN0b3I8QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+Jik7CiAgICAg
c3RhdGljIGJvb2wgaXNBbmltYXRhYmxlQ1NTUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogCiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxDb29yZGluYXRlU3BhY2VUcmFu
c2Zvcm0oU1ZHTG9jYXRhYmxlOjpDVE1TY29wZSkgY29uc3Q7CkBAIC02MiwxNSArNjIsMTEgQEAg
cHVibGljOgogCiBwcm90ZWN0ZWQ6IAogICAgIFNWR1N0eWxlZEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Kik7Ci0KICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCBib29sIG1hcFRv
RW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JikgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAg
IHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci0KLSAgICB2b2lkIGZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYpOwogCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwpAQCAtOTQsOCArOTAsOSBA
QCBwcml2YXRlOgogCiAgICAgSGFzaFNldDxTVkdTdHlsZWRFbGVtZW50Kj4gbV9lbGVtZW50c1dp
dGhSZWxhdGl2ZUxlbmd0aHM7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlv
bnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhDbGFzc05hbWUsIGNsYXNzTmFtZSkKKyAg
ICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkRWxlbWVudCkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoQ2xhc3NOYW1lLCBjbGFzc05hbWUpCisgICAg
RU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDEyICszMiwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3Bl
cnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfVFJBTlNGT1JNX0xJU1QoU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQsIFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLCBUcmFuc2Zvcm0s
IHRyYW5zZm9ybSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5F
X0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LCBT
VkdOYW1lczo6dHJhbnNmb3JtQXR0ciwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCitFTkRfREVGSU5F
X0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWSh0cmFuc2Zvcm0pCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCkKK0VORF9SRUdJU1RFUl9BTklNQVRF
RF9QUk9QRVJUSUVTCiAKIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KQogeworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQoKTsKIH0KIAogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6
On5TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCgpCkBAIC0xMTksMjcgKzEyNiw2IEBAIHZv
aWQgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN2Z0EKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAotdm9pZCBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAo
YXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVRyYW5zZm9ybSgp
OwotICAgICAgICBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1l
bnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplVHJhbnNmb3JtKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQogU1ZHRWxlbWVudCogU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQ6Om5lYXJlc3RWaWV3cG9ydEVsZW1lbnQoKSBjb25zdAogewogICAgIHJl
dHVybiBTVkdUcmFuc2Zvcm1hYmxlOjpuZWFyZXN0Vmlld3BvcnRFbGVtZW50KHRoaXMpOwpAQCAt
MTYxLDEzICsxNDcsNiBAQCBSZW5kZXJPYmplY3QqIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1BhdGgodGhpcyk7CiB9CiAKLXZvaWQg
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXApCi17Ci0gICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICAKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIsIEFu
aW1hdGVkVHJhbnNmb3JtTGlzdCk7Ci19Ci0KIHZvaWQgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQ6OnRvQ2xpcFBhdGgoUGF0aCYgcGF0aCkgY29uc3QKIHsKICAgICB0b1BhdGhEYXRhKHBh
dGgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDExICs1
OCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0
dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdm9pZCBmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmKTsKIAotICAgIC8vIEFuaW1hdGVk
IHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfVFJBTlNGT1JNX0xJ
U1QoVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX1RSQU5TRk9STV9MSVNUKFRyYW5zZm9ybSwgdHJhbnNmb3JtKQorICAgIEVORF9ERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNT
dHlsZWRUcmFuc2Zvcm1hYmxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDEzICsyOCwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3Bl
cnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdTd2l0Y2hFbGVtZW50
LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5J
TUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1N3aXRjaEVs
ZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVf
QU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR1N3aXRjaEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9Q
QVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRF
RF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdTd2l0Y2hFbGVtZW50OjpTVkdTd2l0Y2hFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6
IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpzd2l0Y2hUYWcpKTsKKyAgICByZWdpc3RlckFu
aW1hdGVkUHJvcGVydGllc0ZvclNWR1N3aXRjaEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxT
VkdTd2l0Y2hFbGVtZW50PiBTVkdTd2l0Y2hFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNjUsMzMgKzczLDYgQEAgUmVu
ZGVyT2JqZWN0KiBTVkdTd2l0Y2hFbGVtZW50OjpjcmVhdGVSZQogICAgIHJldHVybiBuZXcgKGFy
ZW5hKSBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKHRoaXMpOwogfQogCi12b2lkIFNW
R1N3aXRjaEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCi17Ci0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9u
aXplUHJvcGVydHkoYXR0ck5hbWUpOwotCi0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkp
IHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAg
ICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAgICBzeW5jaHJvbml6ZUV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICBlbHNlIGlmIChTVkdUZXN0czo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRp
ZXModGhpcywgYXR0ck5hbWUpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZH
U3dpdGNoRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcDsKLX0KLQotdm9pZCBTVkdTd2l0Y2hFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQotewotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsUGFz
c2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KSk7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTd2l0Y2hFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N3aXRjaEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTUgKzQ2LDE1IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9k
ZSopIGNvbnN0OwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQ
cm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgIAotICAgIHZpcnR1YWwgdm9pZCBm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCi0gICAgLy8g
QW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR1N3aXRjaEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
Qk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAotICAgIC8vIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAv
LyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMo
KSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpz
eW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBz
eW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1M
YW5ndWFnZSh0aGlzKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDE1ICsyOSwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHBy
b3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdTeW1ib2xFbGVt
ZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi1ERUZJTkVfQU5JTUFU
RURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhTVkdTeW1ib2xFbGVtZW50LCBTVkdOYW1lczo6cHJlc2Vy
dmVBc3BlY3RSYXRpb0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0
aW8pIAotREVGSU5FX0FOSU1BVEVEX1JFQ1QoU1ZHU3ltYm9sRWxlbWVudCwgU1ZHTmFtZXM6OnZp
ZXdCb3hBdHRyLCBWaWV3Qm94LCB2aWV3Qm94KQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdTeW1ib2xFbGVtZW50LCBTVkdO
YW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgREVGSU5FX0FOSU1BVEVEX1BS
RVNFUlZFQVNQRUNUUkFUSU8oU1ZHU3ltYm9sRWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQXNw
ZWN0UmF0aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSAK
KyAgICBERUZJTkVfQU5JTUFURURfUkVDVChTVkdTeW1ib2xFbGVtZW50LCBTVkdOYW1lczo6dmll
d0JveEF0dHIsIFZpZXdCb3gsIHZpZXdCb3gpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVS
VElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N5bWJvbEVsZW1l
bnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh2aWV3Qm94
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHByZXNlcnZlQXNwZWN0UmF0
aW8pIAorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVs
ZW1lbnQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHU3lt
Ym9sRWxlbWVudDo6U1ZHU3ltYm9sRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpzeW1ib2xUYWcpKTsK
KyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1N5bWJvbEVsZW1lbnQoKTsKIH0K
IAogUGFzc1JlZlB0cjxTVkdTeW1ib2xFbGVtZW50PiBTVkdTeW1ib2xFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtODcs
NDggKzk2LDYgQEAgdm9pZCBTVkdTeW1ib2xFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZwogICAg
ICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwogfQogCi12b2lkIFNWR1N5
bWJvbEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR0ZpdFRvVmll
d0JveDo6c3luY2hyb25pemVQcm9wZXJ0aWVzKGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHU3R5bGVk
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAg
ICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChTVkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAg
ICAgIFNWR0ZpdFRvVmlld0JveDo6c3luY2hyb25pemVQcm9wZXJ0aWVzKGF0dHJOYW1lKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1B
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHU3ltYm9sRWxlbWVudDo6YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICBy
ZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdTeW1ib2xF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxs
UGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dmlld0Jv
eEF0dHIsIEFuaW1hdGVkUmVjdCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVj
dFJhdGlvKTsKLX0KLQogYm9vbCBTVkdTeW1ib2xFbGVtZW50OjpzZWxmSGFzUmVsYXRpdmVMZW5n
dGhzKCkgY29uc3QKIHsKICAgICByZXR1cm4gaGFzQXR0cmlidXRlKFNWR05hbWVzOjp2aWV3Qm94
QXR0cik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgJKHJldmlzaW9u
IDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsMjEgKzQ3LDE1IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVh
bCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJl
dHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMo
KSBjb25zdDsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotCi0gICAg
Ly8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9P
TEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQotIAotICAgIC8vIFNWR0ZpdFRvVmlld0JveAotICAgIERFQ0xBUkVfQU5JTUFURURfUkVDVChW
aWV3Qm94LCB2aWV3Qm94KQotICAgIERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJ
TyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSAKKyAgICBCRUdJTl9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3ltYm9sRWxlbWVudCkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUkVDVChWaWV3Qm94
LCB2aWV3Qm94KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8o
UHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykgCisgICAgRU5EX0RFQ0xB
UkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDEzICszNywyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHBy
b3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR1RSZWZFbGVtZW50
LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKK0JFR0lOX0RFRklORV9BTklNQVRF
RF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdUUmVmRWxlbWVudCwg
WExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BS
T1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUUmVmRWxl
bWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShocmVmKQorICAgIFJF
R0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHVFJlZkVs
ZW1lbnQ6OlNWR1RSZWZFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRyZWZUYWcpKTsK
KyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1RSZWZFbGVtZW50KCk7CiB9CiAK
IFBhc3NSZWZQdHI8U1ZHVFJlZkVsZW1lbnQ+IFNWR1RSZWZFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTY0LDQxICsx
NzEsNiBAQCB2b2lkIFNWR1RSZWZFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHVFJlZkVsZW1lbnQ6OnN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJO
YW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAg
IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAg
ICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHVFJl
ZkVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7
Ci19Ci0KLXZvaWQgU1ZHVFJlZkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0K
IFJlbmRlck9iamVjdCogU1ZHVFJlZkVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJT
VkdJbmxpbmUodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAkocmV2
aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDIsOSArNDIsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5
bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikg
Y29uc3Q7CkBAIC01NiwxMCArNTMsOSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGJ1
aWxkUGVuZGluZ1Jlc291cmNlKCk7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJh
dGlvbnMKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RS
SU5HKEhyZWYsIGhyZWYpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R1RSZWZFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVm
KQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogICAgIFJlZlB0cjxTdWJ0
cmVlTW9kaWZpY2F0aW9uRXZlbnRMaXN0ZW5lcj4gbV9ldmVudExpc3RlbmVyOwogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03NCwxOSArNzQsNiBAQCBib29sIFNWR1RTcGFuRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChj
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZH
VFNwYW5FbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwOwotfQotCi12b2lkIFNWR1RTcGFuRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKLXsgICAgICAgIAotICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmZpbGxQ
YXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpKTsKLX0KLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKLQotLy8gdmltOnRzPTQ6bm9l
dApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDkgKzM2LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwotCi0gICAg
dmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1
YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGVzdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0
cy5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCisvLyBEZWZpbmUgY3VzdG9tIG5vbi1hbmltYXRlZCBwcm9wZXJ0eSAncmVxdWlyZWRGZWF0
dXJlcycuCitjb25zdCBTVkdQcm9wZXJ0eUluZm8qIFNWR1Rlc3RzOjpyZXF1aXJlZEZlYXR1cmVz
UHJvcGVydHlJbmZvKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBzX3By
b3BlcnR5SW5mbyA9IDA7CisgICAgaWYgKCFzX3Byb3BlcnR5SW5mbykgeworICAgICAgICBzX3By
b3BlcnR5SW5mbyA9IG5ldyBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRVbmtub3duLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6OnJlcXVpcmVk
RmVhdHVyZXNBdHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU1ZHTmFtZXM6OnJlcXVpcmVkRmVhdHVyZXNBdHRyLmxvY2FsTmFtZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNWR0VsZW1lbnQ6OnN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDApOworICAgIH0KKyAgICByZXR1cm4gc19wcm9wZXJ0eUluZm87Cit9CisKKwor
Ly8gRGVmaW5lIGN1c3RvbSBub24tYW5pbWF0ZWQgcHJvcGVydHkgJ3JlcXVpcmVkRXh0ZW5zaW9u
cycuCitjb25zdCBTVkdQcm9wZXJ0eUluZm8qIFNWR1Rlc3RzOjpyZXF1aXJlZEV4dGVuc2lvbnNQ
cm9wZXJ0eUluZm8oKQoreworICAgIHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIHNfcHJv
cGVydHlJbmZvID0gMDsKKyAgICBpZiAoIXNfcHJvcGVydHlJbmZvKSB7CisgICAgICAgIHNfcHJv
cGVydHlJbmZvID0gbmV3IFNWR1Byb3BlcnR5SW5mbyhBbmltYXRlZFVua25vd24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6cmVxdWlyZWRF
eHRlbnNpb25zQXR0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNWR05hbWVzOjpyZXF1aXJlZEV4dGVuc2lvbnNBdHRyLmxvY2FsTmFtZSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNWR0VsZW1lbnQ6OnN5bmNo
cm9uaXplUmVxdWlyZWRFeHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCk7CisgICAgfQorICAgIHJldHVybiBzX3Byb3BlcnR5SW5mbzsKK30K
KworLy8gRGVmaW5lIGN1c3RvbSBub24tYW5pbWF0ZWQgcHJvcGVydHkgJ3N5c3RlbUxhbmd1YWdl
Jy4KK2NvbnN0IFNWR1Byb3BlcnR5SW5mbyogU1ZHVGVzdHM6OnN5c3RlbUxhbmd1YWdlUHJvcGVy
dHlJbmZvKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBzX3Byb3BlcnR5
SW5mbyA9IDA7CisgICAgaWYgKCFzX3Byb3BlcnR5SW5mbykgeworICAgICAgICBzX3Byb3BlcnR5
SW5mbyA9IG5ldyBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRVbmtub3duLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6OnN5c3RlbUxhbmd1YWdl
QXR0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05h
bWVzOjpzeXN0ZW1MYW5ndWFnZUF0dHIubG9jYWxOYW1lKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmU1ZHRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1M
YW5ndWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAp
OworICAgIH0KKyAgICByZXR1cm4gc19wcm9wZXJ0eUluZm87Cit9CisKIFNWR1Rlc3RzOjpTVkdU
ZXN0cygpCiAgICAgOiBtX3JlcXVpcmVkRmVhdHVyZXMoU1ZHTmFtZXM6OnJlcXVpcmVkRmVhdHVy
ZXNBdHRyKQogICAgICwgbV9yZXF1aXJlZEV4dGVuc2lvbnMoU1ZHTmFtZXM6OnJlcXVpcmVkRXh0
ZW5zaW9uc0F0dHIpCkBAIC0zOSw2ICs4MiwxNyBAQCBTVkdUZXN0czo6U1ZHVGVzdHMoKQogewog
fQogCitTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBTVkdUZXN0czo6YXR0cmlidXRlVG9Qcm9w
ZXJ0eU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTVkdBdHRyaWJ1dGVUb1Byb3Bl
cnR5TWFwLCBtYXAsICgpKTsKKyAgICBpZiAoIW1hcC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBtYXA7CisgICAgbWFwLmFkZFByb3BlcnR5KHJlcXVpcmVkRmVhdHVyZXNQcm9wZXJ0eUluZm8o
KSk7CisgICAgbWFwLmFkZFByb3BlcnR5KHJlcXVpcmVkRXh0ZW5zaW9uc1Byb3BlcnR5SW5mbygp
KTsKKyAgICBtYXAuYWRkUHJvcGVydHkoc3lzdGVtTGFuZ3VhZ2VQcm9wZXJ0eUluZm8oKSk7Cisg
ICAgcmV0dXJuIG1hcDsKK30KKwogYm9vbCBTVkdUZXN0czo6aGFzRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBtZSEKQEAgLTExNSw0NSAr
MTY5LDMxIEBAIHZvaWQgU1ZHVGVzdHM6OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMoSGEKICAgICBz
dXBwb3J0ZWRBdHRyaWJ1dGVzLmFkZChTVkdOYW1lczo6c3lzdGVtTGFuZ3VhZ2VBdHRyKTsKIH0K
IAotdm9pZCBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKFNWR0VsZW1lbnQqIGNvbnRl
eHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0
ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVy
ZXMoY29udGV4dEVsZW1lbnQpOwotICAgICAgICBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9u
cyhjb250ZXh0RWxlbWVudCk7Ci0gICAgICAgIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoY29u
dGV4dEVsZW1lbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpyZXF1aXJlZEZlYXR1cmVzQXR0cikKLSAgICAgICAgc3luY2hyb25pemVS
ZXF1aXJlZEZlYXR1cmVzKGNvbnRleHRFbGVtZW50KTsKLSAgICBlbHNlIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6cmVxdWlyZWRFeHRlbnNpb25zQXR0cikKLSAgICAgICAgc3luY2hyb25pemVS
ZXF1aXJlZEV4dGVuc2lvbnMoY29udGV4dEVsZW1lbnQpOwotICAgIGVsc2UgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpzeXN0ZW1MYW5ndWFnZUF0dHIpCi0gICAgICAgIHN5bmNocm9uaXplU3lz
dGVtTGFuZ3VhZ2UoY29udGV4dEVsZW1lbnQpOwotfQotCiB2b2lkIFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVJlcXVpcmVkRmVhdHVyZXMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiB7CisgICAg
QVNTRVJUKGNvbnRleHRFbGVtZW50KTsKICAgICBpZiAoIW1fcmVxdWlyZWRGZWF0dXJlcy5zaG91
bGRTeW5jaHJvbml6ZSkKICAgICAgICAgcmV0dXJuOwogICAgIEF0b21pY1N0cmluZyB2YWx1ZSht
X3JlcXVpcmVkRmVhdHVyZXMudmFsdWUudmFsdWVBc1N0cmluZygpKTsKLSAgICBTVkdBbmltYXRl
ZFByb3BlcnR5U3luY2hyb25pemVyPHRydWU+OjpzeW5jaHJvbml6ZShjb250ZXh0RWxlbWVudCwg
U1ZHTmFtZXM6OnJlcXVpcmVkRmVhdHVyZXNBdHRyLCB2YWx1ZSk7CisgICAgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUoY29udGV4dEVsZW1lbnQsIHJl
cXVpcmVkRmVhdHVyZXNQcm9wZXJ0eUluZm8oKS0+YXR0cmlidXRlTmFtZSwgdmFsdWUpOwogfQog
CiB2b2lkIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyhTVkdFbGVtZW50
KiBjb250ZXh0RWxlbWVudCkKIHsKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwogICAgIGlm
ICghbV9yZXF1aXJlZEV4dGVuc2lvbnMuc2hvdWxkU3luY2hyb25pemUpCiAgICAgICAgIHJldHVy
bjsKICAgICBBdG9taWNTdHJpbmcgdmFsdWUobV9yZXF1aXJlZEV4dGVuc2lvbnMudmFsdWUudmFs
dWVBc1N0cmluZygpKTsKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPHRydWU+
OjpzeW5jaHJvbml6ZShjb250ZXh0RWxlbWVudCwgU1ZHTmFtZXM6OnJlcXVpcmVkRXh0ZW5zaW9u
c0F0dHIsIHZhbHVlKTsKKyAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPHRydWU+
OjpzeW5jaHJvbml6ZShjb250ZXh0RWxlbWVudCwgcmVxdWlyZWRFeHRlbnNpb25zUHJvcGVydHlJ
bmZvKCktPmF0dHJpYnV0ZU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBTVkdUZXN0czo6c3luY2hy
b25pemVTeXN0ZW1MYW5ndWFnZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKIHsKKyAgICBB
U1NFUlQoY29udGV4dEVsZW1lbnQpOwogICAgIGlmICghbV9zeXN0ZW1MYW5ndWFnZS5zaG91bGRT
eW5jaHJvbml6ZSkKICAgICAgICAgcmV0dXJuOwogICAgIEF0b21pY1N0cmluZyB2YWx1ZShtX3N5
c3RlbUxhbmd1YWdlLnZhbHVlLnZhbHVlQXNTdHJpbmcoKSk7Ci0gICAgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUoY29udGV4dEVsZW1lbnQsIFNWR05h
bWVzOjpzeXN0ZW1MYW5ndWFnZUF0dHIsIHZhbHVlKTsKKyAgICBTVkdBbmltYXRlZFByb3BlcnR5
U3luY2hyb25pemVyPHRydWU+OjpzeW5jaHJvbml6ZShjb250ZXh0RWxlbWVudCwgc3lzdGVtTGFu
Z3VhZ2VQcm9wZXJ0eUluZm8oKS0+YXR0cmlidXRlTmFtZSwgdmFsdWUpOwogfQogCiBTVkdTdHJp
bmdMaXN0JiBTVkdUZXN0czo6cmVxdWlyZWRGZWF0dXJlcygpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGVzdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVz
dHMuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBTVkdUZXN0c19oCiAKICNp
ZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHkuaCIKICNpbmNsdWRl
ICJTVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmgiCiAjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdC5o
IgogCkBAIC00NSwxOCArNDYsMjcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRTdXBwb3J0ZWRB
dHRyaWJ1dGVzKEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4mKTsKICAgICBib29sIGhhbmRsZUF0dHJp
YnV0ZUNoYW5nZShjb25zdCBTVkdFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAg
IHZvaWQgc3luY2hyb25pemVQcm9wZXJ0aWVzKFNWR0VsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWRO
YW1lJik7CisKKyAgICBzdGF0aWMgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eU1hcCgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHVGVzdHMoKTsKIAotcHJpdmF0
ZToKLSAgICB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyhTVkdFbGVtZW50Kik7Ci0g
ICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyhTVkdFbGVtZW50Kik7Ci0gICAg
dm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKFNWR0VsZW1lbnQqKTsKKyAgICB2b2lkIHN5
bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7Cisg
ICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyhTVkdFbGVtZW50KiBjb250ZXh0
RWxlbWVudCk7CisgICAgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKFNWR0VsZW1lbnQq
IGNvbnRleHRFbGVtZW50KTsKIAorcHJpdmF0ZToKKyAgICAvLyBDdXN0b20gJ3JlcXVpcmVkRmVh
dHVyZXMnIHByb3BlcnR5CisgICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogcmVxdWly
ZWRGZWF0dXJlc1Byb3BlcnR5SW5mbygpOwogICAgIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQ
cm9wZXJ0eTxTVkdTdHJpbmdMaXN0PiBtX3JlcXVpcmVkRmVhdHVyZXM7CisKKyAgICAvLyBDdXN0
b20gJ3JlcXVpcmVkRXh0ZW5zaW9ucycgcHJvcGVydHkKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJv
cGVydHlJbmZvKiByZXF1aXJlZEV4dGVuc2lvbnNQcm9wZXJ0eUluZm8oKTsKICAgICBTVkdTeW5j
aHJvbml6YWJsZUFuaW1hdGVkUHJvcGVydHk8U1ZHU3RyaW5nTGlzdD4gbV9yZXF1aXJlZEV4dGVu
c2lvbnM7CisKKyAgICAvLyBDdXN0b20gJ3N5c3RlbUxhbmd1YWdlJyBwcm9wZXJ0eQorICAgIHN0
YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIHN5c3RlbUxhbmd1YWdlUHJvcGVydHlJbmZvKCk7
CiAgICAgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5PFNWR1N0cmluZ0xpc3Q+IG1f
c3lzdGVtTGFuZ3VhZ2U7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENv
bnRlbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4
dENvbnRlbnRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjUgKzM3
LDU5IEBACiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCi0v
LyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFU
SU9OKFNWR1RleHRDb250ZW50RWxlbWVudCwgU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIsIExl
bmd0aEFkanVzdCwgbGVuZ3RoQWRqdXN0LCBTVkdMZW5ndGhBZGp1c3RUeXBlKQotREVGSU5FX0FO
SU1BVEVEX0JPT0xFQU4oU1ZHVGV4dENvbnRlbnRFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCisgCisvLyBEZWZpbmUgY3VzdG9tIGFuaW1hdGVkIHByb3BlcnR5
ICd0ZXh0TGVuZ3RoJy4KK2NvbnN0IFNWR1Byb3BlcnR5SW5mbyogU1ZHVGV4dENvbnRlbnRFbGVt
ZW50Ojp0ZXh0TGVuZ3RoUHJvcGVydHlJbmZvKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJv
cGVydHlJbmZvKiBzX3Byb3BlcnR5SW5mbyA9IDA7CisgICAgaWYgKCFzX3Byb3BlcnR5SW5mbykg
eworICAgICAgICBzX3Byb3BlcnR5SW5mbyA9IG5ldyBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRM
ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdO
YW1lczo6dGV4dExlbmd0aEF0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTVkdOYW1lczo6dGV4dExlbmd0aEF0dHIubG9jYWxOYW1lKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU1ZHVGV4dENvbnRlbnRFbGVt
ZW50OjpzeW5jaHJvbml6ZVRleHRMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojpsb29rdXBPckNyZWF0ZVRl
eHRMZW5ndGhXcmFwcGVyKTsKKyAgICB9CisgICAgcmV0dXJuIHNfcHJvcGVydHlJbmZvOworfQor
CitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9F
TlVNRVJBVElPTihTVkdUZXh0Q29udGVudEVsZW1lbnQsIFNWR05hbWVzOjpsZW5ndGhBZGp1c3RB
dHRyLCBMZW5ndGhBZGp1c3QsIGxlbmd0aEFkanVzdCwgU1ZHTGVuZ3RoQWRqdXN0VHlwZSkKKyAg
ICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdUZXh0Q29udGVudEVsZW1lbnQsIFNWR05hbWVz
OjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVS
VElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1RleHRDb250ZW50
RWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh0ZXh0TGVuZ3Ro
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGxlbmd0aEFkanVzdCkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVs
ZW1lbnQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMp
CitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBTVkdUZXh0Q29udGVudEVsZW1l
bnQ6OlNWR1RleHRDb250ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KQotICAgICwgbV9zcGVjaWZpZWRUZXh0TGVuZ3RoKExlbmd0aE1vZGVPdGhlcikKICAgICAs
IG1fdGV4dExlbmd0aChMZW5ndGhNb2RlT3RoZXIpCisgICAgLCBtX3NwZWNpZmllZFRleHRMZW5n
dGgoTGVuZ3RoTW9kZU90aGVyKQogICAgICwgbV9sZW5ndGhBZGp1c3QoU1ZHTGVuZ3RoQWRqdXN0
U3BhY2luZykKIHsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1RleHRDb250
ZW50RWxlbWVudCgpOwogfQogCi12b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6c3luY2hyb25p
emVUZXh0TGVuZ3RoKCkKK3ZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzeW5jaHJvbml6ZVRl
eHRMZW5ndGgodm9pZCogY29udGV4dEVsZW1lbnQpCiB7Ci0gICAgaWYgKCFtX3RleHRMZW5ndGgu
c2hvdWxkU3luY2hyb25pemUpCisgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICBTVkdU
ZXh0Q29udGVudEVsZW1lbnQqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR1RleHRDb250ZW50
RWxlbWVudCo+KGNvbnRleHRFbGVtZW50KTsKKyAgICBpZiAoIW93bmVyVHlwZS0+bV90ZXh0TGVu
Z3RoLnNob3VsZFN5bmNocm9uaXplKQogICAgICAgICByZXR1cm47Ci0gICAgQXRvbWljU3RyaW5n
IHZhbHVlKFNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aD46OnRvU3RyaW5nKG1fc3BlY2lmaWVk
VGV4dExlbmd0aCkpOwotICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46
OnN5bmNocm9uaXplKHRoaXMsIFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0ciwgdmFsdWUpOworICAg
IEF0b21pY1N0cmluZyB2YWx1ZShTVkdQcm9wZXJ0eVRyYWl0czxTVkdMZW5ndGg+Ojp0b1N0cmlu
Zyhvd25lclR5cGUtPm1fc3BlY2lmaWVkVGV4dExlbmd0aCkpOworICAgIFNWR0FuaW1hdGVkUHJv
cGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5bmNocm9uaXplKG93bmVyVHlwZSwgdGV4dExlbmd0
aFByb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lLCB2YWx1ZSk7Cit9CisKK1Bhc3NSZWZQdHI8
U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojpsb29rdXBPckNyZWF0
ZVRleHRMZW5ndGhXcmFwcGVyKHZvaWQqIGNvbnRleHRFbGVtZW50KQoreworICAgIEFTU0VSVChj
b250ZXh0RWxlbWVudCk7CisgICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50KiBvd25lclR5cGUgPSBz
dGF0aWNfY2FzdDxTVkdUZXh0Q29udGVudEVsZW1lbnQqPihjb250ZXh0RWxlbWVudCk7CisgICAg
cmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdUZXh0
Q29udGVudEVsZW1lbnQsIFNWR0FuaW1hdGVkTGVuZ3RoLCBTVkdMZW5ndGgsIHRydWU+CisgICAg
ICAgICAgIChvd25lclR5cGUsIHRleHRMZW5ndGhQcm9wZXJ0eUluZm8oKSwgb3duZXJUeXBlLT5t
X3RleHRMZW5ndGgudmFsdWUpOwogfQogCiBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiBT
VkdUZXh0Q29udGVudEVsZW1lbnQ6OnRleHRMZW5ndGhBbmltYXRlZCgpCkBAIC02OCw3ICsxMDIs
OCBAQCBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiBTVkdUZXh0Q29uCiAgICAgfQogCiAg
ICAgbV90ZXh0TGVuZ3RoLnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKLSAgICByZXR1cm4gU1ZH
QW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR0FuaW1hdGVkTGVuZ3Ro
LCBTVkdMZW5ndGg+KHRoaXMsIFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0ciwgU1ZHTmFtZXM6OnRl
eHRMZW5ndGhBdHRyLmxvY2FsTmFtZSgpLCBtX3RleHRMZW5ndGgudmFsdWUpOworICAgIHJldHVy
biBzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR0FuaW1hdGVkTGVuZ3RoPihsb29rdXBPckNyZWF0ZVRl
eHRMZW5ndGhXcmFwcGVyKHRoaXMpKTsKKwogfQogCiB1bnNpZ25lZCBTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6OmdldE51bWJlck9mQ2hhcnMoKSBjb25zdApAQCAtMjM2LDQ1ICsyNzEsNiBAQCB2b2lk
IFNWR1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKLXZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9
PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplTGVuZ3RoQWRqdXN0KCk7Ci0gICAg
ICAgIHN5bmNocm9uaXplVGV4dExlbmd0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVy
dGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9u
aXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkRWxl
bWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIpIHsK
LSAgICAgICAgc3luY2hyb25pemVMZW5ndGhBZGp1c3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dGV4dExlbmd0aEF0dHIpIHsKLSAg
ICAgICAgc3luY2hyb25pemVUZXh0TGVuZ3RoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3Bl
cnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlm
ICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CkBAIC0yOTQsMTQgKzI5MCw2IEBA
IHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGUKICAgICAgICAgUmVuZGVy
U1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihy
ZW5kZXJlcik7CiB9CiAKLXZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpmaWxsUGFzc2VkQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKQotewotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNz
ZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7
Ci0KLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRleHRMZW5n
dGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjpsZW5ndGhBZGp1c3RBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLX0K
LQogYm9vbCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBj
b25zdAogewogICAgIC8vIEFueSBlbGVtZW50IG9mIHRoZSA8dGV4dD4gc3VidHJlZSBpcyBhZHZl
cnRpemVkIGFzIHVzaW5nIHJlbGF0aXZlIGxlbmd0aHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCShyZXZpc2lvbiA5MDU2MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTUs
NiArOTUsNyBAQCBwdWJsaWM6CiAgICAgLy8gYXMgaXRzIGdldHRlciBuZWVkcyBzcGVjaWFsIGhh
bmRsaW5nIChyZXR1cm4gZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCksIGluc3RlYWQgb2YgbV90ZXh0
TGVuZ3RoKS4KICAgICBTVkdMZW5ndGgmIHNwZWNpZmllZFRleHRMZW5ndGgoKSB7IHJldHVybiBt
X3NwZWNpZmllZFRleHRMZW5ndGg7IH0KICAgICBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3Ro
PiB0ZXh0TGVuZ3RoQW5pbWF0ZWQoKTsKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZv
KiB0ZXh0TGVuZ3RoUHJvcGVydHlJbmZvKCk7CiAKIHByb3RlY3RlZDoKICAgICBTVkdUZXh0Q29u
dGVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CkBAIC0xMDQsOCAr
MTA1LDYgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShB
dHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZvaWQgZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJik7CiAKICAgICB2aXJ0dWFsIGJv
b2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hh
bmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7
CkBAIC0xMTMsMTQgKzExMiwyMSBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCBpc1RleHRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgLy8gQW5p
bWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgdm9pZCBzeW5jaHJvbml6ZVRleHRMZW5n
dGgoKTsKLSAgICBTVkdMZW5ndGggbV9zcGVjaWZpZWRUZXh0TGVuZ3RoOworICAgIC8vIEN1c3Rv
bSAndGV4dExlbmd0aCcgcHJvcGVydHkKKyAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZVRleHRM
ZW5ndGgodm9pZCogY29udGV4dEVsZW1lbnQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0Fu
aW1hdGVkUHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlVGV4dExlbmd0aFdyYXBwZXIodm9pZCogY29u
dGV4dEVsZW1lbnQpOwogICAgIG11dGFibGUgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3Bl
cnR5PFNWR0xlbmd0aD4gbV90ZXh0TGVuZ3RoOwotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVS
QVRJT04oTGVuZ3RoQWRqdXN0LCBsZW5ndGhBZGp1c3QsIFNWR0xlbmd0aEFkanVzdFR5cGUpCi0K
LSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRF
RF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpIAorICAgIFNWR0xlbmd0aCBtX3NwZWNpZmllZFRleHRMZW5ndGg7CisgIAorICAgIEJF
R0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0Q29udGVudEVsZW1lbnQpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oTGVuZ3RoQWRqdXN0LCBsZW5ndGhB
ZGp1c3QsIFNWR0xlbmd0aEFkanVzdFR5cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9P
TEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KSAKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0
cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rl
c3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0
aGlzKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEzICszNSwyMCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRp
b25zCi1ERUZJTkVfQU5JTUFURURfVFJBTlNGT1JNX0xJU1QoU1ZHVGV4dEVsZW1lbnQsIFNWR05h
bWVzOjp0cmFuc2Zvcm1BdHRyLCBUcmFuc2Zvcm0sIHRyYW5zZm9ybSkKK0JFR0lOX0RFRklORV9B
TklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFNW
R1RleHRFbGVtZW50LCBTVkdOYW1lczo6dHJhbnNmb3JtQXR0ciwgVHJhbnNmb3JtLCB0cmFuc2Zv
cm0pCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR1RleHRFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKHRyYW5zZm9ybSkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1B
VEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1RleHRFbGVtZW50OjpTVkdUZXh0RWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudCh0YWdOYW1lLCBkb2MpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05h
bWUoU1ZHTmFtZXM6OnRleHRUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0Zv
clNWR1RleHRFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHVGV4dEVsZW1lbnQ+IFNWR1Rl
eHRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQpAQCAtMTYwLDQxICsxNjcsNiBAQCB2b2lkIFNWR1RleHRFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZH
VGV4dEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVUcmFuc2Zvcm0oKTsKLSAgICAgICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6
c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdU
ZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dHJh
bnNmb3JtQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVRyYW5zZm9ybSgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdUZXh0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19h
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdUZXh0RWxlbWVudDo6Zmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6ZmlsbFBh
c3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRyYW5zZm9y
bUF0dHIsIEFuaW1hdGVkVHJhbnNmb3JtTGlzdCk7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaAkocmV2aXNpb24gOTA0
NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTYsMTIgKzU2LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OwogICAgICAgICAgICAgCiAgICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmly
dHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xB
UkVfQU5JTUFURURfVFJBTlNGT1JNX0xJU1QoVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCisgICAgQkVH
SU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1RleHRFbGVtZW50KQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFRyYW5zZm9ybSwgdHJhbnNmb3JtKQorICAg
IEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogICAgIC8vIFVzZWQgYnkgPGFuaW1h
dGVNb3Rpb24+CiAgICAgT3duUHRyPEFmZmluZVRyYW5zZm9ybT4gbV9zdXBwbGVtZW50YWxUcmFu
c2Zvcm07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAko
cmV2aXNpb24gOTA1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTEgKzMxLDIwIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHVGV4dFBhdGhFbGVtZW50LCBTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyLCBT
dGFydE9mZnNldCwgc3RhcnRPZmZzZXQpCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZH
VGV4dFBhdGhFbGVtZW50LCBTVkdOYW1lczo6bWV0aG9kQXR0ciwgTWV0aG9kLCBtZXRob2QsIFNW
R1RleHRQYXRoTWV0aG9kVHlwZSkKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdUZXh0
UGF0aEVsZW1lbnQsIFNWR05hbWVzOjpzcGFjaW5nQXR0ciwgU3BhY2luZywgc3BhY2luZywgU1ZH
VGV4dFBhdGhTcGFjaW5nVHlwZSkKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHVGV4dFBhdGhF
bGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKK0JFR0lOX0RFRklORV9B
TklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdUZXh0UGF0
aEVsZW1lbnQsIFNWR05hbWVzOjpzdGFydE9mZnNldEF0dHIsIFN0YXJ0T2Zmc2V0LCBzdGFydE9m
ZnNldCkKKyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHVGV4dFBhdGhFbGVtZW50
LCBTVkdOYW1lczo6bWV0aG9kQXR0ciwgTWV0aG9kLCBtZXRob2QsIFNWR1RleHRQYXRoTWV0aG9k
VHlwZSkKKyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHVGV4dFBhdGhFbGVtZW50
LCBTVkdOYW1lczo6c3BhY2luZ0F0dHIsIFNwYWNpbmcsIHNwYWNpbmcsIFNWR1RleHRQYXRoU3Bh
Y2luZ1R5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdUZXh0UGF0aEVsZW1lbnQs
IFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQorRU5EX0RFRklORV9BTklNQVRFRF9Q
Uk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGV4dFBh
dGhFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHN0YXJ0T2Zm
c2V0KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKG1ldGhvZCkKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShzcGFjaW5nKQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKGhyZWYpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHVGV4dENvbnRlbnRFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVE
X1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1RleHRQYXRoRWxlbWVudDo6U1ZHVGV4dFBhdGhFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICA6IFNWR1RleHRDb250ZW50RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTQ0LDYgKzUz
LDcgQEAgaW5saW5lIFNWR1RleHRQYXRoRWxlbWVudDo6U1ZHVGV4dFBhdGhFbAogICAgICwgbV9z
cGFjaW5nKFNWR1RleHRQYXRoU3BhY2luZ0V4YWN0KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KFNWR05hbWVzOjp0ZXh0UGF0aFRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVz
Rm9yU1ZHVGV4dFBhdGhFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHVGV4dFBhdGhFbGVt
ZW50PiBTVkdUZXh0UGF0aEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xMTIsNjIgKzEyMiw2IEBAIHZvaWQgU1ZHVGV4
dFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGEKICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6
Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihvYmplY3QpOwogfQog
Ci12b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkg
ewotICAgICAgICBzeW5jaHJvbml6ZVN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
TWV0aG9kKCk7Ci0gICAgICAgIHN5bmNocm9uaXplU3BhY2luZygpOwotICAgICAgICBzeW5jaHJv
bml6ZUhyZWYoKTsKLSAgICAgICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1RleHRDb250ZW50RWxl
bWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZVN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjptZXRob2RBdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplTWV0aG9kKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpzcGFjaW5nQXR0cikgewotICAgICAgICBzeW5j
aHJvbml6ZVNwYWNpbmcoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBpZiAo
U1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBz
eW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHVGV4dFBh
dGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
OwotfQotCi12b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0g
ICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyLCBBbmltYXRlZExlbmd0aCk7
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjptZXRob2RBdHRy
LCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnNwYWNpbmdBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVk
U3RyaW5nKTsKLX0KLQogUmVuZGVyT2JqZWN0KiBTVkdUZXh0UGF0aEVsZW1lbnQ6OmNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBu
ZXcgKGFyZW5hKSBSZW5kZXJTVkdUZXh0UGF0aCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgJKHJldmlzaW9uIDkwNTYwKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw0OCArMzks
NiBAQCBlbnVtIFNWR1RleHRQYXRoU3BhY2luZ1R5cGUgewogICAgIFNWR1RleHRQYXRoU3BhY2lu
Z0V4YWN0CiB9OwogCi1jbGFzcyBTVkdUZXh0UGF0aEVsZW1lbnQgOiBwdWJsaWMgU1ZHVGV4dENv
bnRlbnRFbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1VSSVJl
ZmVyZW5jZSB7Ci1wdWJsaWM6Ci0gICAgLy8gRm9yd2FyZCBkZWNsYXJlIGVudW1lcmF0aW9ucyBp
biB0aGUgVzNDIG5hbWluZyBzY2hlbWUsIGZvciBJREwgZ2VuZXJhdGlvbi4KLSAgICBlbnVtIHsK
LSAgICAgICAgVEVYVFBBVEhfTUVUSE9EVFlQRV9VTktOT1dOID0gU1ZHVGV4dFBhdGhNZXRob2RV
bmtub3duLAotICAgICAgICBURVhUUEFUSF9NRVRIT0RUWVBFX0FMSUdOID0gU1ZHVGV4dFBhdGhN
ZXRob2RBbGlnbiwKLSAgICAgICAgVEVYVFBBVEhfTUVUSE9EVFlQRV9TVFJFVENIID0gU1ZHVGV4
dFBhdGhNZXRob2RTdHJldGNoLAotICAgICAgICBURVhUUEFUSF9TUEFDSU5HVFlQRV9VTktOT1dO
ID0gU1ZHVGV4dFBhdGhTcGFjaW5nVW5rbm93biwKLSAgICAgICAgVEVYVFBBVEhfU1BBQ0lOR1RZ
UEVfQVVUTyA9IFNWR1RleHRQYXRoU3BhY2luZ0F1dG8sCi0gICAgICAgIFRFWFRQQVRIX1NQQUNJ
TkdUWVBFX0VYQUNUID0gU1ZHVGV4dFBhdGhTcGFjaW5nRXhhY3QKLSAgICB9OwotCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8U1ZHVGV4dFBhdGhFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Kik7Ci0gCi1wcml2YXRlOgotICAgIFNWR1RleHRQYXRoRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIHZpcnR1YWwgdm9pZCBpbnNl
cnRlZEludG9Eb2N1bWVudCgpOwotCi0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSopOwotICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwotICAgIHZpcnR1
YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKLSAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwot
Ci0gICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKLQotICAg
IC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIKFN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VO
VU1FUkFUSU9OKE1ldGhvZCwgbWV0aG9kLCBTVkdUZXh0UGF0aE1ldGhvZFR5cGUpCi0gICAgREVD
TEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihTcGFjaW5nLCBzcGFjaW5nLCBTVkdUZXh0UGF0aFNw
YWNpbmdUeXBlKQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRF
RF9TVFJJTkcoSHJlZiwgaHJlZikKLX07Ci0KIHRlbXBsYXRlPD4KIHN0cnVjdCBTVkdQcm9wZXJ0
eVRyYWl0czxTVkdUZXh0UGF0aE1ldGhvZFR5cGU+IHsKICAgICBzdGF0aWMgU1ZHVGV4dFBhdGhN
ZXRob2RUeXBlIGhpZ2hlc3RFbnVtVmFsdWUoKSB7IHJldHVybiBTVkdUZXh0UGF0aE1ldGhvZFN0
cmV0Y2g7IH0KQEAgLTEzOSw2ICs5Nyw0NCBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZH
VGV4dFBhdGhTcGFjCiAgICAgfQogfTsKIAorY2xhc3MgU1ZHVGV4dFBhdGhFbGVtZW50IDogcHVi
bGljIFNWR1RleHRDb250ZW50RWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBTVkdVUklSZWZlcmVuY2UgeworcHVibGljOgorICAgIC8vIEZvcndhcmQgZGVjbGFyZSBl
bnVtZXJhdGlvbnMgaW4gdGhlIFczQyBuYW1pbmcgc2NoZW1lLCBmb3IgSURMIGdlbmVyYXRpb24u
CisgICAgZW51bSB7CisgICAgICAgIFRFWFRQQVRIX01FVEhPRFRZUEVfVU5LTk9XTiA9IFNWR1Rl
eHRQYXRoTWV0aG9kVW5rbm93biwKKyAgICAgICAgVEVYVFBBVEhfTUVUSE9EVFlQRV9BTElHTiA9
IFNWR1RleHRQYXRoTWV0aG9kQWxpZ24sCisgICAgICAgIFRFWFRQQVRIX01FVEhPRFRZUEVfU1RS
RVRDSCA9IFNWR1RleHRQYXRoTWV0aG9kU3RyZXRjaCwKKyAgICAgICAgVEVYVFBBVEhfU1BBQ0lO
R1RZUEVfVU5LTk9XTiA9IFNWR1RleHRQYXRoU3BhY2luZ1Vua25vd24sCisgICAgICAgIFRFWFRQ
QVRIX1NQQUNJTkdUWVBFX0FVVE8gPSBTVkdUZXh0UGF0aFNwYWNpbmdBdXRvLAorICAgICAgICBU
RVhUUEFUSF9TUEFDSU5HVFlQRV9FWEFDVCA9IFNWR1RleHRQYXRoU3BhY2luZ0V4YWN0CisgICAg
fTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1RleHRQYXRoRWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworIAorcHJpdmF0ZToKKyAgICBTVkdUZXh0
UGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisKKyAgICB2aXJ0
dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKKworICAgIGJvb2wgaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CisKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1
YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwor
CisgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKKyAKKyAg
ICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGV4dFBhdGhFbGVtZW50KQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChTdGFydE9mZnNldCwgc3RhcnRPZmZzZXQp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oTWV0aG9kLCBtZXRob2QsIFNW
R1RleHRQYXRoTWV0aG9kVHlwZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElP
TihTcGFjaW5nLCBzcGFjaW5nLCBTVkdUZXh0UGF0aFNwYWNpbmdUeXBlKQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRJRVMKK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlv
bmluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTYgKzMz
LDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVm
aW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9MRU5HVEhfTElTVChTVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIX0xJ
U1QoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQotREVG
SU5FX0FOSU1BVEVEX0xFTkdUSF9MSVNUKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR05h
bWVzOjpkeEF0dHIsIER4LCBkeCkKLURFRklORV9BTklNQVRFRF9MRU5HVEhfTElTVChTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50LCBTVkdOYW1lczo6ZHlBdHRyLCBEeSwgZHkpCi1ERUZJTkVfQU5J
TUFURURfTlVNQkVSX0xJU1QoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTmFtZXM6OnJv
dGF0ZUF0dHIsIFJvdGF0ZSwgcm90YXRlKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJ
RVMKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIX0xJU1QoU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEhf
TElTVChTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCisg
ICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSF9MSVNUKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQs
IFNWR05hbWVzOjpkeEF0dHIsIER4LCBkeCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIX0xJ
U1QoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTmFtZXM6OmR5QXR0ciwgRHksIGR5KQor
ICAgIERFRklORV9BTklNQVRFRF9OVU1CRVJfTElTVChTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
LCBTVkdOYW1lczo6cm90YXRlQXR0ciwgUm90YXRlLCByb3RhdGUpCitFTkRfREVGSU5FX0FOSU1B
VEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdU
ZXh0UG9zaXRpb25pbmdFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeSkKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShkeCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShkeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShy
b3RhdGUpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGV4dENv
bnRlbnRFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudDo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdUZXh0Q29u
dGVudEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CisgICAgcmVnaXN0ZXJBbmltYXRlZFBy
b3BlcnRpZXNGb3JTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KCk7CiB9CiAKIGJvb2wgU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCkBAIC0xMzksNjIgKzE1MCw2IEBAIHZvaWQgU1ZHVGV4dFBvc2l0aW9u
aW5nRWxlbWVudDo6c3ZnQXR0cmkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9p
ZCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgp
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAg
ICAgICAgc3luY2hyb25pemVEeCgpOwotICAgICAgICBzeW5jaHJvbml6ZUR5KCk7Ci0gICAgICAg
IHN5bmNocm9uaXplUm90YXRlKCk7Ci0gICAgICAgIFNWR1RleHRDb250ZW50RWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXh0
Q29udGVudEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVZKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OmR4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUR4KCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmR5QXR0cikgewotICAgICAgICBz
eW5jaHJvbml6ZUR5KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnJvdGF0ZUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVSb3RhdGUo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
fQotCi12b2lkIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXApCi17Ci0gICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpmaWxsUGFzc2Vk
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwot
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5p
bWF0ZWRMZW5ndGhMaXN0KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aExpc3QpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZHhBdHRyLCBBbmltYXRlZExlbmd0aExpc3QpOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZHlBdHRyLCBBbmltYXRl
ZExlbmd0aExpc3QpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6cm90YXRlQXR0ciwgQW5pbWF0ZWROdW1iZXJMaXN0KTsKLX0KLQogU1ZHVGV4dFBvc2l0aW9u
aW5nRWxlbWVudCogU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6ZWxlbWVudEZyb21SZW5kZXJl
cihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIGlmICghcmVuZGVyZXIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgJKHJldmlz
aW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTUgKzM4LDE0IEBAIHByb3RlY3RlZDoKICAgICBi
b29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1
YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2
b2lkIGZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEhfTElTVChYLCB4KQotICAgIERFQ0xBUkVfQU5JTUFU
RURfTEVOR1RIX0xJU1QoWSwgeSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSF9MSVNUKER4
LCBkeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSF9MSVNUKER5LCBkeSkKLSAgICBERUNM
QVJFX0FOSU1BVEVEX05VTUJFUl9MSVNUKFJvdGF0ZSwgcm90YXRlKQorICAgIEJFR0lOX0RFQ0xB
UkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSF9MSVNUKFgsIHgpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfTEVOR1RIX0xJU1QoWSwgeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEhf
TElTVChEeCwgZHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIX0xJU1QoRHksIGR5
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUl9MSVNUKFJvdGF0ZSwgcm90YXRlKQor
ICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MCwxOCArNjAsNiBAQCB2b2lkIFNWR1RpdGxlRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKGJvCiAgICAgICAgIGRvY3VtZW50KCktPnNldFRpdGxlRWxlbWVudChTdHJp
bmdXaXRoRGlyZWN0aW9uKHRleHRDb250ZW50KCksIExUUiksIHRoaXMpOwogfQogCi1BdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHVGl0bGVFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBz
X2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwogfQogCi12b2lkIFNWR1RpdGxlRWxlbWVudDo6
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsgICAgICAgIAotICAgIFNWR1N0eWxl
ZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpKTsKLX0KLQotfQotCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYg
Ly8gRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmgJKHJl
dmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0MCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZv
cmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEg
PSAwKTsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5k
ZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAko
cmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU1LDEzICs1NSwyNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR1VzZUVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKLURFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQotREVGSU5FX0FO
SU1BVEVEX0xFTkdUSChTVkdVc2VFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0aCwg
d2lkdGgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1VzZUVsZW1lbnQsIFNWR05hbWVzOjpo
ZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdodCkKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHVXNl
RWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCi1ERUZJTkVfQU5JTUFU
RURfQk9PTEVBTihTVkdVc2VFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklN
QVRFRF9MRU5HVEgoU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQorICAgIERF
RklORV9BTklNQVRFRF9MRU5HVEgoU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5
KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6Ondp
ZHRoQXR0ciwgV2lkdGgsIHdpZHRoKQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHVXNl
RWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhlaWdodCwgaGVpZ2h0KQorICAgIERFRklO
RV9BTklNQVRFRF9TVFJJTkcoU1ZHVXNlRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhy
ZWYsIGhyZWYpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHVXNlRWxlbWVudCwgU1ZH
TmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorRU5EX0RFRklORV9BTklNQVRFRF9Q
Uk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVXNlRWxl
bWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh4KQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkod2lkdGgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
aGVpZ2h0KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGhyZWYpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBT
VkdVc2VFbGVtZW50OjpTVkdVc2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KQpAQCAtNzMsNiArODUsNyBAQCBpbmxpbmUgU1ZHVXNlRWxlbWVu
dDo6U1ZHVXNlRWxlbWVudChjb25zCiAgICAgLCBtX25lZWRzU2hhZG93VHJlZVJlY3JlYXRpb24o
ZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnVzZVRhZykpOworICAg
IHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVXNlRWxlbWVudCgpOwogfQogCiBQYXNz
UmVmUHRyPFNWR1VzZUVsZW1lbnQ+IFNWR1VzZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0yNDMsODEgKzI1Niw2IEBA
IHZvaWQgU1ZHVXNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCgKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdVc2VFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBh
bnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6
ZVkoKTsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhl
aWdodCgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsK
LSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewot
ICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0
eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OnhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
V2lkdGgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6aGVpZ2h0QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAg
ICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
U1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1Rlc3Rz
OjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBTVkdVc2VFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
Ci17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
c19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR1VzZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsUGFzc2Vk
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwot
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1h
dGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3Ro
KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0
dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQogc3RhdGljIHZvaWQgdXBkYXRlQ29udGFpbmVyU2l6
ZShTVkdFbGVtZW50SW5zdGFuY2UqIHRhcmdldEluc3RhbmNlKQogewogICAgIC8vIERlcHRoLWZp
cnN0IHVzZWQgdG8gd3JpdGUgdGhlIG1ldGhvZCBpbiBlYXJseSBleGl0IHN0eWxlLCBubyBwYXJ0
aWN1bGFyIG90aGVyIHJlYXNvbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAko
cmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Myw5ICs2Myw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBv
cnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lk
IGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgcmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgPSBOb0NoYW5nZSk7CiAgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5
bGUqKTsKQEAgLTEwNiwxNyArMTAzLDE5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVDb250
YWluZXJPZmZzZXRzKCk7CiAgICAgdm9pZCB1cGRhdGVDb250YWluZXJTaXplcygpOwogCi0gICAg
Ly8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEgoWCwgeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQotICAgIERFQ0xB
UkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSChIZWlnaHQsIGhlaWdodCkKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERFQ0xB
UkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgQkVHSU5fREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1VzZUVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfTEVOR1RIKFgsIHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9P
TEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3Rz
CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVz
dHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXpl
UmVxdWlyZWRFeHRlbnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
U3lzdGVtTGFuZ3VhZ2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRo
aXMpOyB9CiAKICAgICBib29sIG1fdXBkYXRlc0Jsb2NrZWQ7CiAgICAgYm9vbCBtX25lZWRzU2hh
ZG93VHJlZVJlY3JlYXRpb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5j
cHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDI1IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRF
RF9CT09MRUFOKFNWR1ZpZXdFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpCi1ERUZJTkVfQU5JTUFURURfUkVDVChTVkdWaWV3RWxlbWVudCwgU1ZHTmFtZXM6OnZp
ZXdCb3hBdHRyLCBWaWV3Qm94LCB2aWV3Qm94KQotREVGSU5FX0FOSU1BVEVEX1BSRVNFUlZFQVNQ
RUNUUkFUSU8oU1ZHVmlld0VsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0
ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKK0JFR0lOX0RFRklO
RV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHVmll
d0VsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBERUZJ
TkVfQU5JTUFURURfUkVDVChTVkdWaWV3RWxlbWVudCwgU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBW
aWV3Qm94LCB2aWV3Qm94KQorICAgIERFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElP
KFNWR1ZpZXdFbGVtZW50LCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFByZXNl
cnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCitFTkRfREVGSU5FX0FOSU1BVEVE
X1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdWaWV3
RWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHZp
ZXdCb3gpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocHJlc2VydmVBc3Bl
Y3RSYXRpbykKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHls
ZWRFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNW
R1ZpZXdFbGVtZW50OjpTVkdWaWV3RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KQogICAgICwgbV92aWV3VGFyZ2V0KFNWR05hbWVzOjp2aWV3VGFyZ2V0QXR0cikKIHsK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6dmlld1RhZykpOworICAgIHJlZ2lzdGVy
QW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVmlld0VsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxT
VkdWaWV3RWxlbWVudD4gU1ZHVmlld0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC04Miw1MSArOTEsNiBAQCB2b2lkIFNW
R1ZpZXdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKLXZvaWQgU1ZHVmlld0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1l
KCkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0g
ICAgICAgIFNWR0ZpdFRvVmlld0JveDo6c3luY2hyb25pemVQcm9wZXJ0aWVzKGF0dHJOYW1lKTsK
LSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRl
KGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6dmlld1RhcmdldEF0dHIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
IChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdGaXRUb1ZpZXdCb3g6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpdFRvVmlld0JveDo6c3luY2hyb25p
emVQcm9wZXJ0aWVzKGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZH
Vmlld0VsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXA7Ci19Ci0KLXZvaWQgU1ZHVmlld0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAg
IFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgQW5pbWF0ZWRSZWN0KTsKLSAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRy
LCBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFC
TEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgJKHJldmlzaW9uIDkw
NDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDIwICs0OCwxNCBAQCBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1
dGVDaGFuZ2VkIG1pc3NpbmcuCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0
dHJpYnV0ZSopOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KIAotICAg
IC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotCi0gICAgLy8gU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotIAotICAgIC8vIFNW
R0ZpdFRvVmlld0JveAotICAgIERFQ0xBUkVfQU5JTUFURURfUkVDVChWaWV3Qm94LCB2aWV3Qm94
KQotICAgIERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVj
dFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdWaWV3RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09M
RUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUkVDVChWaWV3Qm94LCB2aWV3Qm94KQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oUHJlc2VydmVBc3BlY3RSYXRp
bywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTCiAKICAgICBTVkdTdHJpbmdMaXN0IG1fdmlld1RhcmdldDsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdWaWV3U3BlYy5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1ZpZXdTcGVjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTMgKzMwLDIxIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMK
LURFRklORV9BTklNQVRFRF9SRUNUKFNWR1ZpZXdTcGVjLCBTVkdOYW1lczo6dmlld0JveEF0dHIs
IFZpZXdCb3gsIHZpZXdCb3gpCi1ERUZJTkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhT
VkdWaWV3U3BlYywgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBQcmVzZXJ2ZUFz
cGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BS
T1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfUkVDVChTVkdWaWV3U3BlYywgU1ZHTmFtZXM6
OnZpZXdCb3hBdHRyLCBWaWV3Qm94LCB2aWV3Qm94KQorICAgIERFRklORV9BTklNQVRFRF9QUkVT
RVJWRUFTUEVDVFJBVElPKFNWR1ZpZXdTcGVjLCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRp
b0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCitFTkRfREVG
SU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdWaWV3U3BlYykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh2
aWV3Qm94KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHByZXNlcnZlQXNw
ZWN0UmF0aW8pCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBTVkdWaWV3U3Bl
Yzo6U1ZHVmlld1NwZWMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiAgICAgOiBtX2NvbnRl
eHRFbGVtZW50KGNvbnRleHRFbGVtZW50KQogeworICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50
KTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1ZpZXdTcGVjKCk7CiB9CiAK
IHZvaWQgU1ZHVmlld1NwZWM6OnNldFRyYW5zZm9ybShjb25zdCBTdHJpbmcmIHRyYW5zZm9ybSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMSArNTUs
MTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdFbGVtZW50KiBtX2NvbnRleHRFbGVtZW50
OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0KLSAgICAvLyBTVkdG
aXRUb1ZpZXdCb3gKLSAgICBERUNMQVJFX0FOSU1BVEVEX1JFQ1QoVmlld0JveCwgdmlld0JveCkK
LSAgICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oUHJlc2VydmVBc3BlY3RS
YXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHVmlld1NwZWMpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUkVDVChWaWV3
Qm94LCB2aWV3Qm94KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFU
SU8oUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICBFTkRfREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICBTVkdUcmFuc2Zvcm1MaXN0IG1fdHJhbnNm
b3JtOwogICAgIFN0cmluZyBtX3ZpZXdUYXJnZXRTdHJpbmc7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCShyZXZpc2lv
biA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTUgKzIxLDE0IEBACiAjZGVmaW5lIFNWR0Fu
aW1hdGVkUHJvcGVydHlfaAogCiAjaWYgRU5BQkxFKFNWRykKLSNpbmNsdWRlICJRdWFsaWZpZWRO
YW1lLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmgiCiAjaW5j
bHVkZSAiU1ZHRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR1Byb3BlcnR5SW5mby5oIgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZH
RWxlbWVudDsKLWNsYXNzIFNWR1Byb3BlcnR5OwogCiBjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5
IDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gewogcHVibGljOgpAQCAt
NDQsNiArNDMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIGlzQW5pbWF0
ZWRMaXN0VGVhck9mZigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUFuaW1WYWwodm9pZCopIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8v
IENhY2hpbmcgZmFjaWxpdGllcy4KICAgICB0eXBlZGVmIEhhc2hNYXA8U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eURlc2NyaXB0aW9uLCBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4sIFNWR0FuaW1hdGVk
UHJvcGVydHlEZXNjcmlwdGlvbkhhc2gsIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbkhh
c2hUcmFpdHM+IENhY2hlOwpAQCAtNjEsMjMgKzYxLDQ0IEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRlYXJPZmZUeXBlLCB0eXBlbmFtZSBQcm9w
ZXJ0eVR5cGUsIGJvb2wgaXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ+CisgICAgc3RydWN0IEhlbHBl
cjsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRlYXJPZmZUeXBlLCB0eXBlbmFtZSBQcm9wZXJ0
eVR5cGU+Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGVhck9mZlR5cGU+IGxvb2t1cE9yQ3JlYXRl
V3JhcHBlcihTVkdFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZUlkZW50aWZpZXIsIFByb3BlcnR5
VHlwZSYgcHJvcGVydHkpCi0gICAgewotICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3Jp
cHRpb24ga2V5KGVsZW1lbnQsIGF0dHJpYnV0ZUlkZW50aWZpZXIpOwotICAgICAgICBSZWZQdHI8
U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gd3JhcHBlciA9IGFuaW1hdGVkUHJvcGVydHlDYWNoZSgpLT5n
ZXQoa2V5KTsKLSAgICAgICAgaWYgKCF3cmFwcGVyKSB7Ci0gICAgICAgICAgICB3cmFwcGVyID0g
VGVhck9mZlR5cGU6OmNyZWF0ZShlbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBwcm9wZXJ0eSk7Ci0g
ICAgICAgICAgICBhbmltYXRlZFByb3BlcnR5Q2FjaGUoKS0+c2V0KGtleSwgd3JhcHBlcik7Cisg
ICAgc3RydWN0IEhlbHBlcjxUZWFyT2ZmVHlwZSwgUHJvcGVydHlUeXBlLCBmYWxzZT4geworICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZWFyT2ZmVHlwZT4gbG9va3VwT3JDcmVhdGVXcmFwcGVy
KHZvaWQqLCBjb25zdCBTVkdQcm9wZXJ0eUluZm8qLCBQcm9wZXJ0eVR5cGUmKQorICAgICAgICB7
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBQ
YXNzUmVmUHRyPFRlYXJPZmZUeXBlPigpOwogICAgICAgICB9CisgICAgfTsKIAotICAgICAgICBy
ZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxUZWFyT2ZmVHlwZT4od3JhcHBlcikucmVsZWFzZSgp
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRlYXJPZmZUeXBlLCB0eXBlbmFtZSBQcm9wZXJ0eVR5
cGU+CisgICAgc3RydWN0IEhlbHBlcjxUZWFyT2ZmVHlwZSwgUHJvcGVydHlUeXBlLCB0cnVlPiB7
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRlYXJPZmZUeXBlPiBsb29rdXBPckNyZWF0ZVdy
YXBwZXIoU1ZHRWxlbWVudCogZWxlbWVudCwgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBpbmZvLCBQ
cm9wZXJ0eVR5cGUmIHByb3BlcnR5KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaW5m
byk7CisgICAgICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24ga2V5KGVsZW1l
bnQsIGluZm8tPnByb3BlcnR5SWRlbnRpZmllcik7CisgICAgICAgICAgICBSZWZQdHI8U1ZHQW5p
bWF0ZWRQcm9wZXJ0eT4gd3JhcHBlciA9IGFuaW1hdGVkUHJvcGVydHlDYWNoZSgpLT5nZXQoa2V5
KTsKKyAgICAgICAgICAgIGlmICghd3JhcHBlcikgeworICAgICAgICAgICAgICAgIHdyYXBwZXIg
PSBUZWFyT2ZmVHlwZTo6Y3JlYXRlKGVsZW1lbnQsIGluZm8tPmF0dHJpYnV0ZU5hbWUsIHByb3Bl
cnR5KTsKKyAgICAgICAgICAgICAgICBhbmltYXRlZFByb3BlcnR5Q2FjaGUoKS0+c2V0KGtleSwg
d3JhcHBlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3BvaW50
ZXJfY2FzdDxUZWFyT2ZmVHlwZT4od3JhcHBlcikucmVsZWFzZSgpOworICAgICAgICB9CisgICAg
fTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgdHlwZW5hbWUgVGVhck9mZlR5
cGUsIHR5cGVuYW1lIFByb3BlcnR5VHlwZSwgYm9vbCBpc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudD4K
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZWFyT2ZmVHlwZT4gbG9va3VwT3JDcmVhdGVXcmFwcGVy
KE93bmVyVHlwZSogZWxlbWVudCwgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBpbmZvLCBQcm9wZXJ0
eVR5cGUmIHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEhlbHBlcjxUZWFyT2ZmVHlw
ZSwgUHJvcGVydHlUeXBlLCBpc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudD46Omxvb2t1cE9yQ3JlYXRl
V3JhcHBlcihlbGVtZW50LCBpbmZvLCBwcm9wZXJ0eSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVGVhck9mZlR5cGU+Ci0gICAgc3RhdGljIFRlYXJPZmZUeXBlKiBsb29rdXBXcmFw
cGVyKFNWR0VsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlSWRl
bnRpZmllcikKKyAgICBzdGF0aWMgVGVhck9mZlR5cGUqIGxvb2t1cFdyYXBwZXIoU1ZHRWxlbWVu
dCogZWxlbWVudCwgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBpbmZvKQogICAgIHsKLSAgICAgICAg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uIGtleShlbGVtZW50LCBhdHRyaWJ1dGVJZGVu
dGlmaWVyKTsKKyAgICAgICAgQVNTRVJUKGluZm8pOworICAgICAgICBTVkdBbmltYXRlZFByb3Bl
cnR5RGVzY3JpcHRpb24ga2V5KGVsZW1lbnQsIGluZm8tPnByb3BlcnR5SWRlbnRpZmllcik7CiAg
ICAgICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PFRlYXJPZmZUeXBlPihhbmltYXRlZFBy
b3BlcnR5Q2FjaGUoKS0+Z2V0KGtleSkpLmdldCgpOwogICAgIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlN
YWNyb3MuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAtMjAxMS4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsNyArMjMsNyBAQAogI2RlZmlu
ZSBTVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zX2gKIAogI2lmIEVOQUJMRShTVkcpCi0jaW5jbHVk
ZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oIgorI2luY2x1ZGUgIlNWR0F0dHJp
YnV0ZVRvUHJvcGVydHlNYXAuaCIKICNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0cy5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NCwxNCArNTQsMjQgQEAgc3RydWN0IEdldE93bmVyRWxl
bWVudEZvclR5cGU8T3duZXJUeXBlLAogdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgogc3Ry
dWN0IElzRGVyaXZlZEZyb21TVkdFbGVtZW50IHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1
ZSA9IHRydWU7CisgICAgdHlwZWRlZiBPd25lclR5cGUgRm9yd2FyZGVkT3duZXJUeXBlOwogfTsK
IAogY2xhc3MgU1ZHVmlld1NwZWM7CiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgSXNEZXJpdmVkRnJvbVNW
R0VsZW1lbnQ8U1ZHVmlld1NwZWM+IHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZh
bHNlOworICAgIHR5cGVkZWYgU1ZHRWxlbWVudCBGb3J3YXJkZWRPd25lclR5cGU7CiB9OwogCitj
bGFzcyBTVkdUZXN0czsKK3RlbXBsYXRlPD4KK3N0cnVjdCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVu
dDxTVkdUZXN0cz4geworICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7CisgICAg
dHlwZWRlZiBTVkdFbGVtZW50IEZvcndhcmRlZE93bmVyVHlwZTsKK307CisKKwogLy8gU1ZHU3lu
Y2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5IGltcGxlbWVudGF0aW9uCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBQcm9wZXJ0eVR5cGU+CiBzdHJ1Y3QgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3Bl
cnR5IHsKQEAgLTg5LDYwICs5OSwxMTYgQEAgc3RydWN0IFNWR1N5bmNocm9uaXphYmxlQW5pbWF0
ZWRQcm9wZXJ0eQogICAgIGJvb2wgc2hvdWxkU3luY2hyb25pemUgOiAxOwogfTsKIAotI2RlZmlu
ZSBERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RP
TUF0dHJpYnV0ZUlkZW50aWZpZXIsIFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJv
cGVydHksIExvd2VyUHJvcGVydHkpIFwKLXZvaWQgT3duZXJUeXBlOjpzeW5jaHJvbml6ZSMjVXBw
ZXJQcm9wZXJ0eSgpIFwKKy8vIFByb3BlcnR5IHJlZ2lzdHJhdGlvbiBoZWxwZXJzCisjZGVmaW5l
IEJFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoT3duZXJUeXBlKSBcCitTVkdBdHRy
aWJ1dGVUb1Byb3BlcnR5TWFwJiBPd25lclR5cGU6OmF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKSBc
CiB7IFwKLSAgICBpZiAoIW1fIyNMb3dlclByb3BlcnR5LnNob3VsZFN5bmNocm9uaXplKSBcCi0g
ICAgICAgICByZXR1cm47IFwKLSAgICBBdG9taWNTdHJpbmcgdmFsdWUoU1ZHUHJvcGVydHlUcmFp
dHM8UHJvcGVydHlUeXBlPjo6dG9TdHJpbmcoTG93ZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKCkpKTsg
XAotICAgIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50ID0gR2V0T3duZXJFbGVtZW50Rm9yVHlw
ZTxPd25lclR5cGUsIElzRGVyaXZlZEZyb21TVkdFbGVtZW50PE93bmVyVHlwZT46OnZhbHVlPjo6
b3duZXJFbGVtZW50KHRoaXMpOyBcCi0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXpl
cjxJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5cGU+Ojp2YWx1ZT46OnN5bmNocm9uaXpl
KGNvbnRleHRFbGVtZW50LCBET01BdHRyaWJ1dGUsIHZhbHVlKTsgXAorICAgIERFRklORV9TVEFU
SUNfTE9DQUwoU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5
TWFwLCAoKSk7IFwKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5TWFwOyBcCiB9IFwK
IFwKLVBhc3NSZWZQdHI8VGVhck9mZlR5cGU+IE93bmVyVHlwZTo6TG93ZXJQcm9wZXJ0eSMjQW5p
bWF0ZWQoKSBcCitzdGF0aWMgdm9pZCByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvciMjT3du
ZXJUeXBlKCkgXAogeyBcCi0gICAgbV8jI0xvd2VyUHJvcGVydHkuc2hvdWxkU3luY2hyb25pemUg
PSB0cnVlOyBcCi0gICAgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQgPSBHZXRPd25lckVsZW1l
bnRGb3JUeXBlPE93bmVyVHlwZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8T3duZXJUeXBlPjo6
dmFsdWU+Ojpvd25lckVsZW1lbnQodGhpcyk7IFwKLSAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5cGU+KGNv
bnRleHRFbGVtZW50LCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIG1f
IyNMb3dlclByb3BlcnR5LnZhbHVlKTsgXAotfQorICAgIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlN
YXAmIG1hcCA9IE93bmVyVHlwZTo6YXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpOyBcCisgICAgaWYg
KCFtYXAuaXNFbXB0eSgpKSBcCisgICAgICAgIHJldHVybjsgXAorICAgIHR5cGVkZWYgT3duZXJU
eXBlIFVzZU93bmVyVHlwZTsKKworI2RlZmluZSBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWShMb3dlclByb3BlcnR5KSBcCisgICAgIG1hcC5hZGRQcm9wZXJ0eShVc2VPd25lclR5cGU6
Okxvd2VyUHJvcGVydHkjI1Byb3BlcnR5SW5mbygpKTsKKworI2RlZmluZSBSRUdJU1RFUl9QQVJF
TlRfQU5JTUFURURfUFJPUEVSVElFUyhDbGFzc05hbWUpIFwKKyAgICAgbWFwLmFkZFByb3BlcnRp
ZXMoQ2xhc3NOYW1lOjphdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCkpOyBcCisKKyNkZWZpbmUgRU5E
X1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMgfQorCisvLyBQcm9wZXJ0eSBkZWZpbml0aW9u
IGhlbHBlcnMgKHVzZWQgaW4gU1ZHKi5jcHAgZmlsZXMpCisjZGVmaW5lIEJFR0lOX0RFRklORV9B
TklNQVRFRF9QUk9QRVJUSUVTCisKKyNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFu
aW1hdGVkUHJvcGVydHlUeXBlRW51bSwgT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0
dHJpYnV0ZUlkZW50aWZpZXIsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKK2NvbnN0
IFNWR1Byb3BlcnR5SW5mbyogT3duZXJUeXBlOjpMb3dlclByb3BlcnR5IyNQcm9wZXJ0eUluZm8o
KSB7IFwKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBzX3Byb3BlcnR5SW5mbyA9
IDA7IFwKKyAgICBpZiAoIXNfcHJvcGVydHlJbmZvKSBcCisgICAgICAgIHNfcHJvcGVydHlJbmZv
ID0gbmV3IFNWR1Byb3BlcnR5SW5mbyhBbmltYXRlZFByb3BlcnR5VHlwZUVudW0sIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPTUF0dHJpYnV0ZSwgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRE9NQXR0cmli
dXRlSWRlbnRpZmllciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJk93bmVyVHlwZTo6c3luY2hyb25pemUjI1VwcGVyUHJvcGVydHksIFwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZPd25lclR5cGU6Omxvb2t1cE9y
Q3JlYXRlIyNVcHBlclByb3BlcnR5IyNXcmFwcGVyKTsgXAorICAgIFwKKyAgICByZXR1cm4gc19w
cm9wZXJ0eUluZm87IFwKK30gCisKKyNkZWZpbmUgRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJU
SUVTCisKKy8vIFByb3BlcnR5IGRlY2xhcmF0aW9uIGhlbHBlcnMgKHVzZWQgaW4gU1ZHKi5oIGZp
bGVzKQorI2RlZmluZSBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoT3duZXJUeXBl
KSBcCitwdWJsaWM6IFwKKyAgICBzdGF0aWMgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgYXR0
cmlidXRlVG9Qcm9wZXJ0eU1hcCgpOyBcCisgICAgdmlydHVhbCBTVkdBdHRyaWJ1dGVUb1Byb3Bl
cnR5TWFwJiBsb2NhbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKSBcCisgICAgeyBcCisgICAgICAg
IHJldHVybiBhdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCk7IFwKKyAgICB9XAorICAgIHR5cGVkZWYg
T3duZXJUeXBlIFVzZU93bmVyVHlwZTsKIAogI2RlZmluZSBERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRZKFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVy
dHkpIFwKIHB1YmxpYzogXAotUHJvcGVydHlUeXBlJiBMb3dlclByb3BlcnR5KCkgY29uc3QgXAot
eyBcCi0gICAgcmV0dXJuIG1fIyNMb3dlclByb3BlcnR5LnZhbHVlOyBcCi19IFwKLVwKLVByb3Bl
cnR5VHlwZSYgTG93ZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKCkgY29uc3QgXAoteyBcCi0gICAgcmV0
dXJuIG1fIyNMb3dlclByb3BlcnR5LnZhbHVlOyBcCi19IFwKLVwKLXZvaWQgc2V0IyNVcHBlclBy
b3BlcnR5IyNCYXNlVmFsdWUoY29uc3QgUHJvcGVydHlUeXBlJiB0eXBlKSBcCi17IFwKLSAgICBt
XyMjTG93ZXJQcm9wZXJ0eS52YWx1ZSA9IHR5cGU7IFwKLX0gXAotXAotUGFzc1JlZlB0cjxUZWFy
T2ZmVHlwZT4gTG93ZXJQcm9wZXJ0eSMjQW5pbWF0ZWQoKTsgXAotXAorICAgIHN0YXRpYyBjb25z
dCBTVkdQcm9wZXJ0eUluZm8qIExvd2VyUHJvcGVydHkjI1Byb3BlcnR5SW5mbygpOyBcCisgICAg
UHJvcGVydHlUeXBlJiBMb3dlclByb3BlcnR5KCkgY29uc3QgXAorICAgIHsgXAorICAgICAgICBy
ZXR1cm4gbV8jI0xvd2VyUHJvcGVydHkudmFsdWU7IFwKKyAgICB9IFwKKyAgICBcCisgICAgUHJv
cGVydHlUeXBlJiBMb3dlclByb3BlcnR5IyNCYXNlVmFsdWUoKSBjb25zdCBcCisgICAgeyBcCisg
ICAgICAgIHJldHVybiBtXyMjTG93ZXJQcm9wZXJ0eS52YWx1ZTsgXAorICAgIH0gXAorICAgIFwK
KyAgICB2b2lkIHNldCMjVXBwZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKGNvbnN0IFByb3BlcnR5VHlw
ZSYgdHlwZSkgXAorICAgIHsgXAorICAgICAgICBtXyMjTG93ZXJQcm9wZXJ0eS52YWx1ZSA9IHR5
cGU7IFwKKyAgICB9IFwKKyAgICBcCisgICAgUGFzc1JlZlB0cjxUZWFyT2ZmVHlwZT4gTG93ZXJQ
cm9wZXJ0eSMjQW5pbWF0ZWQoKSBcCisgICAgeyBcCisgICAgICAgIG1fIyNMb3dlclByb3BlcnR5
LnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsgXAorICAgICAgICByZXR1cm4gc3RhdGljX3BvaW50
ZXJfY2FzdDxUZWFyT2ZmVHlwZT4obG9va3VwT3JDcmVhdGUjI1VwcGVyUHJvcGVydHkjI1dyYXBw
ZXIodGhpcykpOyBcCisgICAgfSBcCisgICAgXAogcHJpdmF0ZTogXAotICAgIHZvaWQgc3luY2hy
b25pemUjI1VwcGVyUHJvcGVydHkoKTsgXAotXAorICAgIHZvaWQgc3luY2hyb25pemUjI1VwcGVy
UHJvcGVydHkoKSBcCisgICAgeyBcCisgICAgICAgIGlmICghbV8jI0xvd2VyUHJvcGVydHkuc2hv
dWxkU3luY2hyb25pemUpIFwKKyAgICAgICAgICAgIHJldHVybjsgXAorICAgICAgICBBdG9taWNT
dHJpbmcgdmFsdWUoU1ZHUHJvcGVydHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6dG9TdHJpbmcobV8j
I0xvd2VyUHJvcGVydHkudmFsdWUpKTsgXAorICAgICAgICBTVkdFbGVtZW50KiBjb250ZXh0RWxl
bWVudCA9IEdldE93bmVyRWxlbWVudEZvclR5cGU8VXNlT3duZXJUeXBlLCBJc0Rlcml2ZWRGcm9t
U1ZHRWxlbWVudDxVc2VPd25lclR5cGU+Ojp2YWx1ZT46Om93bmVyRWxlbWVudCh0aGlzKTsgXAor
ICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPElzRGVyaXZlZEZyb21TVkdF
bGVtZW50PFVzZU93bmVyVHlwZT46OnZhbHVlPjo6c3luY2hyb25pemUoY29udGV4dEVsZW1lbnQs
IExvd2VyUHJvcGVydHkjI1Byb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lLCB2YWx1ZSk7IFwK
KyAgICB9IFwKKyAgICBcCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0
eT4gbG9va3VwT3JDcmVhdGUjI1VwcGVyUHJvcGVydHkjI1dyYXBwZXIodm9pZCogbWFza2VkT3du
ZXJUeXBlKSBcCisgICAgeyBcCisgICAgICAgIEFTU0VSVChtYXNrZWRPd25lclR5cGUpOyBcCisg
ICAgICAgIFVzZU93bmVyVHlwZSogb3duZXJUeXBlID0gc3RhdGljX2Nhc3Q8VXNlT3duZXJUeXBl
Kj4obWFza2VkT3duZXJUeXBlKTsgXAorICAgICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0
eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFVzZU93bmVyVHlwZSwgVGVhck9mZlR5cGUsIFByb3Bl
cnR5VHlwZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8VXNlT3duZXJUeXBlPjo6dmFsdWU+KG93
bmVyVHlwZSwgTG93ZXJQcm9wZXJ0eSMjUHJvcGVydHlJbmZvKCksIG93bmVyVHlwZS0+bV8jI0xv
d2VyUHJvcGVydHkudmFsdWUpOyBcCisgICAgfSBcCisgICAgXAorICAgIHN0YXRpYyB2b2lkIHN5
bmNocm9uaXplIyNVcHBlclByb3BlcnR5KHZvaWQqIG1hc2tlZE93bmVyVHlwZSkgXAorICAgIHsg
XAorICAgICAgICBBU1NFUlQobWFza2VkT3duZXJUeXBlKTsgXAorICAgICAgICBVc2VPd25lclR5
cGUqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFVzZU93bmVyVHlwZSo+KG1hc2tlZE93bmVyVHlw
ZSk7IFwKKyAgICAgICAgb3duZXJUeXBlLT5zeW5jaHJvbml6ZSMjVXBwZXJQcm9wZXJ0eSgpOyBc
CisgICAgfSBcCisgICAgXAogICAgIG11dGFibGUgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFBy
b3BlcnR5PFByb3BlcnR5VHlwZT4gbV8jI0xvd2VyUHJvcGVydHk7CiAKKyNkZWZpbmUgRU5EX0RF
Q0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyAKKworLy8gTGlzdCBzcGVjaWZpYyBkZWZpbml0aW9u
L2RlY2xhcmF0aW9uIGhlbHBlcnMKICNkZWZpbmUgREVDTEFSRV9BTklNQVRFRF9MSVNUX1BST1BF
UlRZKFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVy
dHkpIFwKIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoVGVhck9mZlR5cGUsIFByb3BlcnR5VHlw
ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotdm9pZCBkZXRhY2hBbmltYXRlZCMj
VXBwZXJQcm9wZXJ0eSMjTGlzdFdyYXBwZXJzKHVuc2lnbmVkIG5ld0xpc3RTaXplKTsKLQotI2Rl
ZmluZSBERUZJTkVfQU5JTUFURURfTElTVF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0
ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgVGVhck9mZlR5cGUsIFByb3BlcnR5VHlwZSwg
VXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZ
KE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBUZWFy
T2ZmVHlwZSwgUHJvcGVydHlUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCi12
b2lkIE93bmVyVHlwZTo6ZGV0YWNoQW5pbWF0ZWQjI1VwcGVyUHJvcGVydHkjI0xpc3RXcmFwcGVy
cyh1bnNpZ25lZCBuZXdMaXN0U2l6ZSkgXAordm9pZCBkZXRhY2hBbmltYXRlZCMjVXBwZXJQcm9w
ZXJ0eSMjTGlzdFdyYXBwZXJzKHVuc2lnbmVkIG5ld0xpc3RTaXplKSBcCiB7IFwKLSAgICBTVkdF
bGVtZW50KiBjb250ZXh0RWxlbWVudCA9IEdldE93bmVyRWxlbWVudEZvclR5cGU8T3duZXJUeXBl
LCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5cGU+Ojp2YWx1ZT46Om93bmVyRWxlbWVu
dCh0aGlzKTsgXAotICAgIFNWR0FuaW1hdGVkUHJvcGVydHkqIHdyYXBwZXIgPSBTVkdBbmltYXRl
ZFByb3BlcnR5Ojpsb29rdXBXcmFwcGVyPFRlYXJPZmZUeXBlPihjb250ZXh0RWxlbWVudCwgRE9N
QXR0cmlidXRlLmxvY2FsTmFtZSgpKTsgXAotICAgIGlmICghd3JhcHBlcikgXAotICAgICAgICBy
ZXR1cm47IFwKLSAgICBzdGF0aWNfY2FzdDxUZWFyT2ZmVHlwZSo+KHdyYXBwZXIpLT5kZXRhY2hM
aXN0V3JhcHBlcnMobmV3TGlzdFNpemUpOyBcCisgICAgaWYgKFNWR0FuaW1hdGVkUHJvcGVydHkq
IHdyYXBwZXIgPSBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBXcmFwcGVyPFRlYXJPZmZUeXBl
Pih0aGlzLCBMb3dlclByb3BlcnR5IyNQcm9wZXJ0eUluZm8oKSkpIFwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8VGVhck9mZlR5cGUqPih3cmFwcGVyKS0+ZGV0YWNoTGlzdFdyYXBwZXJzKG5ld0xpc3RT
aXplKTsgXAogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
dHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlN
YXAuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR0F0dHJp
YnV0ZVRvUHJvcGVydHlNYXAuaCIKKworI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHkuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA6
OmFuaW1hdGVkUHJvcGVydGllc0ZvckF0dHJpYnV0ZShTVkdFbGVtZW50KiBvd25lclR5cGUsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFZlY3RvcjxSZWZQdHI8U1ZHQW5pbWF0
ZWRQcm9wZXJ0eT4gPiYgcHJvcGVydGllcykKK3sKKyAgICBBU1NFUlQob3duZXJUeXBlKTsKKyAg
ICBQcm9wZXJ0aWVzVmVjdG9yKiB2ZWN0b3IgPSBtX21hcC5nZXQoYXR0cmlidXRlTmFtZSk7Cisg
ICAgaWYgKCF2ZWN0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIFByb3BlcnRpZXNWZWN0b3I6
Oml0ZXJhdG9yIHZlY3RvckVuZCA9IHZlY3Rvci0+ZW5kKCk7CisgICAgZm9yIChQcm9wZXJ0aWVz
VmVjdG9yOjppdGVyYXRvciB2ZWN0b3JJdCA9IHZlY3Rvci0+YmVnaW4oKTsgdmVjdG9ySXQgIT0g
dmVjdG9yRW5kOyArK3ZlY3Rvckl0KQorICAgICAgICBwcm9wZXJ0aWVzLmFwcGVuZChhbmltYXRl
ZFByb3BlcnR5KG93bmVyVHlwZSwgYXR0cmlidXRlTmFtZSwgKnZlY3Rvckl0KSk7Cit9CisKK30K
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1
dGVUb1Byb3BlcnR5TWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2gg
SW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBTVkdB
dHRyaWJ1dGVUb1Byb3BlcnR5TWFwX2gKKyNkZWZpbmUgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1h
cF9oCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKKyNpbmNs
dWRlICJTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmgiCisjaW5jbHVkZSAiU1ZHUHJv
cGVydHlJbmZvLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5OworY2xhc3MgU1ZHRWxlbWVudDsKKwor
Y2xhc3MgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCB7CitwdWJsaWM6CisgICAgU1ZHQXR0cmli
dXRlVG9Qcm9wZXJ0eU1hcCgpIHsgfQorICAgIH5TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCkg
eyBkZWxldGVBbGxWYWx1ZXMobV9tYXApOyB9CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX21hcC5pc0VtcHR5KCk7IH0KKworICAgIHZvaWQgYWRkUHJvcGVydGllcyhTVkdB
dHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBtYXApCisgICAgeworICAgICAgICBBdHRyaWJ1dGVUb1By
b3BlcnRpZXNNYXA6Oml0ZXJhdG9yIGVuZCA9IG1hcC5tX21hcC5lbmQoKTsKKyAgICAgICAgZm9y
IChBdHRyaWJ1dGVUb1Byb3BlcnRpZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLm1fbWFwLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgUHJvcGVydGllc1ZlY3RvciogdmVj
dG9yID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIEFTU0VSVCh2ZWN0b3IpOworCisgICAgICAg
ICAgICBQcm9wZXJ0aWVzVmVjdG9yOjppdGVyYXRvciB2ZWN0b3JFbmQgPSB2ZWN0b3ItPmVuZCgp
OworICAgICAgICAgICAgZm9yIChQcm9wZXJ0aWVzVmVjdG9yOjppdGVyYXRvciB2ZWN0b3JJdCA9
IHZlY3Rvci0+YmVnaW4oKTsgdmVjdG9ySXQgIT0gdmVjdG9yRW5kOyArK3ZlY3Rvckl0KQorICAg
ICAgICAgICAgICAgIGFkZFByb3BlcnR5KCp2ZWN0b3JJdCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICB2b2lkIGFkZFByb3BlcnR5KGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogaW5mbykKKyAgICB7
CisgICAgICAgIEFTU0VSVChpbmZvKTsKKyAgICAgICAgQVNTRVJUKGluZm8tPmF0dHJpYnV0ZU5h
bWUgIT0gYW55UU5hbWUoKSk7CisgICAgICAgIGlmIChQcm9wZXJ0aWVzVmVjdG9yKiB2ZWN0b3Ig
PSBtX21hcC5nZXQoaW5mby0+YXR0cmlidXRlTmFtZSkpIHsKKyAgICAgICAgICAgIHZlY3Rvci0+
YXBwZW5kKGluZm8pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFBy
b3BlcnRpZXNWZWN0b3IqIHZlY3RvciA9IG5ldyBQcm9wZXJ0aWVzVmVjdG9yOworICAgICAgICB2
ZWN0b3ItPmFwcGVuZChpbmZvKTsKKyAgICAgICAgbV9tYXAuc2V0KGluZm8tPmF0dHJpYnV0ZU5h
bWUsIHZlY3Rvcik7CisgICAgfQorCisgICAgdm9pZCBhbmltYXRlZFByb3BlcnRpZXNGb3JBdHRy
aWJ1dGUoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUsIFZlY3RvcjxSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gPiYgcHJvcGVy
dGllcyk7CisKKyAgICB2b2lkIGFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFZlY3RvcjxBbmltYXRlZFByb3BlcnR5VHlw
ZT4mIHByb3BlcnR5VHlwZXMpCisgICAgeworICAgICAgICBQcm9wZXJ0aWVzVmVjdG9yKiB2ZWN0
b3IgPSBtX21hcC5nZXQoYXR0cmlidXRlTmFtZSk7CisgICAgICAgIGlmICghdmVjdG9yKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFByb3BlcnRpZXNWZWN0b3I6Oml0ZXJhdG9yIHZl
Y3RvckVuZCA9IHZlY3Rvci0+ZW5kKCk7CisgICAgICAgIGZvciAoUHJvcGVydGllc1ZlY3Rvcjo6
aXRlcmF0b3IgdmVjdG9ySXQgPSB2ZWN0b3ItPmJlZ2luKCk7IHZlY3Rvckl0ICE9IHZlY3RvckVu
ZDsgKyt2ZWN0b3JJdCkKKyAgICAgICAgICAgIHByb3BlcnR5VHlwZXMuYXBwZW5kKCgqdmVjdG9y
SXQpLT5hbmltYXRlZFByb3BlcnR5VHlwZSk7CisgICAgfQorCisgICAgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnRpZXMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCisgICAgeworICAgICAgICBB
U1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgICAgICBBdHRyaWJ1dGVUb1Byb3BlcnRpZXNNYXA6
Oml0ZXJhdG9yIGVuZCA9IG1fbWFwLmVuZCgpOworICAgICAgICBmb3IgKEF0dHJpYnV0ZVRvUHJv
cGVydGllc01hcDo6aXRlcmF0b3IgaXQgPSBtX21hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKKyAgICAgICAgICAgIFByb3BlcnRpZXNWZWN0b3IqIHZlY3RvciA9IGl0LT5zZWNvbmQ7Cisg
ICAgICAgICAgICBBU1NFUlQodmVjdG9yKTsKKworICAgICAgICAgICAgUHJvcGVydGllc1ZlY3Rv
cjo6aXRlcmF0b3IgdmVjdG9yRW5kID0gdmVjdG9yLT5lbmQoKTsKKyAgICAgICAgICAgIGZvciAo
UHJvcGVydGllc1ZlY3Rvcjo6aXRlcmF0b3IgdmVjdG9ySXQgPSB2ZWN0b3ItPmJlZ2luKCk7IHZl
Y3Rvckl0ICE9IHZlY3RvckVuZDsgKyt2ZWN0b3JJdCkKKyAgICAgICAgICAgICAgICBzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnRleHRFbGVtZW50LCBpdC0+Zmlyc3QsICp2ZWN0b3JJdCk7CisgICAg
ICAgIH0gCisgICAgfQorCisgICAgYm9vbCBzeW5jaHJvbml6ZVByb3BlcnR5KFNWR0VsZW1lbnQq
IGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICAgICAgUHJvcGVydGllc1Zl
Y3RvciogdmVjdG9yID0gbV9tYXAuZ2V0KGF0dHJpYnV0ZU5hbWUpOworICAgICAgICBpZiAoIXZl
Y3RvcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBQcm9wZXJ0aWVzVmVj
dG9yOjppdGVyYXRvciB2ZWN0b3JFbmQgPSB2ZWN0b3ItPmVuZCgpOworICAgICAgICBmb3IgKFBy
b3BlcnRpZXNWZWN0b3I6Oml0ZXJhdG9yIHZlY3Rvckl0ID0gdmVjdG9yLT5iZWdpbigpOyB2ZWN0
b3JJdCAhPSB2ZWN0b3JFbmQ7ICsrdmVjdG9ySXQpCisgICAgICAgICAgICBzeW5jaHJvbml6ZVBy
b3BlcnR5KGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCAqdmVjdG9ySXQpOworCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHN5bmNocm9uaXpl
UHJvcGVydHkoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogaW5mbykKKyAgICB7CisgICAg
ICAgIEFTU0VSVChpbmZvKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhdHRyaWJ1dGVOYW1lLCBh
dHRyaWJ1dGVOYW1lID09IGluZm8tPmF0dHJpYnV0ZU5hbWUpOworICAgICAgICBBU1NFUlQoaW5m
by0+c3luY2hyb25pemVQcm9wZXJ0eSk7CisgICAgICAgICgqaW5mby0+c3luY2hyb25pemVQcm9w
ZXJ0eSkoY29udGV4dEVsZW1lbnQpOworICAgIH0KKworICAgIFBhc3NSZWZQdHI8U1ZHQW5pbWF0
ZWRQcm9wZXJ0eT4gYW5pbWF0ZWRQcm9wZXJ0eShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgU1ZHUHJvcGVydHlJbmZv
KiBpbmZvKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZm8pOworICAgICAgICBBU1NFUlRfVU5V
U0VEKGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZU5hbWUgPT0gaW5mby0+YXR0cmlidXRlTmFtZSk7
CisgICAgICAgIEFTU0VSVChpbmZvLT5sb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JBbmltYXRlZFBy
b3BlcnR5KTsKKyAgICAgICAgcmV0dXJuICgqaW5mby0+bG9va3VwT3JDcmVhdGVXcmFwcGVyRm9y
QW5pbWF0ZWRQcm9wZXJ0eSkoY29udGV4dEVsZW1lbnQpOworICAgIH0KKworICAgIHR5cGVkZWYg
VmVjdG9yPGNvbnN0IFNWR1Byb3BlcnR5SW5mbyo+IFByb3BlcnRpZXNWZWN0b3I7CisgICAgdHlw
ZWRlZiBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIFByb3BlcnRpZXNWZWN0b3IqPiBBdHRyaWJ1dGVU
b1Byb3BlcnRpZXNNYXA7CisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0aWVzTWFwIG1fbWFwOworfTsK
KworfQorCisjZW5kaWYKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHUHJvcGVydHlJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUluZm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQg
MjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBTVkdQcm9wZXJ0eUluZm9faAorI2Rl
ZmluZSBTVkdQcm9wZXJ0eUluZm9faAorCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJRdWFs
aWZpZWROYW1lLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5OworCitlbnVtIEFuaW1hdGVkUHJv
cGVydHlUeXBlIHsKKyAgICBBbmltYXRlZEFuZ2xlLAorICAgIEFuaW1hdGVkQm9vbGVhbiwKKyAg
ICBBbmltYXRlZENvbG9yLAorICAgIEFuaW1hdGVkRW51bWVyYXRpb24sCisgICAgQW5pbWF0ZWRJ
bnRlZ2VyLAorICAgIEFuaW1hdGVkTGVuZ3RoLAorICAgIEFuaW1hdGVkTGVuZ3RoTGlzdCwKKyAg
ICBBbmltYXRlZE51bWJlciwKKyAgICBBbmltYXRlZE51bWJlckxpc3QsCisgICAgQW5pbWF0ZWRO
dW1iZXJPcHRpb25hbE51bWJlciwKKyAgICBBbmltYXRlZFBhdGgsCisgICAgQW5pbWF0ZWRQb2lu
dHMsCisgICAgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLAorICAgIEFuaW1hdGVkUmVjdCwK
KyAgICBBbmltYXRlZFN0cmluZywKKyAgICBBbmltYXRlZFRyYW5zZm9ybUxpc3QsCisgICAgQW5p
bWF0ZWRVbmtub3duCit9OworCitzdHJ1Y3QgU1ZHUHJvcGVydHlJbmZvIHsKKyAgICB0eXBlZGVm
IHZvaWQgKCpTeW5jaHJvbml6ZVByb3BlcnR5KSh2b2lkKik7CisgICAgdHlwZWRlZiBQYXNzUmVm
UHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+ICgqTG9va3VwT3JDcmVhdGVXcmFwcGVyRm9yQW5pbWF0
ZWRQcm9wZXJ0eSkodm9pZCopOworCisgICAgU1ZHUHJvcGVydHlJbmZvKEFuaW1hdGVkUHJvcGVy
dHlUeXBlIG5ld1R5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5ld0F0dHJpYnV0ZU5hbWUsCisg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3UHJvcGVydHlJZGVudGlm
aWVyLCBTeW5jaHJvbml6ZVByb3BlcnR5IG5ld1N5bmNocm9uaXplUHJvcGVydHksCisgICAgICAg
ICAgICAgICAgICAgIExvb2t1cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVydHkgbmV3
TG9va3VwT3JDcmVhdGVXcmFwcGVyRm9yQW5pbWF0ZWRQcm9wZXJ0eSkKKyAgICAgICAgOiBhbmlt
YXRlZFByb3BlcnR5VHlwZShuZXdUeXBlKQorICAgICAgICAsIGF0dHJpYnV0ZU5hbWUobmV3QXR0
cmlidXRlTmFtZSkKKyAgICAgICAgLCBwcm9wZXJ0eUlkZW50aWZpZXIobmV3UHJvcGVydHlJZGVu
dGlmaWVyKQorICAgICAgICAsIHN5bmNocm9uaXplUHJvcGVydHkobmV3U3luY2hyb25pemVQcm9w
ZXJ0eSkKKyAgICAgICAgLCBsb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JBbmltYXRlZFByb3BlcnR5
KG5ld0xvb2t1cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVydHkpCisgICAgeworICAg
IH0KKworICAgIEFuaW1hdGVkUHJvcGVydHlUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlOworICAg
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWU7CisgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBwcm9wZXJ0eUlkZW50aWZpZXI7CisgICAgU3luY2hyb25pemVQcm9wZXJ0eSBzeW5jaHJv
bml6ZVByb3BlcnR5OworICAgIExvb2t1cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVy
dHkgbG9va3VwT3JDcmVhdGVXcmFwcGVyRm9yQW5pbWF0ZWRQcm9wZXJ0eTsKK307CisKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShTVkcpCisjZW5kaWYgLy8gU1ZHUHJvcGVydHlJbmZvX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100111</attachid>
            <date>2011-07-08 05:59:46 -0700</date>
            <delta_ts>2011-07-08 16:11:40 -0700</delta_ts>
            <desc>Patch v6</desc>
            <filename>AnimValPrep-v6.diff</filename>
            <type>text/plain</type>
            <size>474190</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwNjIzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTE3IEBACisyMDExLTA3LTA4ICBOaWtvbGFz
IFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIEFkZCBhIHBvc3Np
YmlsaXR5IHRvIHJldHJpZXZlIHRoZSBhc3NvY2lhdGVkIFNWR0FuaW1hdGVkUHJvcGVydHkgb2Jq
ZWN0IGZvciBhIGNlcnRhaW4gWE1MIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM3OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbiBvcmRlciB0byBwcmVwYXJlIGFuaW1WYWwgc3VwcG9y
dCB3ZSBuZWVkIGEgd2F5IHRvIG1hcCBhIGdpdmVuIFNWRyBET00gYXR0cmlidXRlIHRvIGEgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eS4KKyAgICAgICAgZWcuIFNWR05hbWVzOjp4QXR0ciAtPiBTVkdSZWN0
RWxlbWVudDo6eEFuaW1hdGVkKCksIGV0Yy4gVGhpcyB3aWxsIGJlIG5lZWRlZCB0byB1cGRhdGUg
dGhlIGFuaW1WYWwgb2YgdGhlCisgICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHksIGlmIGFuIGFu
aW1hdGlvbiBpcyBydW5uaW5nLiBJdCB3b3VsZCByZXF1aXJlZCBhZGRpbmcgYSBuZXcgbWV0aG9k
IHRvIGFsbCBTVkcqIGNsYXNzZXMKKyAgICAgICAgdGhhdCBkZWZpbmUgYW5pbWF0ZWQgcHJvcGVy
dGllcy4gVW5mb3J0dW5hdGVseSB3ZSBhbHJlYWR5IGhhdmUgbG90cyBvZiByZXBlYXRlZCBjb2Rl
IGluIG1ldGhvZHMgbGlrZQorICAgICAgICBzeW5jaHJvbml6ZVByb3BlcnR5IC8gZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLiBMb29rIGF0IFNWR1JlY3RFbGVtZW50IGZvciBleGFtcGxl
OgorCisgICAgICAgIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChh
dHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7CisgICAgICAgICAgICAgICAgc3luY2hyb25pemVYKCk7
CisgICAgICAgICAgICAgICAgc3luY2hyb25pemVZKCk7CisgICAgICAgICAgICAgICAgIC4uLgor
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
eEF0dHIpIHsKKyAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZVgoKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6eUF0dHIpIHsKKyAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZVkoKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAuLi4KKyAgICAg
ICAgfQorCisgICAgICAgIG9yCisKKyAgICAgICAgdm9pZCBTVkdSZWN0RWxlbWVudDo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKKyAgICAgICAgeworICAgICAgICAgICAgQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAgICAgCisgICAgICAgICAgICBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKKyAgICAgICAgICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
KyAgICAgICAgICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICAgICAgICAgIC4uLgorICAgICAgICB9CisKKyAgICAg
ICAgVGhlc2UgbG9va3VwcyBhcmUgYWxsIHBlcmZvcm1lZCBkeW5hbWljYWxseS4gRWFjaCBzeW5j
aHJvbml6ZVByb3BlcnR5KCkgY2FsbCBkb2VzIGEgbG90IG9mIGNvbXBhcmlzb25zLgorICAgICAg
ICBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKSBpc24ndCB0aGF0IGJhZCBhcyB0aGUg
cmVzdWx0IGlzIGNhY2hlZCBpbiBhIHN0YXRpYyBIYXNoTWFwIHBlci1TVkdSZWN0RWxlbWVudC4K
KyAgICAgICAgVGhlcmUncyBubyByZWFzb24gdG8gZG8gdGhlc2UgdGhpbmdzIGR5bmFtaWNhbGx5
IQorCisgICAgICAgIEluc3BpcmVkIGJ5IEpTQywgSSdtIGFkZGluZyBhICJzdGF0aWMgY29uc3Qg
U1ZHUHJvcGVydHlJbmZvIHNfZm9vUHJvcGVydHlJbmZvIiBvYmplY3QgZm9yIGVhY2ggYW5pbWF0
ZWQgU1ZHIHByb3BlcnR5LgorICAgICAgICBGb3IgZXhhbXBsZSwgZm9yIFNWR1JlY3RFbGVtZW50
cyBTVkdBbmltYXRlZExlbmd0aCB4IHByb3BlcnR5IHdlJ3JlIHN0b3Jpbmc6CisgICAgICAgIC0g
IkFuaW1hdGVkUHJvcGVydHlUeXBlIHR5cGUiIChBbmltYXRlZExlbmd0aCAtLSBub3RlIHRoZSBl
bnVtIHdhcyBuYW1lZCBBbmltYXRlZEF0dHJpYnV0ZVR5cGUsIEkgcmVuYW1lZCBpdCB0byBBbmlt
YXRlZFByb3BlcnR5VHlwZSBmb3IgY2xhcml0eSkKKyAgICAgICAgLSAiY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSIgKFNWR05hbWVzOjp4QXR0cikKKyAgICAgICAgLSAiY29uc3Qg
QXRvbWljU3RyaW5nJiBwcm9wZXJ0eUlkZW50aWZpZXIiIChTVkdOYW1lczo6eEF0dHIubG9jYWxO
YW1lKCkgLS0gb25seSBkaWZmZXJlbnQgaWYgTi13cmFwcGVycyBtYXAgdG8gYSBzaW5nbGUgWE1M
IERPTSBhdHRyaWJ1dGUsIGVnLiBvcmllbnRBdHRyKQorICAgICAgICAtICJTeW5jaHJvbml6ZVBy
b3BlcnR5IHN5bmNocm9uaXplUHJvcGVydHkiIChjYWxsYmFjayB0byBTVkdSZWN0RWxlbWVudDo6
c3luY2hyb25pemVYKQorICAgICAgICAtICJMb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JBbmltYXRl
ZFByb3BlcnR5IGxvb2t1cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVydHkiIChjYWxs
YmFjayB0byBTVkdSZWN0RWxlbWVudDo6eEFuaW1hdGVkKQorCisgICAgICAgIFVzaW5nIHRoaXMg
aW5mb3JtYXRpb24sIHdlIGNhbiByZXBsYWNlIGFsbCB0aGUgdmFyaW91cyBzeW5jaHJvbml6ZVBy
b3BlcnR5L2ZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwIGltcGxlbWVudGF0aW9ucywgd2l0aCBh
IHNpbmdsZSBvbmUgaW4gU1ZHRWxlbWVudC4KKyAgICAgICAgQWxsIHRoZXNlIGFyZSBhdXRvLWdl
bmVyYXRlZCwgdXNpbmcgdGhlIHN0YW5kYXJkIG1hY3JvcyB1c2VkIHRvIGRlZmluZS9kZWNsYXJl
IFNWRyBhbmltYXRlZCBwcm9wZXJ0aWVzLiBUaGlzIHJlcXVpcmVkIHNldmVyYWwgY2hhbmdlcyB0
byB0aGUgbWFjcm9zLgorICAgICAgICBIZXJlJ3MgYSBzdW1tYXJ5OgorICAgIAorICAgICAgICAj
MSkgSW4gYWxsIGhlYWRlcnMsIHdyYXAgREVDTEFSRV9BTklNQVRFRF8qIGNhbGxzLCBpbiBCRUdJ
Tl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoQ2xhc3NOYW1lKSAvIEVORF9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMgYmxvY2tzLgorICAgICAgICAKKyAgICAgICAgICAgIFNhbXBsZSBj
aGFuZ2UgZm9yIFNWR1JlY3RFbGVtZW50OgorICAgICAgICAgICAgLSAgICBERUNMQVJFX0FOSU1B
VEVEX0xFTkdUSChYLCB4KQorICAgICAgICAgICAgLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdU
SChZLCB5KQorICAgICAgICAgICAgLSAgICAuLi4KKworICAgICAgICAgICAgKyAgICBCRUdJTl9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUmVjdEVsZW1lbnQpCisgICAgICAgICAgICAr
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQorICAgICAgICAgICAgKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKKyAgICAgICAgICAgICsgICAgICAgICAu
Li4KKyAgICAgICAgICAgICsgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisg
ICAgICAgICMyKSBJbiBhbGwgY3BwIGZpbGVzLCB3cmFwIERFRklORV9BTklNQVRFRF8qIGNhbGxz
LCBpbiBCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUyAvIEVORF9ERUZJTkVfQU5JTUFU
RURfUFJPUEVSVElFUyBibG9ja3MuCisgICAgCisgICAgICAgICAgICBTYW1wbGUgY2hhbmdlIGZv
ciBTVkdSZWN0RWxlbWVudDoKKyAgICAgICAgICAgIC1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNW
R1JlY3RFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCisgICAgICAgICAgICAtREVGSU5F
X0FOSU1BVEVEX0xFTkdUSChTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQor
ICAgICAgICAgICAgLS4uLgorCisgICAgICAgICAgICArQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BS
T1BFUlRJRVMKKyAgICAgICAgICAgICsgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdSZWN0
RWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQorICAgICAgICAgICAgKyAgICBERUZJTkVf
QU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCisg
ICAgICAgICAgICArICAgIC4uLgorICAgICAgICAgICAgK0VORF9ERUZJTkVfQU5JTUFURURfUFJP
UEVSVElFUworCisgICAgICAgIAorICAgICAgICAgICAgVGhpcyBub3cgZ2VuZXJhdGVzIHRoZSAi
c3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyIgb2JqZWN0cyBmb3IgZWFjaCBhbmltYXRlZCBT
VkcgcHJvcGVydHkuCisKKyAgICAgICAgIzMpIEluIGFsbCBjcHAgZmlsZXMsIGFkZCBhIG5ldyBz
ZWN0aW9uIHdyYXBwZWQgaW4gQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhDbGFz
c05hbWUgLyBFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyBibG9ja3M6CisgICAgICAg
IAorICAgICAgICAgICAgU2FtcGxlIGNoYW5nZSBmb3IgU1ZHUmVjdEVsZW1lbnQ6CisgICAgICAg
ICAgICArQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdSZWN0RWxlbWVudCkK
KyAgICAgICAgICAgICsgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeCkKKyAg
ICAgICAgICAgICsgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeSkKKyAgICAg
ICAgICAgICsgICAgLi4uCisgICAgICAgICAgICArICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KQorICAgICAgICAgICAg
KyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKKyAgICAg
ICAgICAgICtFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUworCisgICAgICAgICAgICBU
aGlzIGlzIHRoZSBtYWluIHBpZWNlIG9mIHRoZSBsb2dpYyB0aGF0IHJlcGxhY2VzIHRoZSBtYW51
YWwgc3luY2hyb25pemVQcm9wZXJ0eS9maWxsQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCBpbXBsZW1l
bnRhdGlvbi4gSXQgZXhwYW5kcyB0byBmb2xsb3dpbmc6CisKKyAgICAgICAgICAgIFNWR0F0dHJp
YnV0ZVRvUHJvcGVydHlNYXAmIFNWR1JlY3RFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5TWFw
KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNW
R0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCwgKCkpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckFuaW1hdGVk
UHJvcGVydGllc0ZvclNWR1JlY3RFbGVtZW50KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBtYXAgPSBTVkdSZWN0RWxlbWVudDo6YXR0
cmlidXRlVG9Qcm9wZXJ0eU1hcCgpOworICAgICAgICAgICAgICAgIGlmICghbWFwLmlzRW1wdHko
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIG1hcC5hZGRQ
cm9wZXJ0eShTVkdSZWN0RWxlbWVudDo6eFByb3BlcnR5SW5mbygpKTsKKyAgICAgICAgICAgICAg
ICBtYXAuYWRkUHJvcGVydHkoU1ZHUmVjdEVsZW1lbnQ6OnlQcm9wZXJ0eUluZm8oKSk7CisgICAg
ICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgbWFwLmFkZFByb3BlcnRpZXMoU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKSk7CisgICAg
ICAgICAgICAgICAgbWFwLmFkZFByb3BlcnRpZXMoU1ZHVGVzdHM6OmF0dHJpYnV0ZVRvUHJvcGVy
dHlNYXAoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEEgc2luZ2xlLWluc3RhbmNl
IG9mIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAgaXMgY3JlYXRlZCBmb3IgZWFjaCBTVkcqRWxl
bWVudC4gVGhlIGNvbnN0cnVjdG9yIG9mIFNWR1JlY3RFbGVtZW50IGlzIHN1cHBvc2VkIHRvIGNh
bGwKKyAgICAgICAgICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHUmVjdEVsZW1l
bnQoKSwgd2hpY2ggY29sbGVjdHMgYWxsIHByb3BlcnRpZXMgb2YgU1ZHUmVjdEVsZW1lbnQgYW5k
IGFsbCBpdHMgcGFyZW50IGNsYXNzZXMgYW5kIHN0b3JlcyB0aGVtCisgICAgICAgICAgICBpbiBh
IFZlY3Rvcjxjb25zdCBTVkdQcm9wZXJ0eUluZm8qPi4gVGhpcyBWZWN0b3IgaXMgc3RvcmVkIGlu
IGEgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBWZWN0b3I8Y29uc3QgU1ZHUHJvcGVydHlJbmZvKj4g
PiB3aGVyZSB0aGUga2V5CisgICAgICAgICAgICBpcyB0aGUgYXR0cmlidXRlIG5hbWUgKGVnLiBT
VkdOYW1lczo6eEF0dHIgLT4gU1ZHUmVjdEVsZW1lbnQ6OnhQcm9wZXJ0eUluZm8pLiBUaGlzIGlz
IG9ubHkgZG9uZSBfb25jZV8gcGVyIFNWR1JlY3RFbGVtZW50LgorCisgICAgICAgICAgICBTVkdF
bGVtZW50IGNvbnRhaW5zIGEgInZpcnR1YWwgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgbG9j
YWxBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCkiIG1ldGhvZCwgYW5kIFNWR1JlY3RFbGVtZW50IG92
ZXJyaWRlcyBpdAorICAgICAgICAgICAgYW5kIHJldHVybnMgU1ZHUmVjdEVsZW1lbnQ6OmF0dHJp
YnV0ZVRvUHJvcGVydHlNYXAoKSAod2hpY2ggaXMgc3RhdGljISkgLS0gdGhpcyBpcyBoaWRkZW4g
YWdhaW4gaW4gdGhlIG1hY3Jvcywgbm8gbmVlZCB0byB3cml0ZSBhbnkgY29kZS4KKworICAgICAg
ICAgICAgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCBwcm92aWRlcyBmb2xsb3dpbmcgQVBJOgor
ICAgICAgICAgICAgLSBib29sIHN5bmNocm9uaXplUHJvcGVydHkoU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgICAgICAg
ICAtIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0aWVzKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50
KQorICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQSBnZW5lcmljIHdheSB0byBzeW5jaHJv
bml6ZSBhIFNWR0FuaW1hdGVkUHJvcGVydHkgd2l0aCBpdHMgWE1MIERPTSBhdHRyaWJ1dGUuIEFu
eSBTVkcgRE9NIGNoYW5nZSB0byBlZy4gPHJlY3Q+cyB4IHByb3BlcnR5IHdpbGwgbm93IHRyaWdn
ZXIKKyAgICAgICAgICAgICAgICBjb250ZXh0RWxlbWVudC0+bG9jYWxBdHRyaWJ1dGVUb1Byb3Bl
cnR5TWFwKCkuc3luY2hyb25pemVQcm9wZXJ0eSh0aGlzLCBTVkdOYW1lczo6eEF0dHIpCisgICAg
ICAgICAgICAgICAgVGhlIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAgd2lsbCBhc2sgaXRzIEhh
c2hNYXAgZm9yIHRoZSBWZWN0b3IgY29udGFpbmluZyB0aGUgcHJvcGVydGllcyBmb3IgU1ZHTmFt
ZXM6OnhBdHRyIChpbiB0aGF0IGNhc2UsIGp1c3Qgb25lIHhBbmltYXRlZCgpKS4KKworICAgICAg
ICAgICAgLSB2b2lkIGFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFZlY3RvcjxBbmltYXRlZFByb3BlcnR5VHlwZT4mIHBy
b3BlcnR5VHlwZXMpCisKKyAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCByZXBsYWNlcyB0aGUg
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAgaW1wbGVtZW50YXRpb25zIGV2ZXJ5d2hlcmUuCisg
ICAgICAgIAorICAgICAgICAgICAgLSB2b2lkIGFuaW1hdGVkUHJvcGVydGllc0ZvckF0dHJpYnV0
ZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSwgVmVjdG9yPFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiA+JiBwcm9wZXJ0aWVz
KTsKKworICAgICAgICAgICAgICAgIFRoaXMgbWV0aG9kIGlzIG5vdCB1c2VkIHlldCwgYnV0IGFs
bG93cyB1cyB0byBjb2xsZWN0IGFsbCBTVkdBbmltYXRlZFByb3BlcnRpZXMgZm9yIGEgUXVhbGlm
aWVkTmFtZSAtLSB0aGUgaW5pdGlhbCBnb2FsIGZvciB0aGlzIHBhdGNoLgorCisgICAgICAgICM0
KSBJbiBhbGwgY3BwIGZpbGVzLCBhZGQgYSBjYWxsIHRvICJyZWdpc3RlckFuaW1hdGVkUHJvcGVy
dGllc0ZvckNsYXNzTmFtZSgpIiBpbiB0aGUgY29uc3RydWN0b3IuIEZvcmdldHRpbmcgdGhpcyB3
aWxsIHJlc3VsdCBpbiBhIGNvbXBpbGUgZXJyb3IuCisKKyAgICAgICAgRG9lc24ndCBhZmZlY3Qg
YW55IHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29y
ZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHN2Zy9TVkdB
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBRWxlbWVudDo6U1ZHQUVsZW1lbnQp
OgorICAgICAgICAqIHN2Zy9TVkdBRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVs
ZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQUVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAq
IHN2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQWx0R2x5
cGhFbGVtZW50OjpTVkdBbHRHbHlwaEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdBbHRHbHlw
aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OlNWR0FuaW1hdGVFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpoYXNWYWxpZEF0dHJpYnV0ZVR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmRldGVybWluZUFuaW1hdGVkUHJv
cGVydHlUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpkZXRlcm1p
bmVQcm9wZXJ0eVZhbHVlVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1l
bnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmVuc3VyZUFuaW1hdG9yKToKKyAgICAgICAg
KiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZVRyYW5z
Zm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVs
ZW1lbnQ6Omhhc1ZhbGlkQXR0cmlidXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlVHJhbnNmb3JtRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmNhbGN1
bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9y
bUVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0
ZVRyYW5zZm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRBbmdsZS5oOgor
ICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEJvb2xlYW4uaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvbi5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEludGVnZXIuaDoK
KyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5p
bWF0ZWRMZW5ndGhMaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmg6Cisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdB
bmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRS
ZWN0Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmg6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpTVkdBbmltYXRlZFR5
cGUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVkVHlwZTo6dHlwZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZUFu
aW1hdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGVBbmltYXRvcjo6U1ZH
QW5pbWF0ZWRUeXBlQW5pbWF0b3IpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OlNWR0FuaW1hdGlv
bkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6Y3VycmVu
dFZhbHVlc0ZvclZhbHVlc0FuaW1hdGlvbik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlvbkVs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OnN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVt
ZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRpb25FbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAg
KiBzdmcvU1ZHQW5pbWF0b3JGYWN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRv
ckZhY3Rvcnk6OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVudDo6U1ZHQ2lyY2xlRWxlbWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Np
cmNsZUVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdDaXJjbGVFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1
YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6U1ZHQ2xpcFBhdGhFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0
aEVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdDbGlwUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5n
dWFnZSk6CisgICAgICAgICogc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50OjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCk6CisgICAgICAgICogc3Zn
L1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R0N1cnNvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ3Vyc29yRWxlbWVudDo6
U1ZHQ3Vyc29yRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0N1cnNvckVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0
dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JFbGVtZW50OjpzeW5jaHJvbml6ZVJl
cXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JFbGVtZW50Ojpz
eW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHRGVmc0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRGVmc0VsZW1lbnQ6OlNWR0RlZnNFbGVtZW50KToK
KyAgICAgICAgKiBzdmcvU1ZHRGVmc0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Rl
ZnNFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRGVmc0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0RlZnNFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToK
KyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVt
ZW50OjphbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdFbGVtZW50Ojp1cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGVtZW50Ojpsb2NhbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXApOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2Up
OgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6
OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVt
ZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZH
RWxsaXBzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6
OlNWR0VsbGlwc2VFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVk
RmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnN5bmNocm9u
aXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVt
ZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVu
ZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OlNWR0ZF
QmxlbmRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQ6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29t
cG9zaXRlRWxlbWVudDo6U1ZHRkVDb21wb3NpdGVFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZH
RkVDb21wb3NpdGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
OjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6
OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVz
ZUxpZ2h0aW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
OjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpTVkdGRURy
b3BTaGFkb3dFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NW
R0ZFRmxvb2RFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OlNWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6U1ZHRkVJbWFnZUVsZW1lbnQpOgorICAgICAgICAq
IHN2Zy9TVkdGRUltYWdlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6U1ZHRkVMaWdodEVs
ZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdG
RU1vcnBob2xvZ3lFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQ6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRU1v
cnBob2xvZ3lFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU9mZnNldEVsZW1lbnQ6OlNWR0ZFT2Zmc2V0RWxlbWVu
dCk6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
U3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQpOgor
ICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxl
bWVudDo6U1ZHRkVUaWxlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50KToK
KyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdGaWx0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6
OlNWR0ZpbHRlckVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OlNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyk6CisgICAgICAgICogc3ZnL1NWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAgICAgICAqIHN2Zy9TVkdGaXRU
b1ZpZXdCb3guY3BwOgorICAgICAgICAqIHN2Zy9TVkdGaXRUb1ZpZXdCb3guaDoKKyAgICAgICAg
KiBzdmcvU1ZHRm9udEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEVsZW1l
bnQ6OlNWR0ZvbnRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEVsZW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAg
ICAgKiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZvcmVpZ25PYmplY3RFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWly
ZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50
OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHR0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1lbnQ6OlNWR0dFbGVtZW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHR0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dFbGVtZW50Ojpz
eW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1l
bnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0dFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZH
R2x5cGhFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHR2x5cGhFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdH
cmFkaWVudEVsZW1lbnQ6OlNWR0dyYWRpZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9T
VkdHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6U1ZHSW1hZ2VFbGVtZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZUVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdJbWFnZUVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6
CisgICAgICAgICogc3ZnL1NWR0xpbmVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0xpbmVFbGVtZW50OjpTVkdMaW5lRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0xpbmVFbGVt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6c3luY2hyb25pemVSZXF1
aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVFbGVtZW50OjpzeW5jaHJv
bml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lRWxlbWVu
dDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR0xpbmVhckdy
YWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQ6OlNWR0xpbmVhckdyYWRpZW50RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0xpbmVh
ckdyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHTVBhdGhFbGVtZW50OjpTVkdNUGF0aEVsZW1lbnQpOgorICAg
ICAgICAqIHN2Zy9TVkdNUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpvcmllbnRUeXBl
UHJvcGVydHlJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OlNWR01h
cmtlckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6c2V0T3Jp
ZW50VG9BdXRvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OnNldE9yaWVu
dFRvQW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6c3luY2hyb25p
emVPcmllbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6Omxvb2t1
cE9yQ3JlYXRlT3JpZW50VHlwZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2Vy
RWxlbWVudDo6b3JpZW50VHlwZUFuaW1hdGVkKToKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdNYXNrRWxlbWVudDo6U1ZHTWFza0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdN
YXNrRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6OnN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6
c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFz
a0VsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdN
aXNzaW5nR2x5cGhFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHTWlzc2luZ0dseXBoRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXRoRWxlbWVudDo6ZFByb3BlcnR5SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXRoRWxlbWVudDo6U1ZHUGF0aEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aEVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplRCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxl
bWVudDo6cGF0aFNlZ0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OmFu
aW1hdGVkUGF0aFNlZ0xpc3QpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoRWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnBhdGhCeXRlU3RyZWFtKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRl
bnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpzeW5jaHJvbml6ZVN5
c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ1dpdGhDb250ZXh0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnV2l0aENvbnRleHQ6OmFuaW1hdGVkUHJvcGVydHkp
OgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYXR0ZXJuRWxlbWVudDo6U1ZHUGF0dGVybkVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9T
VkdQYXR0ZXJuRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6
OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0
ZXJuRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAg
ICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5
RWxlbWVudDo6cG9pbnRzUHJvcGVydHlJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlF
bGVtZW50OjpTVkdQb2x5RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1l
bnQ6OnN5bmNocm9uaXplUG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50
Ojpsb29rdXBPckNyZWF0ZVBvaW50c1dyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9s
eUVsZW1lbnQ6OnBvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6YW5p
bWF0ZWRQb2ludHMpOgorICAgICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVu
c2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OnN5bmNocm9uaXplU3lz
dGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpTVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHUmVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUmVjdEVsZW1lbnQ6OlNWR1JlY3RFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHUmVjdEVs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50OjpzeW5jaHJvbml6ZVJl
cXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVjdEVsZW1lbnQ6OnN5bmNo
cm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVt
ZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpTVkdTVkdFbGVtZW50
KToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
U1ZHRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1NWR0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgor
ICAgICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1NjcmlwdEVsZW1lbnQ6OlNWR1NjcmlwdEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdTY3Jp
cHRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0b3BFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1N0b3BFbGVtZW50OjpTVkdTdG9wRWxlbWVudCk6CisgICAgICAgICogc3Zn
L1NWR1N0b3BFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6U1ZHU3R5bGVkRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpjc3NQcm9wZXJ0eVRvVHlwZU1hcCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdTdHlsZWRFbGVtZW50OjphbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZSk6Cisg
ICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQ6OlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHU3dpdGNoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTd2l0Y2hFbGVtZW50
OjpTVkdTd2l0Y2hFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHU3dpdGNoRWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHU3dpdGNoRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZl
YXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N3aXRjaEVsZW1lbnQ6OnN5bmNocm9uaXpl
UmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N3aXRjaEVsZW1lbnQ6
OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdTeW1ib2xFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N5bWJvbEVsZW1lbnQ6OlNWR1N5bWJvbEVs
ZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdTeW1ib2xFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjpT
VkdUUmVmRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR1RTcGFuRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXN0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
ZXN0czo6cmVxdWlyZWRGZWF0dXJlc1Byb3BlcnR5SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdUZXN0czo6cmVxdWlyZWRFeHRlbnNpb25zUHJvcGVydHlJbmZvKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1Rlc3RzOjpzeXN0ZW1MYW5ndWFnZVByb3BlcnR5SW5mbyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUZXN0czo6YXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICog
c3ZnL1NWR1Rlc3RzLmg6CisgICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnRleHRMZW5ndGhQcm9w
ZXJ0eUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpTVkdU
ZXh0Q29udGVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVt
ZW50OjpzeW5jaHJvbml6ZVRleHRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENv
bnRlbnRFbGVtZW50Ojpsb29rdXBPckNyZWF0ZVRleHRMZW5ndGhXcmFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6dGV4dExlbmd0aEFuaW1hdGVkKToKKyAg
ICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpT
VkdUZXh0Q29udGVudEVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRF
eHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6c3lu
Y2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR1RleHRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRFbGVtZW50OjpTVkdUZXh0RWxlbWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR1RleHRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRo
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UGF0aEVsZW1lbnQ6OlNWR1Rl
eHRQYXRoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQp
OgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR1RpdGxlRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR1RpdGxlRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGl0bGVFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToK
KyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdV
c2VFbGVtZW50OjpTVkdVc2VFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZl
YXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnN5bmNocm9uaXplUmVx
dWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnN5bmNo
cm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3RWxlbWVudDo6U1ZHVmlld0VsZW1lbnQpOgorICAg
ICAgICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdWaWV3U3BlYy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6U1ZHVmlld1NwZWMpOgorICAgICAg
ICAqIHN2Zy9TVkdWaWV3U3BlYy5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJvcGVydHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHk6OnVw
ZGF0ZUFuaW1WYWwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9v
a3VwT3JDcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVy
dHk6Omxvb2t1cFdyYXBwZXIpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
UHJvcGVydHlNYWNyb3MuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVU
b1Byb3BlcnR5TWFwLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdBdHRyaWJ1dGVU
b1Byb3BlcnR5TWFwOjphbmltYXRlZFByb3BlcnRpZXNGb3JBdHRyaWJ1dGUpOgorICAgICAgICAq
IHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwOjpTVkdBdHRyaWJ1dGVUb1By
b3BlcnR5TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA6
On5TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJp
YnV0ZVRvUHJvcGVydHlNYXA6OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmli
dXRlVG9Qcm9wZXJ0eU1hcDo6YWRkUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
dHRyaWJ1dGVUb1Byb3BlcnR5TWFwOjphZGRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwOjphbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwOjpzeW5jaHJv
bml6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0
eU1hcDo6c3luY2hyb25pemVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBdHRyaWJ1
dGVUb1Byb3BlcnR5TWFwOjphbmltYXRlZFByb3BlcnR5KToKKyAgICAgICAgKiBzdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eUluZm8uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9w
ZXJ0eUluZm86OlNWR1Byb3BlcnR5SW5mbyk6CisKIDIwMTEtMDctMDggIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByOTA2
MTUuCkBAIC02NTMsNiArMTE2Nyw1MjMgQEAKIAogMjAxMS0wNy0wNyAgTmlrb2xhcyBaaW1tZXJt
YW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAorICAgICAgICBBZGQgYSBwb3NzaWJpbGl0eSB0
byByZXRyaWV2ZSB0aGUgYXNzb2NpYXRlZCBTVkdBbmltYXRlZFByb3BlcnR5IG9iamVjdCBmb3Ig
YSBjZXJ0YWluIFhNTCBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYzNzk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gcHJlcGFyZSBhbmltVmFsIHN1cHBvcnQgd2UgbmVl
ZCBhIHdheSB0byBtYXAgYSBnaXZlbiBTVkcgRE9NIGF0dHJpYnV0ZSB0byBhIFNWR0FuaW1hdGVk
UHJvcGVydHkuCisgICAgICAgIGVnLiBTVkdOYW1lczo6eEF0dHIgLT4gU1ZHUmVjdEVsZW1lbnQ6
OnhBbmltYXRlZCgpLCBldGMuIFRoaXMgd2lsbCBiZSBuZWVkZWQgdG8gdXBkYXRlIHRoZSBhbmlt
VmFsIG9mIHRoZQorICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5LCBpZiBhbiBhbmltYXRpb24g
aXMgcnVubmluZy4gSXQgd291bGQgcmVxdWlyZWQgYWRkaW5nIGEgbmV3IG1ldGhvZCB0byBhbGwg
U1ZHKiBjbGFzc2VzCisgICAgICAgIHRoYXQgZGVmaW5lIGFuaW1hdGVkIHByb3BlcnRpZXMuIFVu
Zm9ydHVuYXRlbHkgd2UgYWxyZWFkeSBoYXZlIGxvdHMgb2YgcmVwZWF0ZWQgY29kZSBpbiBtZXRo
b2RzIGxpa2UKKyAgICAgICAgc3luY2hyb25pemVQcm9wZXJ0eSAvIGZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC4gTG9vayBhdCBTVkdSZWN0RWxlbWVudCBmb3IgZXhhbXBsZToKKworICAg
ICAgICB2b2lkIFNWR1JlY3RFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoYXR0ck5hbWUg
PT0gYW55UU5hbWUoKSkgeworICAgICAgICAgICAgICAgIHN5bmNocm9uaXplWCgpOworICAgICAg
ICAgICAgICAgIHN5bmNocm9uaXplWSgpOworICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKSB7
CisgICAgICAgICAgICAgICAgc3luY2hyb25pemVYKCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnlBdHRyKSB7CisgICAgICAgICAgICAgICAgc3luY2hyb25pemVZKCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLi4uCisgICAgICAgIH0KKwor
ICAgICAgICBvcgorCisgICAgICAgIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgICAgIAorICAgICAgICAgICAgU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7CisgICAgICAgICAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgICAg
ICAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmlt
YXRlZExlbmd0aCk7CisgICAgICAgICAgICAuLi4KKyAgICAgICAgfQorCisgICAgICAgIFRoZXNl
IGxvb2t1cHMgYXJlIGFsbCBwZXJmb3JtZWQgZHluYW1pY2FsbHkuIEVhY2ggc3luY2hyb25pemVQ
cm9wZXJ0eSgpIGNhbGwgZG9lcyBhIGxvdCBvZiBjb21wYXJpc29ucy4KKyAgICAgICAgZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkgaXNuJ3QgdGhhdCBiYWQgYXMgdGhlIHJlc3VsdCBp
cyBjYWNoZWQgaW4gYSBzdGF0aWMgSGFzaE1hcCBwZXItU1ZHUmVjdEVsZW1lbnQuCisgICAgICAg
IFRoZXJlJ3Mgbm8gcmVhc29uIHRvIGRvIHRoZXNlIHRoaW5ncyBkeW5hbWljYWxseSEKKworICAg
ICAgICBJbnNwaXJlZCBieSBKU0MsIEknbSBhZGRpbmcgYSAic3RhdGljIGNvbnN0IFNWR1Byb3Bl
cnR5SW5mbyBzX2Zvb1Byb3BlcnR5SW5mbyIgb2JqZWN0IGZvciBlYWNoIGFuaW1hdGVkIFNWRyBw
cm9wZXJ0eS4KKyAgICAgICAgRm9yIGV4YW1wbGUsIGZvciBTVkdSZWN0RWxlbWVudHMgU1ZHQW5p
bWF0ZWRMZW5ndGggeCBwcm9wZXJ0eSB3ZSdyZSBzdG9yaW5nOgorICAgICAgICAtICJBbmltYXRl
ZFByb3BlcnR5VHlwZSB0eXBlIiAoQW5pbWF0ZWRMZW5ndGggLS0gbm90ZSB0aGUgZW51bSB3YXMg
bmFtZWQgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlLCBJIHJlbmFtZWQgaXQgdG8gQW5pbWF0ZWRQcm9w
ZXJ0eVR5cGUgZm9yIGNsYXJpdHkpCisgICAgICAgIC0gImNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUiIChTVkdOYW1lczo6eEF0dHIpCisgICAgICAgIC0gImNvbnN0IEF0b21pY1N0
cmluZyYgcHJvcGVydHlJZGVudGlmaWVyIiAoU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpIC0t
IG9ubHkgZGlmZmVyZW50IGlmIE4td3JhcHBlcnMgbWFwIHRvIGEgc2luZ2xlIFhNTCBET00gYXR0
cmlidXRlLCBlZy4gb3JpZW50QXR0cikKKyAgICAgICAgLSAiU3luY2hyb25pemVQcm9wZXJ0eSBz
eW5jaHJvbml6ZVByb3BlcnR5IiAoY2FsbGJhY2sgdG8gU1ZHUmVjdEVsZW1lbnQ6OnN5bmNocm9u
aXplWCkKKyAgICAgICAgLSAiTG9va3VwT3JDcmVhdGVXcmFwcGVyRm9yQW5pbWF0ZWRQcm9wZXJ0
eSBsb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JBbmltYXRlZFByb3BlcnR5IiAoY2FsbGJhY2sgdG8g
U1ZHUmVjdEVsZW1lbnQ6OnhBbmltYXRlZCkKKworICAgICAgICBVc2luZyB0aGlzIGluZm9ybWF0
aW9uLCB3ZSBjYW4gcmVwbGFjZSBhbGwgdGhlIHZhcmlvdXMgc3luY2hyb25pemVQcm9wZXJ0eS9m
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCBpbXBsZW1lbnRhdGlvbnMsIHdpdGggYSBzaW5nbGUg
b25lIGluIFNWR0VsZW1lbnQuCisgICAgICAgIEFsbCB0aGVzZSBhcmUgYXV0by1nZW5lcmF0ZWQs
IHVzaW5nIHRoZSBzdGFuZGFyZCBtYWNyb3MgdXNlZCB0byBkZWZpbmUvZGVjbGFyZSBTVkcgYW5p
bWF0ZWQgcHJvcGVydGllcy4gVGhpcyByZXF1aXJlZCBzZXZlcmFsIGNoYW5nZXMgdG8gdGhlIG1h
Y3Jvcy4KKyAgICAgICAgSGVyZSdzIGEgc3VtbWFyeToKKyAgICAKKyAgICAgICAgIzEpIEluIGFs
bCBoZWFkZXJzLCB3cmFwIERFQ0xBUkVfQU5JTUFURURfKiBjYWxscywgaW4gQkVHSU5fREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUSUVTKENsYXNzTmFtZSkgLyBFTkRfREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUSUVTIGJsb2Nrcy4KKyAgICAgICAgCisgICAgICAgICAgICBTYW1wbGUgY2hhbmdlIGZv
ciBTVkdSZWN0RWxlbWVudDoKKyAgICAgICAgICAgIC0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoWCwgeCkKKyAgICAgICAgICAgIC0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkK
KyAgICAgICAgICAgIC0gICAgLi4uCisKKyAgICAgICAgICAgICsgICAgQkVHSU5fREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR1JlY3RFbGVtZW50KQorICAgICAgICAgICAgKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKKyAgICAgICAgICAgICsgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfTEVOR1RIKFksIHkpCisgICAgICAgICAgICArICAgICAgICAgLi4uCisgICAg
ICAgICAgICArICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKKworICAgICAgICAj
MikgSW4gYWxsIGNwcCBmaWxlcywgd3JhcCBERUZJTkVfQU5JTUFURURfKiBjYWxscywgaW4gQkVH
SU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMgLyBFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRJRVMgYmxvY2tzLgorICAgIAorICAgICAgICAgICAgU2FtcGxlIGNoYW5nZSBmb3IgU1ZHUmVj
dEVsZW1lbnQ6CisgICAgICAgICAgICAtREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdSZWN0RWxl
bWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQorICAgICAgICAgICAgLURFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKKyAgICAgICAg
ICAgIC0uLi4KKworICAgICAgICAgICAgK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVT
CisgICAgICAgICAgICArICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQs
IFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKKyAgICAgICAgICAgICsgICAgREVGSU5FX0FOSU1BVEVE
X0xFTkdUSChTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQorICAgICAgICAg
ICAgKyAgICAuLi4KKyAgICAgICAgICAgICtFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMK
KworICAgICAgICAKKyAgICAgICAgICAgIFRoaXMgbm93IGdlbmVyYXRlcyB0aGUgInN0YXRpYyBj
b25zdCBTVkdQcm9wZXJ0eUluZm8iIG9iamVjdHMgZm9yIGVhY2ggYW5pbWF0ZWQgU1ZHIHByb3Bl
cnR5LgorCisgICAgICAgICMzKSBJbiBhbGwgY3BwIGZpbGVzLCBhZGQgYSBuZXcgc2VjdGlvbiB3
cmFwcGVkIGluIEJFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoQ2xhc3NOYW1lIC8g
RU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMgYmxvY2tzOgorICAgICAgICAKKyAgICAg
ICAgICAgIFNhbXBsZSBjaGFuZ2UgZm9yIFNWR1JlY3RFbGVtZW50OgorICAgICAgICAgICAgK0JF
R0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUmVjdEVsZW1lbnQpCisgICAgICAg
ICAgICArICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAgICAgICAg
ICArICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHkpCisgICAgICAgICAgICAr
ICAgIC4uLgorICAgICAgICAgICAgKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICAgICAgICAgICsgICAgUkVH
SVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCisgICAgICAgICAgICAr
RU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKKworICAgICAgICAgICAgVGhpcyBpcyB0
aGUgbWFpbiBwaWVjZSBvZiB0aGUgbG9naWMgdGhhdCByZXBsYWNlcyB0aGUgbWFudWFsIHN5bmNo
cm9uaXplUHJvcGVydHkvZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAgaW1wbGVtZW50YXRpb24u
IEl0IGV4cGFuZHMgdG8gZm9sbG93aW5nOgorCisgICAgICAgICAgICBTVkdBdHRyaWJ1dGVUb1By
b3BlcnR5TWFwJiBTVkdSZWN0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTVkdBdHRyaWJ1
dGVUb1Byb3BlcnR5TWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlNYXAsICgpKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRp
ZXNGb3JTVkdSZWN0RWxlbWVudCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgU1ZH
QXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgbWFwID0gU1ZHUmVjdEVsZW1lbnQ6OmF0dHJpYnV0ZVRv
UHJvcGVydHlNYXAoKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1hcC5pc0VtcHR5KCkpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBtYXAuYWRkUHJvcGVydHko
U1ZHUmVjdEVsZW1lbnQ6OnhQcm9wZXJ0eUluZm8oKSk7CisgICAgICAgICAgICAgICAgbWFwLmFk
ZFByb3BlcnR5KFNWR1JlY3RFbGVtZW50Ojp5UHJvcGVydHlJbmZvKCkpOworICAgICAgICAgICAg
ICAgIC4uLgorICAgICAgICAgICAgICAgIG1hcC5hZGRQcm9wZXJ0aWVzKFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCkpOworICAgICAgICAgICAg
ICAgIG1hcC5hZGRQcm9wZXJ0aWVzKFNWR1Rlc3RzOjphdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCkp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBBIHNpbmdsZS1pbnN0YW5jZSBvZiBTVkdB
dHRyaWJ1dGVUb1Byb3BlcnR5TWFwIGlzIGNyZWF0ZWQgZm9yIGVhY2ggU1ZHKkVsZW1lbnQuIFRo
ZSBjb25zdHJ1Y3RvciBvZiBTVkdSZWN0RWxlbWVudCBpcyBzdXBwb3NlZCB0byBjYWxsCisgICAg
ICAgICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1JlY3RFbGVtZW50KCksIHdo
aWNoIGNvbGxlY3RzIGFsbCBwcm9wZXJ0aWVzIG9mIFNWR1JlY3RFbGVtZW50IGFuZCBhbGwgaXRz
IHBhcmVudCBjbGFzc2VzIGFuZCBzdG9yZXMgdGhlbQorICAgICAgICAgICAgaW4gYSBWZWN0b3I8
Y29uc3QgU1ZHUHJvcGVydHlJbmZvKj4uIFRoaXMgVmVjdG9yIGlzIHN0b3JlZCBpbiBhIEhhc2hN
YXA8UXVhbGlmaWVkTmFtZSwgVmVjdG9yPGNvbnN0IFNWR1Byb3BlcnR5SW5mbyo+ID4gd2hlcmUg
dGhlIGtleQorICAgICAgICAgICAgaXMgdGhlIGF0dHJpYnV0ZSBuYW1lIChlZy4gU1ZHTmFtZXM6
OnhBdHRyIC0+IFNWR1JlY3RFbGVtZW50Ojp4UHJvcGVydHlJbmZvKS4gVGhpcyBpcyBvbmx5IGRv
bmUgX29uY2VfIHBlciBTVkdSZWN0RWxlbWVudC4KKworICAgICAgICAgICAgU1ZHRWxlbWVudCBj
b250YWlucyBhICJ2aXJ0dWFsIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAmIGxvY2FsQXR0cmli
dXRlVG9Qcm9wZXJ0eU1hcCgpIiBtZXRob2QsIGFuZCBTVkdSZWN0RWxlbWVudCBvdmVycmlkZXMg
aXQKKyAgICAgICAgICAgIGFuZCByZXR1cm5zIFNWR1JlY3RFbGVtZW50OjphdHRyaWJ1dGVUb1By
b3BlcnR5TWFwKCkgKHdoaWNoIGlzIHN0YXRpYyEpIC0tIHRoaXMgaXMgaGlkZGVuIGFnYWluIGlu
IHRoZSBtYWNyb3MsIG5vIG5lZWQgdG8gd3JpdGUgYW55IGNvZGUuCisKKyAgICAgICAgICAgIFNW
R0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAgcHJvdmlkZXMgZm9sbG93aW5nIEFQSToKKyAgICAgICAg
ICAgIC0gYm9vbCBzeW5jaHJvbml6ZVByb3BlcnR5KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgICAgICAgICAgLSB2b2lk
IHN5bmNocm9uaXplUHJvcGVydGllcyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIEEgZ2VuZXJpYyB3YXkgdG8gc3luY2hyb25pemUgYSBT
VkdBbmltYXRlZFByb3BlcnR5IHdpdGggaXRzIFhNTCBET00gYXR0cmlidXRlLiBBbnkgU1ZHIERP
TSBjaGFuZ2UgdG8gZWcuIDxyZWN0PnMgeCBwcm9wZXJ0eSB3aWxsIG5vdyB0cmlnZ2VyCisgICAg
ICAgICAgICAgICAgY29udGV4dEVsZW1lbnQtPmxvY2FsQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgp
LnN5bmNocm9uaXplUHJvcGVydHkodGhpcywgU1ZHTmFtZXM6OnhBdHRyKQorICAgICAgICAgICAg
ICAgIFRoZSBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwIHdpbGwgYXNrIGl0cyBIYXNoTWFwIGZv
ciB0aGUgVmVjdG9yIGNvbnRhaW5pbmcgdGhlIHByb3BlcnRpZXMgZm9yIFNWR05hbWVzOjp4QXR0
ciAoaW4gdGhhdCBjYXNlLCBqdXN0IG9uZSB4QW5pbWF0ZWQoKSkuCisKKyAgICAgICAgICAgIC0g
dm9pZCBhbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCBWZWN0b3I8QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+JiBwcm9wZXJ0eVR5
cGVzKQorCisgICAgICAgICAgICAgICAgVGhpcyBtZXRob2QgcmVwbGFjZXMgdGhlIGZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5TWFwIGltcGxlbWVudGF0aW9ucyBldmVyeXdoZXJlLgorICAgICAgICAK
KyAgICAgICAgICAgIC0gdm9pZCBhbmltYXRlZFByb3BlcnRpZXNGb3JBdHRyaWJ1dGUoU1ZHRWxl
bWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUs
IFZlY3RvcjxSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gPiYgcHJvcGVydGllcyk7CisKKyAg
ICAgICAgICAgICAgICBUaGlzIG1ldGhvZCBpcyBub3QgdXNlZCB5ZXQsIGJ1dCBhbGxvd3MgdXMg
dG8gY29sbGVjdCBhbGwgU1ZHQW5pbWF0ZWRQcm9wZXJ0aWVzIGZvciBhIFF1YWxpZmllZE5hbWUg
LS0gdGhlIGluaXRpYWwgZ29hbCBmb3IgdGhpcyBwYXRjaC4KKworICAgICAgICAjNCkgSW4gYWxs
IGNwcCBmaWxlcywgYWRkIGEgY2FsbCB0byAicmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JD
bGFzc05hbWUoKSIgaW4gdGhlIGNvbnN0cnVjdG9yLiBGb3JnZXR0aW5nIHRoaXMgd2lsbCByZXN1
bHQgaW4gYSBjb21waWxlIGVycm9yLgorCisgICAgICAgIERvZXNuJ3QgYWZmZWN0IGFueSB0ZXN0
cywgb25seSBnaXZlcyBwZXJmb3JtYW5jZSBiZW5lZml0cy4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OiBBZGQgc3ZnL3Byb3BlcnRpZXMvKFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuKnxT
VkdQcm9wZXJ0eUluZm8uaCkgdG8gYnVpbGQuCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJD
b3JlLnBybzogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0
dG8uCisgICAgICAgICogc3ZnL1NWR0FFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FFbGVtZW50OjpTVkdBRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0FFbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0
ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBRWxlbWVudDo6c3luY2hyb25pemVTeXN0
ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbHRHbHlwaEVsZW1lbnQ6OlNWR0FsdEdseXBoRWxlbWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6U1ZH
QW5pbWF0ZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6Omhh
c1ZhbGlkQXR0cmlidXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVu
dDo6ZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmRldGVybWluZVByb3BlcnR5VmFsdWVUeXBlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5k
QnlWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OnJlc2V0VG9C
YXNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmFwcGx5UmVz
dWx0c1RvVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxj
dWxhdGVEaXN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6ZW5z
dXJlQW5pbWF0b3IpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpkZXRlcm1pbmVBbmlt
YXRlZFByb3BlcnR5VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlVHJhbnNmb3Jt
RWxlbWVudDo6cmVzZXRUb0Jhc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
VHJhbnNmb3JtRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQpOgor
ICAgICAgICAqIHN2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdBbmltYXRlZEFuZ2xlLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5o
OgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmg6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVkSW50ZWdlci5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZExlbmd0aC5o
OgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuaDoKKyAgICAgICAgKiBzdmcv
U1ZHQW5pbWF0ZWROdW1iZXIuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0
Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oOgorICAg
ICAgICAqIHN2Zy9TVkdBbmltYXRlZFJlY3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRT
dHJpbmcuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Lmg6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZFR5cGU6OlNWR0FuaW1hdGVkVHlwZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlw
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjp0eXBlKToKKyAgICAgICAg
KiBzdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVkVHlwZUFuaW1hdG9yOjpTVkdBbmltYXRlZFR5cGVBbmltYXRvcik6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
aW9uRWxlbWVudDo6U1ZHQW5pbWF0aW9uRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRpb25FbGVtZW50OjpjdXJyZW50VmFsdWVzRm9yVmFsdWVzQW5pbWF0aW9uKToKKyAgICAg
ICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0aW9uRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OnN5bmNocm9uaXplU3lz
dGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRvckZhY3RvcnkuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdG9yRmFjdG9yeTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcv
U1ZHQ2lyY2xlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50
OjpTVkdDaXJjbGVFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHQ2lyY2xlRWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZl
YXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NpcmNsZUVsZW1lbnQ6OnN5bmNocm9uaXpl
UmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NpcmNsZUVsZW1lbnQ6
OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50OjpTVkdDbGlw
UGF0aEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1
cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6c3luY2hyb25pemVS
ZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50
OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25F
bGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdDdXJzb3JFbGVtZW50OjpTVkdDdXJzb3JFbGVtZW50KToKKyAgICAgICAgKiBzdmcv
U1ZHQ3Vyc29yRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ3Vyc29yRWxlbWVudDo6
c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0N1cnNv
ckVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0N1cnNvckVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAg
ICAqIHN2Zy9TVkdEZWZzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEZWZzRWxl
bWVudDo6U1ZHRGVmc0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdEZWZzRWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRGVmc0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0
dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEZWZzRWxlbWVudDo6c3luY2hyb25pemVSZXF1
aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRGVmc0VsZW1lbnQ6OnN5bmNo
cm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnVwZGF0ZUFuaW1hdGVkU1ZHQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmxvY2FsQXR0cmlidXRlVG9Q
cm9wZXJ0eU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVJl
cXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6c3luY2hyb25p
emVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6c3lu
Y2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3Vh
Z2UpOgorICAgICAgICAqIHN2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGxpcHNlRWxlbWVudDo6U1ZHRWxsaXBzZUVsZW1lbnQpOgorICAgICAgICAqIHN2
Zy9TVkdFbGxpcHNlRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1l
bnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bGxpcHNlRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgor
ICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRUJsZW5kRWxlbWVudDo6U1ZHRkVCbGVuZEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdG
RUJsZW5kRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6U1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6U1ZHRkVDb21wb25l
bnRUcmFuc2ZlckVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpTVkdGRUNvbXBvc2l0ZUVsZW1l
bnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJv
cFNoYWRvd0VsZW1lbnQ6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9T
VkdGRURyb3BTaGFkb3dFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRmxvb2RFbGVtZW50
LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudDo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50KToKKyAgICAgICAgKiBz
dmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpTVkdGRUlt
YWdlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTGln
aHRFbGVtZW50OjpTVkdGRUxpZ2h0RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFTGlnaHRF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6U1ZH
RkVNZXJnZU5vZGVFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudCk6
CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxl
bWVudDo6U1ZHRkVPZmZzZXRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6U1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpTVkdGRVRpbGVFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVR1cmJ1bGVuY2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OlNW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6U1ZHRmlsdGVyRWxlbWVudCk6CisgICAgICAgICogc3Zn
L1NWR0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
KToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6
CisgICAgICAgICogc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHA6CisgICAgICAgICogc3ZnL1NWR0Zp
dFRvVmlld0JveC5oOgorICAgICAgICAqIHN2Zy9TVkdGb250RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGb250RWxlbWVudDo6U1ZHRm9udEVsZW1lbnQpOgorICAgICAgICAqIHN2
Zy9TVkdGb250RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6U1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnN5bmNocm9uaXpl
UmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb3JlaWduT2JqZWN0RWxl
bWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAg
ICAgICAqIHN2Zy9TVkdHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHRWxlbWVu
dDo6U1ZHR0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdHRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHR0VsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdHRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3Vh
Z2UpOgorICAgICAgICAqIHN2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9T
VkdHbHlwaEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6U1ZHR3JhZGllbnRFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZCk6CisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50
OjpTVkdJbWFnZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1
cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6c3luY2hyb25pemVSZXF1
aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpzeW5j
aHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHTGluZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZUVsZW1lbnQ6OlNWR0xpbmVFbGVtZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHTGluZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVF
bGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGluZUVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0xpbmVFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAg
ICAgICAgKiBzdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50KToK
KyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR01QYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNUGF0aEVsZW1lbnQ6
OlNWR01QYXRoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR01QYXRoRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01h
cmtlckVsZW1lbnQ6Om9yaWVudFR5cGVQcm9wZXJ0eUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTWFya2VyRWxlbWVudDo6U1ZHTWFya2VyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnRUb0F1dG8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TWFya2VyRWxlbWVudDo6c2V0T3JpZW50VG9BbmdsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdN
YXJrZXJFbGVtZW50OjpzeW5jaHJvbml6ZU9yaWVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTWFya2VyRWxlbWVudDo6bG9va3VwT3JDcmVhdGVPcmllbnRUeXBlV3JhcHBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpvcmllbnRUeXBlQW5pbWF0ZWQpOgorICAg
ICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJr
ZXJFbGVtZW50OjpvcmllbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1l
bnQ6Om9yaWVudFR5cGVCYXNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxl
bWVudDo6c2V0T3JpZW50VHlwZUJhc2VWYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR01hc2tFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50OjpTVkdNYXNrRWxlbWVu
dCk6CisgICAgICAgICogc3ZnL1NWR01hc2tFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpT
VkdNYXNrRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR01hc2tFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFn
ZSk6CisgICAgICAgICogc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuY3BwOgorICAgICAgICAq
IHN2Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpkUHJvcGVydHlJbmZv
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpTVkdQYXRoRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6bG9va3VwT3JDcmVhdGVEV3JhcHBlcik6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6c3luY2hyb25pemVEKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpwYXRoU2VnTGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXRoRWxlbWVudDo6YW5pbWF0ZWRQYXRoU2VnTGlzdCk6CisgICAgICAgICogc3Zn
L1NWR1BhdGhFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6cGF0
aEJ5dGVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6
c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aEVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdQ
YXRoU2VnV2l0aENvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdXaXRoQ29u
dGV4dDo6YW5pbWF0ZWRQcm9wZXJ0eSk6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpTVkdQYXR0ZXJuRWxl
bWVudCk6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0
ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6c3luY2hyb25p
emVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR1BvbHlFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50Ojpwb2ludHNQcm9wZXJ0eUluZm8pOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OlNWR1BvbHlFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6c3luY2hyb25pemVQb2ludHMpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlUG9pbnRzV3JhcHBlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6cG9pbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BvbHlFbGVtZW50OjphbmltYXRlZFBvaW50cyk6CisgICAgICAgICogc3ZnL1NWR1Bv
bHlFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6c3luY2hyb25p
emVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50Ojpz
eW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5
RWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQ6OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NW
R1JhZGlhbEdyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6U1ZHUmVjdEVsZW1lbnQpOgor
ICAgICAgICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVj
dEVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZWN0RWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVjdEVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgor
ICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NW
R0VsZW1lbnQ6OlNWR1NWR0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVh
dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6c3luY2hyb25pemVSZXF1
aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6c3luY2hy
b25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6U1ZHU2NyaXB0RWxlbWVudCk6
CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3Rv
cEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3RvcEVsZW1lbnQ6OlNWR1N0b3BF
bGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50
OjpTVkdTdHlsZWRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNzc1Byb3BlcnR5VG9UeXBl
TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6OmFuaW1hdGVkUHJvcGVy
dHlUeXBlRm9yQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6U1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTd2l0Y2hFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1N3aXRjaEVsZW1lbnQ6OlNWR1N3aXRjaEVsZW1lbnQpOgorICAgICAgICAqIHN2
Zy9TVkdTd2l0Y2hFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdTd2l0Y2hFbGVtZW50
OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3dp
dGNoRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU3dpdGNoRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAg
ICAgICogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3lt
Ym9sRWxlbWVudDo6U1ZHU3ltYm9sRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1N5bWJvbEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVFJlZkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVFJlZkVsZW1lbnQ6OlNWR1RSZWZFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZH
VFJlZkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVFNwYW5FbGVtZW50LmNwcDoKKyAgICAg
ICAgKiBzdmcvU1ZHVFNwYW5FbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1Rlc3RzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpyZXF1aXJlZEZlYXR1cmVzUHJvcGVydHlJbmZv
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpyZXF1aXJlZEV4dGVuc2lvbnNQcm9wZXJ0
eUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnN5c3RlbUxhbmd1YWdlUHJvcGVy
dHlJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjphdHRyaWJ1dGVUb1Byb3BlcnR5
TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVh
dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRF
eHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3Rl
bUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHVGVzdHMuaDoKKyAgICAgICAgKiBzdmcvU1ZH
VGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50
RWxlbWVudDo6dGV4dExlbmd0aFByb3BlcnR5SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
ZXh0Q29udGVudEVsZW1lbnQ6OlNWR1RleHRDb250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN5bmNocm9uaXplVGV4dExlbmd0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlVGV4dExl
bmd0aFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50Ojp0
ZXh0TGVuZ3RoQW5pbWF0ZWQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6c3luY2hyb25pemVS
ZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVu
dDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VGV4dENvbnRlbnRFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAg
KiBzdmcvU1ZHVGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dEVsZW1l
bnQ6OlNWR1RleHRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RleHRQYXRoRWxlbWVudDo6U1ZHVGV4dFBhdGhFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZH
VGV4dFBhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6U1ZH
VGV4dFBvc2l0aW9uaW5nRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQb3NpdGlvbmlu
Z0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAg
KiBzdmcvU1ZHVGl0bGVFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdUaXRsZUVsZW1l
bnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OlNWR1VzZUVsZW1lbnQpOgorICAgICAg
ICAqIHN2Zy9TVkdVc2VFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50
OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNl
RWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVXNlRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICog
c3ZnL1NWR1ZpZXdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdFbGVtZW50
OjpTVkdWaWV3RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1ZpZXdFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR1ZpZXdTcGVjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVj
OjpTVkdWaWV3U3BlYyk6CisgICAgICAgICogc3ZnL1NWR1ZpZXdTcGVjLmg6CisgICAgICAgICog
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6dXBkYXRlQW5pbVZhbCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBPckNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwV3JhcHBlcik6CisgICAgICAgICogc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oOgorICAgICAgICAqIHN2Zy9w
cm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA6OmFuaW1hdGVkUHJvcGVydGllc0Zv
ckF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9w
ZXJ0eU1hcC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJpYnV0ZVRvUHJvcGVy
dHlNYXA6OlNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6flNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6aXNFbXB0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwOjphZGRQcm9wZXJ0aWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA6OmFkZFByb3BlcnR5
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA6OmFuaW1hdGVk
UHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJpYnV0
ZVRvUHJvcGVydHlNYXA6OnN5bmNocm9uaXplUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwOjpzeW5jaHJvbml6ZVByb3BlcnR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA6OmFuaW1hdGVkUHJvcGVydHkp
OgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5SW5mby5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5SW5mbzo6U1ZHUHJvcGVydHlJbmZvKToKKworMjAx
MS0wNy0wNyAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KKwogICAg
ICAgICBNb3ZlIHJlbWFpbmluZyBlbnVtcyBvdXQgb2YgU1ZHKkVsZW1lbnQgY2xhc3NlcwogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQwNzUKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4MDksNiArMTgwOSw3IEBAIElGIChF
TkFCTEVfU1ZHKQogICAgICAgICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAog
ICAgICAgICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwCiAgICAgICAgIHN2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCisgICAgICAgIHN2Zy9wcm9wZXJ0
aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwCiAgICAgICAgIHN2Zy9wcm9wZXJ0aWVz
L1NWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmNwcAogICAgICkKIApJbmRleDogU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTMzOTUsNiArMzM5NSw4IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9MaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMuaCBc
CiAJU291cmNlL1dlYkNvcmUvc3ZnL1BhdHRlcm5BdHRyaWJ1dGVzLmggXAorCVNvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmggXAog
CVNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9w
ZXJ0eVRlYXJPZmYuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCBcCkBAIC0zNDEwLDYgKzM0
MTIsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCBcCiAJU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHkuaCBcCisJU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmggXApJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtp
bmcgY29weSkKQEAgLTEwNzcsNiArMTA3Nyw3IEBACiAgICAgICAgICAgICAnc3ZnL1NWR1RyYW5z
Zm9ybUxpc3QuaCcsCiAgICAgICAgICAgICAnc3ZnL2FuaW1hdGlvbi9TTUlMVGltZS5oJywKICAg
ICAgICAgICAgICdzdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmgnLAorICAgICAgICAgICAg
J3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCcsCiAgICAgICAgICAg
ICAnc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZi5o
JywKICAgICAgICAgICAgICdzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRl
YXJPZmYuaCcsCiAgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eS5oJywKQEAgLTEwOTAsNiArMTA5MSw3IEBACiAgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMv
U1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oJywKICAgICAgICAgICAgICdzdmcvcHJvcGVydGllcy9T
VkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oJywKICAgICAgICAgICAgICdzdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eS5oJywKKyAgICAgICAgICAgICdzdmcvcHJvcGVydGllcy9TVkdQcm9w
ZXJ0eUluZm8uaCcsCiAgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFy
T2ZmLmgnLAogICAgICAgICAgICAgJ3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgn
LAogICAgICAgICAgICAgJ3N2Zy9wcm9wZXJ0aWVzL1NWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJP
ZmYuaCcsCkBAIC02MDAyLDYgKzYwMDQsNyBAQAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZpbHRlci5oJywKICAgICAgICAgICAgICdzdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXJCdWlsZGVyLmNwcCcsCiAgICAgICAgICAgICAnc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyQnVpbGRlci5oJywKKyAgICAgICAgICAgICdzdmcvcHJvcGVydGllcy9TVkdBdHRy
aWJ1dGVUb1Byb3BlcnR5TWFwLmNwcCcsCiAgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oJywKICAgICAgICAgICAgICdzdmcv
cHJvcGVydGllcy9TVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAnLAogICAgICAgICAg
ICAgJ3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcCcsCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybwkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkod29y
a2luZyBjb3B5KQpAQCAtMjMwMCw2ICsyMzAwLDcgQEAgSEVBREVSUyArPSBcCiAgICAgc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oIFwKICAgICBzdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGaWx0ZXIuaCBcCiAgICAgc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggXAorICAgIHN2
Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCBcCiAgICAgc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZi5oIFwKICAgICBzdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCBcCiAgICAgc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oIFwKQEAgLTIz
MTQsNiArMjMxNSw3IEBAIEhFQURFUlMgKz0gXAogICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQ
cm9wZXJ0eVRlYXJPZmYuaCBcCiAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHUGF0aFNlZ0xpc3RQcm9w
ZXJ0eVRlYXJPZmYuaCBcCiAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHkuaCBcCisgICAg
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmggXAogICAgIHN2Zy9wcm9wZXJ0aWVzL1NW
R1Byb3BlcnR5VGVhck9mZi5oIFwKICAgICBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0
cy5oIFwKICAgICBzdmcvcHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmgg
XApAQCAtMzI2Myw2ICszMjY1LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWRz0xKSB7
CiAgICAgICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAgXAogICAgICAgICBz
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcCBcCiAgICAgICAgIHN2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAgXAorICAgICAgICBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1
dGVUb1Byb3BlcnR5TWFwLmNwcCBcCiAgICAgICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR1BhdGhTZWdM
aXN0UHJvcGVydHlUZWFyT2ZmLmNwcAogCiAgICAgbGludXgtZysrKjpDT05GSUcoZGVidWcsIGRl
YnVnfHJlbGVhc2UpOmlzRXF1YWwoUVRfQVJDSCxpMzg2KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gOTA2MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5
KQpAQCAtNjY0NzMsNiArNjY0NzMsMTQgQEAKIAkJCQlOYW1lPSJwcm9wZXJ0aWVzIgogCQkJCT4K
IAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xwcm9wZXJ0aWVzXFNWR0F0dHJp
YnV0ZVRvUHJvcGVydHlNYXAuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXHByb3BlcnRpZXNcU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0
eU1hcC5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cc3ZnXHByb3BlcnRpZXNcU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9m
Zi5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtNjY1MzMsNiArNjY1NDEsMTAgQEAKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xwcm9w
ZXJ0aWVzXFNWR1Byb3BlcnR5SW5mby5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxl
CiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXHByb3BlcnRpZXNcU1ZHUHJvcGVydHlUZWFyT2Zm
LmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtODYsNiArODYsNyBAQAogCQkwODE2NjhEQTEyNTYwM0Q1MDA2RjI1REUgLyogU1ZHVGV4
dExheW91dEVuZ2luZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDgxNjY4RDgxMjU2MDNENTAwNkYyNURFIC8qIFNWR1RleHRMYXlvdXRFbmdpbmUuaCAq
LzsgfTsKIAkJMDgxQUE4REExMTExMjM3RTAwMkFCMDZFIC8qIFNWR0VsZW1lbnRSYXJlRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxQUE4RDkx
MTExMjM3RTAwMkFCMDZFIC8qIFNWR0VsZW1lbnRSYXJlRGF0YS5oICovOyB9OwogCQkwODFDREZC
RjEyNkVDRkU4MDBEMjE1Q0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxQ0RGQkUxMjZF
Q0ZFODAwRDIxNUNBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwODFERDQ5QzEzQkEx
QTYwMDBEQzc2MjcgLyogU1ZHUHJvcGVydHlJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODFERDQ5QjEzQkExQTYwMDBEQzc2MjcgLyogU1ZHUHJv
cGVydHlJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMDgxRUJGM0EwRkQzNEY0MTAwREE3NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxRUJGMzgwRkQz
NEY0MTAwREE3NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIuY3BwICovOyB9OwogCQkwODFFQkYzQjBG
RDM0RjQxMDBEQTc1NTkgLyogU1ZHRmlsdGVyQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxRUJGMzkwRkQzNEY0MTAwREE3NTU5IC8qIFNW
R0ZpbHRlckJ1aWxkZXIuaCAqLzsgfTsKIAkJMDgyM0QxNTkxMjdBRDZBQzAwMEVCQzk1IC8qIFNW
R0FuaW1hdGVkSW50ZWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDgyM0QxNTgxMjdBRDZBQzAwMEVCQzk1IC8qIFNWR0FuaW1hdGVkSW50ZWdlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjgs
NiArMTY5LDggQEAKIAkJMDhGMEJGQzYxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRNZXRyaWNz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEYwQkZD
MTEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dE1ldHJpY3MuaCAqLzsgfTsKIAkJMDhGMkYwMDkx
MjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMkYwMDcxMjEzRTYxNzAwRENFQzQ4
IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwICovOyB9OwogCQkwOEYyRjAwQTEyMTNFNjE3MDBE
Q0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlcklt
YWdlUmVzb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwOEZCMTdDMTEzQkM3RTkxMDAwNDAwODYgLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0
eU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
OEZCMTdDMDEzQkM3RTkxMDAwNDAwODYgLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAg
Ki87IH07CisJCTA4RkIzRjg0MTNCQzc1NEMwMDk5RkMxOCAvKiBTVkdBdHRyaWJ1dGVUb1Byb3Bl
cnR5TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
OEZCM0Y4MzEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4RkUwQkM1
MTI3RTJBQzEwMDBDNEZCNSAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RkUwQkM0MTI3RTJB
QzEwMDBDNEZCNSAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwOEZGMTAyMDEyOTUwRjVB
MDBGMDAyNzYgLyogU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGRjEwMUYxMjk1MEY1OTAwRjAw
Mjc2IC8qIFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmNwcCAqLzsgfTsKIAkJMEE0ODQ0
OTkwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRMaW5raW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29m
dExpbmtpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNjQ1Myw2ICs2NDU2LDcgQEAKIAkJMDgxNjY4RDgxMjU2MDNENTAwNkYyNURFIC8qIFNW
R1RleHRMYXlvdXRFbmdpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
VGV4dExheW91dEVuZ2luZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODFBQThE
OTExMTEyMzdFMDAyQUIwNkUgLyogU1ZHRWxlbWVudFJhcmVEYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0VsZW1lbnRSYXJlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwODFDREZCRTEyNkVDRkU4MDBEMjE1Q0EgLyogU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVN5bmNocm9uaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdB
bmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTA4MURENDlCMTNCQTFBNjAwMERDNzYyNyAvKiBTVkdQcm9wZXJ0eUluZm8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJvcGVydHlJbmZvLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA4MUVCRjM4MEZEMzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJC
dWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0ZpbHRl
ckJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODFFQkYzOTBGRDM0
RjQxMDBEQTc1NTkgLyogU1ZHRmlsdGVyQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTVkdGaWx0ZXJCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA4MjNEMTU4MTI3QUQ2QUMwMDBFQkM5NSAvKiBTVkdBbmltYXRlZEludGVnZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRJbnRlZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NTQ3LDYgKzY1NTEsOCBAQAogCQkwOEYwQkZDMTEy
NTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dE1ldHJpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHVGV4dE1ldHJpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDhGMkYwMDcxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVySW1hZ2VSZXNvdXJjZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RjJGMDA4MTIxM0U2MTcwMERDRUM0
OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbmRlckltYWdlUmVzb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MDhGQjE3QzAxM0JDN0U5MTAwMDQwMDg2IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQXR0cmlidXRlVG9Qcm9w
ZXJ0eU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4RkIzRjgzMTNCQzc1
NEMwMDk5RkMxOCAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGRTBCQzQxMjdFMkFDMTAwMEM0RkI1IC8qIFNWR0FuaW1h
dGVkUHJlc2VydmVBc3BlY3RSYXRpby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDhGRjEwMUYxMjk1MEY1OTAwRjAwMjc2IC8qIFNWR1BhdGhTZWdMaXN0UHJvcGVy
dHlUZWFyT2ZmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1Bh
dGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEE0ODQ0OTgwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRMaW5raW5nLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvZnRMaW5raW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMjc0OCwxMSArMTI3NTQsMTQgQEAKIAkJCQkwODhBMERGRjEyNkVGMURCMDA5
NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJCQkwODUyNUU2MjEy
NzhDMDAxMDBBODQ3NzggLyogU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCAqLywK
IAkJCQkwODVBMTU5MjEyODlBOEREMDAyNzEwRTMgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
UHJvcGVydHlUZWFyT2ZmLmggKi8sCisJCQkJMDhGQjE3QzAxM0JDN0U5MTAwMDQwMDg2IC8qIFNW
R0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwICovLAorCQkJCTA4RkIzRjgzMTNCQzc1NEMwMDk5
RkMxOCAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmggKi8sCiAJCQkJMDgxMDc2NDMxMjgy
ODU1NjAwN0M2M0JBIC8qIFNWR0xpc3RQcm9wZXJ0eS5oICovLAogCQkJCTA4OEEwRTAwMTI2RUYx
REIwMDk3OEY3QSAvKiBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkJMDhGRjEwMUYx
Mjk1MEY1OTAwRjAwMjc2IC8qIFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmNwcCAqLywK
IAkJCQkwODRBMDgyODEyOEQ3ODY3MDAyREIxRjEgLyogU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRl
YXJPZmYuaCAqLywKIAkJCQkwODhBMEUwMTEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHku
aCAqLywKKwkJCQkwODFERDQ5QjEzQkExQTYwMDBEQzc2MjcgLyogU1ZHUHJvcGVydHlJbmZvLmgg
Ki8sCiAJCQkJMDg4QTBFMDIxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VGVhck9mZi5o
ICovLAogCQkJCTA4OEEwRTAzMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRyYWl0cy5o
ICovLAogCQkJCTA4ODBGNzBEMTI4MkI0NkQwMDk0ODUwNSAvKiBTVkdTdGF0aWNMaXN0UHJvcGVy
dHlUZWFyT2ZmLmggKi8sCkBAIC0yMzA5NCw2ICsyMzEwMyw4IEBACiAJCQkJMDg2Mzk1MTYxM0I1
RkU1NzAwQkIzNDREIC8qIFNWR0FuaW1hdGVkUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDMx
QTJGOUMxM0I2RjJCMDAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1QUJCNzg3MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJl
YWtJdGVyYXRvclBvb2xJQ1UuaCBpbiBIZWFkZXJzICovLAorCQkJCTA4MURENDlDMTNCQTFBNjAw
MERDNzYyNyAvKiBTVkdQcm9wZXJ0eUluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTA4RkIzRjg0
MTNCQzc1NEMwMDk5RkMxOCAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4Mjg4OUI0RDEzQzYyMzkyMDA5QTYxNTYgLyogSW5zcGVjdG9yU3R5bGVUZXh0
RWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKQEAgLTI1ODYxLDYgKzI1ODcyLDcgQEAKIAkJCQk0MzFBMkZENzEz
Qjc3MDdBMDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQzMUEzMDIxMTNCODlEQ0MwMDc3OTFFNCAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNw
ZWN0UmF0aW8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDMxQTMwODgxM0I4Rjk3ODAwNzc5MUU0
IC8qIFNWR0FuaW1hdGVkQm9vbGVhbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwOEZCMTdDMTEz
QkM3RTkxMDAwNDAwODYgLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0M0Y2RkQ5NjEzQkNEMEIxMDAyMjQwNTIgLyogU1ZHQW5pbWF0ZWRJbnRlZ2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgyODg5QjRDMTNDNjIzOTIwMDlBNjE1NiAvKiBJbnNw
ZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDE1ICs0OCwyNSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRp
b25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0FFbGVtZW50LCBTVkdOYW1lczo6dGFyZ2V0
QXR0ciwgU1ZHVGFyZ2V0LCBzdmdUYXJnZXQpCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0FF
bGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKLURFRklORV9BTklNQVRF
RF9CT09MRUFOKFNWR0FFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRF
RF9TVFJJTkcoU1ZHQUVsZW1lbnQsIFNWR05hbWVzOjp0YXJnZXRBdHRyLCBTVkdUYXJnZXQsIHN2
Z1RhcmdldCkKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0FFbGVtZW50LCBYTGlua05h
bWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihT
VkdBRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorRU5EX0RF
RklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHQUVsZW1lbnQpCisgICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZ
KHN2Z1RhcmdldCkKKyAgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikK
KyAgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCkKKyAgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAog
aW5saW5lIFNWR0FFbGVtZW50OjpTVkdBRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1l
czo6YVRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQUVsZW1lbnQo
KTsKIH0KIAogUGFzc1JlZlB0cjxTVkdBRWxlbWVudD4gU1ZHQUVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xMzIsNjAg
KzE0Miw2IEBAIHZvaWQgU1ZHQUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY28KICAgICB9
CiB9CiAKLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdBRWxlbWVudDo6YXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAg
ICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdBRWxl
bWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp0YXJnZXRBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0K
LXZvaWQgU1ZHQUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAg
ICAgc3luY2hyb25pemVTVkdUYXJnZXQoKTsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0g
ICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBT
VkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAg
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5h
bWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0YXJnZXRBdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplU1ZHVGFyZ2V0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
U1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBz
eW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewot
ICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBh
dHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLX0KLQogUmVuZGVyT2JqZWN0KiBTVkdBRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgaWYgKHN0YXRpY19jYXN0PFNW
R0VsZW1lbnQqPihwYXJlbnROb2RlKCkpLT5pc1RleHRDb250ZW50KCkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQUVsZW1lbnQuaAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTAgKzUxLDYgQEAgcHJpdmF0ZToK
ICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmly
dHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
LQotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAg
ICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIApAQCAtNjcsMTcgKzYzLDE4IEBAIHByaXZhdGU6
CiAKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29u
c3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLQotICAgIC8vIFRo
aXMgZGVjbGFyYXRpb24gdXNlZCB0byBkZWZpbmUgYSBub24tdmlydHVhbCAiU3RyaW5nJiB0YXJn
ZXQoKSBjb25zdCIgbWV0aG9kLCB0aGF0IGNsYXNoZXMgd2l0aCAidmlydHVhbCBTdHJpbmcgRWxl
bWVudDo6dGFyZ2V0KCkgY29uc3QiLgotICAgIC8vIFRoYXQncyB3aHkgaXQgaGFzIGJlZW4gcmVu
YW1lZCB0byAic3ZnVGFyZ2V0IiwgdGhlIENvZGVHZW5lcmF0b3JzIHRha2UgY2FyZSBvZiBjYWxs
aW5nIHN2Z1RhcmdldEFuaW1hdGVkKCkgaW5zdGVhZCBvZiB0YXJnZXRBbmltYXRlZCgpLCBzZWUg
Q29kZUdlbmVyYXRvci5wbS4KLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhTVkdUYXJnZXQs
IHN2Z1RhcmdldCkKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERFQ0xBUkVfQU5JTUFU
RURfU1RSSU5HKEhyZWYsIGhyZWYpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR0FFbGVtZW50KQorICAgICAgICAvLyBUaGlzIGRlY2xhcmF0aW9uIHVz
ZWQgdG8gZGVmaW5lIGEgbm9uLXZpcnR1YWwgIlN0cmluZyYgdGFyZ2V0KCkgY29uc3QiIG1ldGhv
ZCwgdGhhdCBjbGFzaGVzIHdpdGggInZpcnR1YWwgU3RyaW5nIEVsZW1lbnQ6OnRhcmdldCgpIGNv
bnN0Ii4KKyAgICAgICAgLy8gVGhhdCdzIHdoeSBpdCBoYXMgYmVlbiByZW5hbWVkIHRvICJzdmdU
YXJnZXQiLCB0aGUgQ29kZUdlbmVyYXRvcnMgdGFrZSBjYXJlIG9mIGNhbGxpbmcgc3ZnVGFyZ2V0
QW5pbWF0ZWQoKSBpbnN0ZWFkIG9mIHRhcmdldEFuaW1hdGVkKCksIHNlZSBDb2RlR2VuZXJhdG9y
LnBtLgorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhTVkdUYXJnZXQsIHN2Z1Rhcmdl
dCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElF
UworCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJl
ZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMp
OyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBT
VkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9u
aXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCShyZXZpc2lv
biA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMywxMyArMzMsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLURFRklORV9BTklNQVRFRF9TVFJJ
TkcoU1ZHQWx0R2x5cGhFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikK
K0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NU
UklORyhTVkdBbHRHbHlwaEVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVm
KQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHQWx0R2x5cGhFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKGhyZWYpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9Q
Uk9QRVJUSUVTCiAKIGlubGluZSBTVkdBbHRHbHlwaEVsZW1lbnQ6OlNWR0FsdEdseXBoRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAg
OiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjphbHRHbHlwaFRhZykpOworICAgIHJlZ2lzdGVyQW5p
bWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQWx0R2x5cGhFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8
U1ZHQWx0R2x5cGhFbGVtZW50PiBTVkdBbHRHbHlwaEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC00NywyOCArNTQsNiBA
QCBQYXNzUmVmUHRyPFNWR0FsdEdseXBoRWxlbWVudD4gU1ZHQWx0R2x5CiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTVkdBbHRHbHlwaEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAot
dm9pZCBTVkdBbHRHbHlwaEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5h
bWUoKSB8fCBTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAg
ICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IFNWR0FsdEdseXBoRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdBbHRHbHlwaEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKLQotICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRl
ZFN0cmluZyk7Ci19Ci0KIHZvaWQgU1ZHQWx0R2x5cGhFbGVtZW50OjpzZXRHbHlwaFJlZihjb25z
dCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBlYyA9IE5PX01PRElG
SUNBVElPTl9BTExPV0VEX0VSUjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlw
aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhF
bGVtZW50LmgJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEds
eXBoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxOCArNDUsMTIgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBTVkdBbHRHbHlwaEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBR
dWFsaWZpZWROYW1lJik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBi
b29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OwogCi0gICAgLy8gQW5p
bWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0KLSAgICAvLyBTVkdVUklSZWZlcmVuY2UKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgIEJFR0lOX0RFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdBbHRHbHlwaEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcg
KzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdBbmltYXRlRWxlbWVudDo6U1ZHQW5p
bWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQogICAgIDogU1ZHQW5pbWF0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKLSAgICAs
IG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKEFuaW1hdGVkU3RyaW5nKQorICAgICwgbV9hbmltYXRl
ZFByb3BlcnR5VHlwZShBbmltYXRlZFN0cmluZykKICAgICAsIG1fZnJvbVByb3BlcnR5VmFsdWVU
eXBlKFJlZ3VsYXJQcm9wZXJ0eVZhbHVlKQogICAgICwgbV90b1Byb3BlcnR5VmFsdWVUeXBlKFJl
Z3VsYXJQcm9wZXJ0eVZhbHVlKQogewpAQCAtMTA5LDE0ICsxMDksMTkgQEAgYm9vbCBTVkdBbmlt
YXRlRWxlbWVudDo6aGFzVmFsaWRBdHRyaWJ1dAogICAgIGlmICghdGFyZ2V0RWxlbWVudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBkZXRlcm1pbmVBbmltYXRlZEF0
dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVudCkgIT0gQW5pbWF0ZWRVbmtub3duOworICAgIHJldHVy
biBkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0YXJnZXRFbGVtZW50KSAhPSBBbmltYXRl
ZFVua25vd247CiB9CiAKLUFuaW1hdGVkQXR0cmlidXRlVHlwZSBTVkdBbmltYXRlRWxlbWVudDo6
ZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQp
IGNvbnN0CitBbmltYXRlZFByb3BlcnR5VHlwZSBTVkdBbmltYXRlRWxlbWVudDo6ZGV0ZXJtaW5l
QW5pbWF0ZWRQcm9wZXJ0eVR5cGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgY29uc3QKIHsK
ICAgICBBU1NFUlQodGFyZ2V0RWxlbWVudCk7CiAKLSAgICBBbmltYXRlZEF0dHJpYnV0ZVR5cGUg
dHlwZSA9IHRhcmdldEVsZW1lbnQtPmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUoKSk7CisgICAgVmVjdG9yPEFuaW1hdGVkUHJvcGVydHlUeXBlPiBwcm9wZXJ0
eVR5cGVzOworICAgIHRhcmdldEVsZW1lbnQtPmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUoKSwgcHJvcGVydHlUeXBlcyk7CisgICAgaWYgKHByb3BlcnR5VHlw
ZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gQW5pbWF0ZWRVbmtub3duOworCisgICAgQW5p
bWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSA9IHByb3BlcnR5VHlwZXNbMF07CiAgICAgaWYgKGhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVDb2xvclRhZykgJiYgdHlwZSAhPSBBbmltYXRlZENvbG9y
KQogICAgICAgICByZXR1cm4gQW5pbWF0ZWRVbmtub3duOwogCkBAIC0xNDIsNyArMTQ3LDcgQEAg
dm9pZCBTVkdBbmltYXRlRWxlbWVudDo6ZGV0ZXJtaW5lUHJvcGVydAogICAgIGlmIChpbmhlcml0
c0Zyb21Qcm9wZXJ0eSh0YXJnZXRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lKCksIHRvKSkKICAgICAg
ICAgbV90b1Byb3BlcnR5VmFsdWVUeXBlID0gSW5oZXJpdFZhbHVlOwogCi0gICAgaWYgKG1fYW5p
bWF0ZWRBdHRyaWJ1dGVUeXBlICE9IEFuaW1hdGVkQ29sb3IpCisgICAgaWYgKG1fYW5pbWF0ZWRQ
cm9wZXJ0eVR5cGUgIT0gQW5pbWF0ZWRDb2xvcikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IGlmIChhdHRyaWJ1dGVWYWx1ZUlzQ3VycmVudENvbG9yKGZyb20pKQpAQCAtMTU1LDE2ICsxNjAs
MTYgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZQogewogICAgIEFT
U0VSVChyZXN1bHRFbGVtZW50KTsKICAgICBBU1NFUlQocGVyY2VudGFnZSA+PSAwICYmIHBlcmNl
bnRhZ2UgPD0gMSk7Ci0gICAgQVNTRVJUKG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlICE9IEFuaW1h
dGVkRW51bWVyYXRpb24pOwotICAgIEFTU0VSVChtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSAhPSBB
bmltYXRlZFRyYW5zZm9ybUxpc3QpOwotICAgIEFTU0VSVChtX2FuaW1hdGVkQXR0cmlidXRlVHlw
ZSAhPSBBbmltYXRlZFVua25vd24pOworICAgIEFTU0VSVChtX2FuaW1hdGVkUHJvcGVydHlUeXBl
ICE9IEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIEFTU0VSVChtX2FuaW1hdGVkUHJvcGVydHlU
eXBlICE9IEFuaW1hdGVkVHJhbnNmb3JtTGlzdCk7CisgICAgQVNTRVJUKG1fYW5pbWF0ZWRQcm9w
ZXJ0eVR5cGUgIT0gQW5pbWF0ZWRVbmtub3duKTsKICAgICBBU1NFUlQobV9hbmltYXRvcik7CiAg
ICAgQVNTRVJUKG1fZnJvbVR5cGUpOwogICAgIEFTU0VSVChtX3RvVHlwZSk7CiAKICAgICBTVkdB
bmltYXRlRWxlbWVudCogcmVzdWx0QW5pbWF0aW9uRWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0Fu
aW1hdGVFbGVtZW50Kj4ocmVzdWx0RWxlbWVudCk7CiAgICAgQVNTRVJUKHJlc3VsdEFuaW1hdGlv
bkVsZW1lbnQtPm1fYW5pbWF0ZWRUeXBlKTsKLSAgICBBU1NFUlQocmVzdWx0QW5pbWF0aW9uRWxl
bWVudC0+bV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPT0gbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUp
OworICAgIEFTU0VSVChyZXN1bHRBbmltYXRpb25FbGVtZW50LT5tX2FuaW1hdGVkUHJvcGVydHlU
eXBlID09IG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUpOwogICAgIEFTU0VSVChyZXN1bHRBbmltYXRp
b25FbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlVGFnKQogICAgICAgICB8fCBy
ZXN1bHRBbmltYXRpb25FbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlQ29sb3JU
YWcpIAogICAgICAgICB8fCByZXN1bHRBbmltYXRpb25FbGVtZW50LT5oYXNUYWdOYW1lKFNWR05h
bWVzOjpzZXRUYWcpKTsKQEAgLTE4Nyw3ICsxOTIsNyBAQCBib29sIFNWR0FuaW1hdGVFbGVtZW50
OjpjYWxjdWxhdGVGcm9tQW5kCiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSA9IGRldGVybWluZUFuaW1h
dGVkQXR0cmlidXRlVHlwZSh0YXJnZXRFbGVtZW50KTsKKyAgICBtX2FuaW1hdGVkUHJvcGVydHlU
eXBlID0gZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUodGFyZ2V0RWxlbWVudCk7CiAKICAg
ICBlbnN1cmVBbmltYXRvcigpLT5jYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMobV9mcm9tVHlwZSwg
bV90b1R5cGUsIGZyb21TdHJpbmcsIHRvU3RyaW5nKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIw
MCw3ICsyMDUsNyBAQCBib29sIFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVCghaGFzVGFnTmFtZShTVkdOYW1lczo6
c2V0VGFnKSk7Ci0gICAgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPSBkZXRlcm1pbmVBbmltYXRl
ZEF0dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVudCk7CisgICAgbV9hbmltYXRlZFByb3BlcnR5VHlw
ZSA9IGRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKHRhcmdldEVsZW1lbnQpOwogCiAgICAg
ZW5zdXJlQW5pbWF0b3IoKS0+Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKG1fZnJvbVR5cGUsIG1f
dG9UeXBlLCBmcm9tU3RyaW5nLCBieVN0cmluZyk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0yMTAs
NyArMjE1LDcgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6cmVzZXRUb0Jhc2VWYWx1ZQogewog
ICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CiAg
ICAgQVNTRVJUKHRhcmdldEVsZW1lbnQpOwotICAgIG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlID0g
ZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKHRhcmdldEVsZW1lbnQpOworICAgIG1fYW5p
bWF0ZWRQcm9wZXJ0eVR5cGUgPSBkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0YXJnZXRF
bGVtZW50KTsKIAogICAgIGlmICghbV9hbmltYXRlZFR5cGUpCiAgICAgICAgIG1fYW5pbWF0ZWRU
eXBlID0gZW5zdXJlQW5pbWF0b3IoKS0+Y29uc3RydWN0RnJvbVN0cmluZyhiYXNlU3RyaW5nKTsK
QEAgLTIyMCw5ICsyMjUsOSBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZh
bHVlCiAgICAgCiB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCgp
CiB7Ci0gICAgQVNTRVJUKG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlICE9IEFuaW1hdGVkRW51bWVy
YXRpb24pOwotICAgIEFTU0VSVChtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSAhPSBBbmltYXRlZFRy
YW5zZm9ybUxpc3QpOwotICAgIEFTU0VSVChtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSAhPSBBbmlt
YXRlZFVua25vd24pOworICAgIEFTU0VSVChtX2FuaW1hdGVkUHJvcGVydHlUeXBlICE9IEFuaW1h
dGVkRW51bWVyYXRpb24pOworICAgIEFTU0VSVChtX2FuaW1hdGVkUHJvcGVydHlUeXBlICE9IEFu
aW1hdGVkVHJhbnNmb3JtTGlzdCk7CisgICAgQVNTRVJUKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUg
IT0gQW5pbWF0ZWRVbmtub3duKTsKICAgICBBU1NFUlQobV9hbmltYXRlZFR5cGUpOwogCiAgICAg
c2V0VGFyZ2V0QXR0cmlidXRlQW5pbWF0ZWRWYWx1ZShtX2FuaW1hdGVkVHlwZS0+dmFsdWVBc1N0
cmluZygpKTsKQEAgLTIzNCw3ICsyMzksNyBAQCBmbG9hdCBTVkdBbmltYXRlRWxlbWVudDo6Y2Fs
Y3VsYXRlRGlzdGFuCiAgICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdl
dEVsZW1lbnQoKTsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJldHVybiAtMTsK
LSAgICBtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSA9IGRldGVybWluZUFuaW1hdGVkQXR0cmlidXRl
VHlwZSh0YXJnZXRFbGVtZW50KTsKKyAgICBtX2FuaW1hdGVkUHJvcGVydHlUeXBlID0gZGV0ZXJt
aW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUodGFyZ2V0RWxlbWVudCk7CiAgICAgCiAgICAgcmV0dXJu
IGVuc3VyZUFuaW1hdG9yKCktPmNhbGN1bGF0ZURpc3RhbmNlKGZyb21TdHJpbmcsIHRvU3RyaW5n
KTsKIH0KQEAgLTI0Miw3ICsyNDcsNyBAQCBmbG9hdCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3Vs
YXRlRGlzdGFuCiBTVkdBbmltYXRlZFR5cGVBbmltYXRvciogU1ZHQW5pbWF0ZUVsZW1lbnQ6OmVu
c3VyZUFuaW1hdG9yKCkKIHsKICAgICBpZiAoIW1fYW5pbWF0b3IpCi0gICAgICAgIG1fYW5pbWF0
b3IgPSBTVkdBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZSh0aGlzLCB0YXJnZXRFbGVtZW50KCksIG1f
YW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKTsKKyAgICAgICAgbV9hbmltYXRvciA9IFNWR0FuaW1hdG9y
RmFjdG9yeTo6Y3JlYXRlKHRoaXMsIHRhcmdldEVsZW1lbnQoKSwgbV9hbmltYXRlZFByb3BlcnR5
VHlwZSk7CiAgICAgcmV0dXJuIG1fYW5pbWF0b3IuZ2V0KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5oCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0
OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBhZGp1c3RGb3JDdXJyZW50Q29sb3IoU1ZH
RWxlbWVudCogdGFyZ2V0RWxlbWVudCwgQ29sb3ImKTsKICAgICB2b2lkIGFkanVzdEZvckluaGVy
aXRhbmNlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBT
dHJpbmcmIHZhbHVlKTsKICAgICAKLSAgICBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgZGV0ZXJtaW5l
QW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKFNWR0VsZW1lbnQqKSBjb25zdDsKKyAgICBBbmltYXRlZFBy
b3BlcnR5VHlwZSBkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZShTVkdFbGVtZW50KikgY29u
c3Q7CiAgICAgdm9pZCBkZXRlcm1pbmVQcm9wZXJ0eVZhbHVlVHlwZXMoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJik7CiAgICAgCiAgICAgQW5pbWF0ZWRQcm9wZXJ0eVZhbHVlVHlwZSBmcm9t
UHJvcGVydHlWYWx1ZVR5cGUoKSB7IHJldHVybiBtX2Zyb21Qcm9wZXJ0eVZhbHVlVHlwZTsgfQpA
QCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yKiBl
bnN1cmVBbmltYXRvcigpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBoYXNWYWxpZEF0dHJpYnV0
ZVR5cGUoKSBjb25zdDsKLSAgICBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgbV9hbmltYXRlZEF0dHJp
YnV0ZVR5cGU7CisgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgbV9hbmltYXRlZFByb3BlcnR5VHlw
ZTsKIAogICAgIEFuaW1hdGVkUHJvcGVydHlWYWx1ZVR5cGUgbV9mcm9tUHJvcGVydHlWYWx1ZVR5
cGU7CiAgICAgQW5pbWF0ZWRQcm9wZXJ0eVZhbHVlVHlwZSBtX3RvUHJvcGVydHlWYWx1ZVR5cGU7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxl
bWVudC5jcHAJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVUcmFuc2Zvcm1FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsMTggKzY2LDIxIEBA
IGJvb2wgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6Omhhc1ZhbGkKICAgICBpZiAoIXRhcmdl
dEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICByZXR1cm4gZGV0ZXJt
aW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKHRhcmdldEVsZW1lbnQpID09IEFuaW1hdGVkVHJhbnNm
b3JtTGlzdDsKKyAgICByZXR1cm4gZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUodGFyZ2V0
RWxlbWVudCkgPT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0OwogfQogCi1BbmltYXRlZEF0dHJpYnV0
ZVR5cGUgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmRldGVybWluZUFuaW1hdGVkQXR0cmli
dXRlVHlwZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBjb25zdAorQW5pbWF0ZWRQcm9wZXJ0
eVR5cGUgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmRldGVybWluZUFuaW1hdGVkUHJvcGVy
dHlUeXBlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHRh
cmdldEVsZW1lbnQpOwogICAgIAogICAgIC8vIEp1c3QgdHJhbnNmb3JtIGxpc3RzIGNhbiBiZSBh
bmltYXRlZCB3aXRoIDxhbmltYXRlVHJhbnNmb3JtPgogICAgIC8vIGh0dHA6Ly93d3cudzMub3Jn
L1RSL1NWRy9hbmltYXRlLmh0bWwjQW5pbWF0aW9uQXR0cmlidXRlc0FuZFByb3BlcnRpZXMKLSAg
ICBpZiAodGFyZ2V0RWxlbWVudC0+YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUoYXR0
cmlidXRlTmFtZSgpKSAhPSBBbmltYXRlZFRyYW5zZm9ybUxpc3QpCisgICAgVmVjdG9yPEFuaW1h
dGVkUHJvcGVydHlUeXBlPiBwcm9wZXJ0eVR5cGVzOworICAgIHRhcmdldEVsZW1lbnQtPmFuaW1h
dGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUoKSwgcHJvcGVydHlUeXBl
cyk7CisgICAgaWYgKHByb3BlcnR5VHlwZXMuaXNFbXB0eSgpIHx8IHByb3BlcnR5VHlwZXNbMF0g
IT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KQogICAgICAgICByZXR1cm4gQW5pbWF0ZWRVbmtub3du
OwogCisgICAgQVNTRVJUKHByb3BlcnR5VHlwZXMuc2l6ZSgpID09IDEpOwogICAgIHJldHVybiBB
bmltYXRlZFRyYW5zZm9ybUxpc3Q7CiB9CiAKQEAgLTEzMSw3ICsxMzQsNyBAQCBzdGF0aWMgU1ZH
VHJhbnNmb3JtTGlzdCogdHJhbnNmb3JtTGlzdEZvCiB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1F
bGVtZW50OjpyZXNldFRvQmFzZVZhbHVlKGNvbnN0IFN0cmluZyYgYmFzZVZhbHVlKQogewogICAg
IFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7Ci0gICAg
aWYgKCF0YXJnZXRFbGVtZW50IHx8IGRldGVybWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZSh0YXJn
ZXRFbGVtZW50KSA9PSBBbmltYXRlZFVua25vd24pCisgICAgaWYgKCF0YXJnZXRFbGVtZW50IHx8
IGRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKHRhcmdldEVsZW1lbnQpID09IEFuaW1hdGVk
VW5rbm93bikKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IFRoaXMgbWlnaHQgbm90
IGJlIGNvcnJlY3QgZm9yIGFjY3VtdWxhdGVkIHN1bS4gTmVlZHMgY2hlY2tpbmcuCkBAIC0xNTQs
NyArMTU3LDcgQEAgdm9pZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6cmVzZXRUbwogdm9p
ZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9h
dCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXQsIFNWR1NNSUxFbGVtZW50KikKIHsKICAgICBT
VkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFyZ2V0RWxlbWVudCgpOwotICAgIGlm
ICghdGFyZ2V0RWxlbWVudCB8fCBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0
RWxlbWVudCkgPT0gQW5pbWF0ZWRVbmtub3duKQorICAgIGlmICghdGFyZ2V0RWxlbWVudCB8fCBk
ZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0YXJnZXRFbGVtZW50KSA9PSBBbmltYXRlZFVu
a25vd24pCiAgICAgICAgIHJldHVybjsKICAgICBTVkdUcmFuc2Zvcm1MaXN0KiB0cmFuc2Zvcm1M
aXN0ID0gdHJhbnNmb3JtTGlzdEZvcih0YXJnZXRFbGVtZW50KTsKICAgICBBU1NFUlQodHJhbnNm
b3JtTGlzdCk7CkBAIC0yMDMsNyArMjA2LDcgQEAgU1ZHVHJhbnNmb3JtIFNWR0FuaW1hdGVUcmFu
c2Zvcm1FbGVtZW50Ogogdm9pZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6YXBwbHlSZXN1
bHRzVG9UYXJnZXQoKQogewogICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50
YXJnZXRFbGVtZW50KCk7Ci0gICAgaWYgKCF0YXJnZXRFbGVtZW50IHx8IGRldGVybWluZUFuaW1h
dGVkQXR0cmlidXRlVHlwZSh0YXJnZXRFbGVtZW50KSA9PSBBbmltYXRlZFVua25vd24pCisgICAg
aWYgKCF0YXJnZXRFbGVtZW50IHx8IGRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKHRhcmdl
dEVsZW1lbnQpID09IEFuaW1hdGVkVW5rbm93bikKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
V2UgYWNjdW11bGF0ZSB0byB0aGUgdGFyZ2V0IGVsZW1lbnQgdHJhbnNmb3JtIGxpc3Qgc28gdGhl
cmUgaXMgbm90IG11Y2ggdG8gZG8gaGVyZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw3ICs0MCw3IEBAIHByaXZhdGU6CiAgICAgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgCiAgICAgdmlydHVhbCBi
b29sIGhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpIGNvbnN0OwotICAgIEFuaW1hdGVkQXR0cmlidXRl
VHlwZSBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUoU1ZHRWxlbWVudCopIGNvbnN0Owor
ICAgIEFuaW1hdGVkUHJvcGVydHlUeXBlIGRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKFNW
R0VsZW1lbnQqKSBjb25zdDsKIAogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShB
dHRyaWJ1dGUqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaAkocmV2
aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHR5cGVkZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eVRlYXJPZmY8U1ZHQW4KIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHQW5pbWF0ZWRBbmds
ZSwgU1ZHQW5nbGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNkZWZpbmUgREVG
SU5FX0FOSU1BVEVEX0FOR0xFX01VTFRJUExFX1dSQVBQRVJTKE93bmVyVHlwZSwgRE9NQXR0cmli
dXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3Bl
cnR5KSBcCi1ERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUs
IFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFNWR0FuaW1hdGVkQW5nbGUsIFNWR0FuZ2xlLCBV
cHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFu
aW1hdGVkQW5nbGUsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVu
dGlmaWVyLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiAjaWYgRU5BQkxFKFNWR19B
TklNQVRJT04pCiBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uaAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMz
LDggQEAgdHlwZWRlZiBTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZgogREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUWShTVkdBbmltYXRlZEJvb2xlYW4sIGJvb2wsIFVwcGVyUHJvcGVydHks
IExvd2VyUHJvcGVydHkpCiAKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oT3duZXJU
eXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFRklO
RV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRl
LmxvY2FsTmFtZSgpLCBTVkdBbmltYXRlZEJvb2xlYW4sIGJvb2wsIFVwcGVyUHJvcGVydHksIExv
d2VyUHJvcGVydHkpCitERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWRCb29sZWFuLCBP
d25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBVcHBlclBy
b3BlcnR5LCBMb3dlclByb3BlcnR5KQogCi0gICAgCiAjaWYgRU5BQkxFKFNWR19BTklNQVRJT04p
CiBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmgJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzMs
MTAgKzMzLDcgQEAgdHlwZWRlZiBTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZgogREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFy
T2ZmPEVudW1UeXBlPiwgRW51bVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAK
ICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKE93bmVyVHlwZSwgRE9NQXR0cmli
dXRlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5LCBFbnVtVHlwZSkgXAotREVGSU5FX0FO
SU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9j
YWxOYW1lKCksIFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY8RW51bVR5cGU+
LCBFbnVtVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKLQotI2RlZmluZSBERUZJ
TkVfQU5JTUFURURfRU5VTUVSQVRJT05fTVVMVElQTEVfV1JBUFBFUlMoT3duZXJUeXBlLCBET01B
dHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFVwcGVyUHJvcGVydHksIExvd2Vy
UHJvcGVydHksIEVudW1UeXBlKSBcCi1ERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBl
LCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFNWR0FuaW1hdGVkRW51
bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY8RW51bVR5cGU+LCBFbnVtVHlwZSwgVXBwZXJQcm9wZXJ0
eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZEVudW1l
cmF0aW9uLCBPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgp
LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmgJKHJldmlzaW9u
IDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCwxMCArMzQsMTEgQEAgdHlwZWRlZiBTVkdBbmltYXRlZFN0YXRpY1By
b3BlcnR5VGVhck9mZgogREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdBbmltYXRlZEludGVn
ZXIsIGxvbmcsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNkZWZpbmUgREVGSU5F
X0FOSU1BVEVEX0lOVEVHRVIoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHks
IExvd2VyUHJvcGVydHkpIFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERP
TUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBTVkdBbmltYXRlZEludGVnZXIs
IGxvbmcsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCitERUZJTkVfQU5JTUFURURfUFJP
UEVSVFkoQW5pbWF0ZWRJbnRlZ2VyLCBPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmli
dXRlLmxvY2FsTmFtZSgpLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQogCisvLyBGSVhN
RTogVGhpcyBjdXJyZW50bHkgYW5pbWF0ZXMgYXMgbnVtYmVyLW9wdGlvbmFsLW51bWJlciwgaW5z
dGVhZCBvZiBpbnRlZ2VyLW9wdGlvbmFsLWludGVnZXIsIHdoaWNoIGlzIG1pc3NpbmcuCiAjZGVm
aW5lIERFRklORV9BTklNQVRFRF9JTlRFR0VSX01VTFRJUExFX1dSQVBQRVJTKE93bmVyVHlwZSwg
RE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBVcHBlclByb3BlcnR5LCBM
b3dlclByb3BlcnR5KSBcCi1ERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01B
dHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFNWR0FuaW1hdGVkSW50ZWdlciwg
bG9uZywgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9QUk9Q
RVJUWShBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLCBPd25lclR5cGUsIERPTUF0dHJpYnV0
ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0
eSkKIAogI2lmIEVOQUJMRShTVkdfQU5JTUFUSU9OKQogY2xhc3MgU1ZHQW5pbWF0aW9uRWxlbWVu
dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5oCShyZXZpc2lvbiA5
MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHR5cGVkZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJP
ZmY8U1ZHTGUKIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHQW5pbWF0ZWRMZW5ndGgsIFNW
R0xlbmd0aCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVf
QU5JTUFURURfTEVOR1RIKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBVcHBlclByb3BlcnR5LCBM
b3dlclByb3BlcnR5KSBcCi1ERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01B
dHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgU1ZHQW5pbWF0ZWRMZW5ndGgsIFNW
R0xlbmd0aCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9Q
Uk9QRVJUWShBbmltYXRlZExlbmd0aCwgT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIERPTUF0dHJp
YnV0ZS5sb2NhbE5hbWUoKSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2lmIEVO
QUJMRShTVkdfQU5JTUFUSU9OKQogY2xhc3MgU1ZHQW5pbWF0aW9uRWxlbWVudDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmgJKHJldmlzaW9uIDkwNjIy
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw4ICszNCw4IEBAIHR5cGVkZWYgU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlU
ZWFyT2ZmPFMKIERFQ0xBUkVfQU5JTUFURURfTElTVF9QUk9QRVJUWShTVkdBbmltYXRlZExlbmd0
aExpc3QsIFNWR0xlbmd0aExpc3QsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNk
ZWZpbmUgREVGSU5FX0FOSU1BVEVEX0xFTkdUSF9MSVNUKE93bmVyVHlwZSwgRE9NQXR0cmlidXRl
LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCi1ERUZJTkVfQU5JTUFURURfTElTVF9Q
Uk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgp
LCBTVkdBbmltYXRlZExlbmd0aExpc3QsIFNWR0xlbmd0aExpc3QsIFVwcGVyUHJvcGVydHksIExv
d2VyUHJvcGVydHkpCi0gICAgCitERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWRMZW5n
dGhMaXN0LCBPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgp
LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorCiAjaWYgRU5BQkxFKFNWR19BTklNQVRJ
T04pCiBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWROdW1iZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWROdW1iZXIuaAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWROdW1iZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0LDEwIEBA
IHR5cGVkZWYgU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYKIERFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVFkoU1ZHQW5pbWF0ZWROdW1iZXIsIGZsb2F0LCBVcHBlclByb3BlcnR5LCBMb3dl
clByb3BlcnR5KQogCiAjZGVmaW5lIERFRklORV9BTklNQVRFRF9OVU1CRVIoT3duZXJUeXBlLCBE
T01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFRklORV9BTklN
QVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2Fs
TmFtZSgpLCBTVkdBbmltYXRlZE51bWJlciwgZmxvYXQsIFVwcGVyUHJvcGVydHksIExvd2VyUHJv
cGVydHkpCitERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWROdW1iZXIsIE93bmVyVHlw
ZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHks
IExvd2VyUHJvcGVydHkpCiAKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBM
RV9XUkFQUEVSUyhPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRp
ZmllciwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX1BS
T1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVy
LCBTVkdBbmltYXRlZE51bWJlciwgZmxvYXQsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkp
CitERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlciwg
T3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFVwcGVy
UHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIGNs
YXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWROdW1iZXJMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkTnVtYmVyTGlzdC5oCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsOCBA
QCB0eXBlZGVmIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxTCiBERUNMQVJFX0FOSU1B
VEVEX0xJU1RfUFJPUEVSVFkoU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LCBTVkdOdW1iZXJMaXN0LCBV
cHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiAjZGVmaW5lIERFRklORV9BTklNQVRFRF9O
VU1CRVJfTElTVChPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQ
cm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX0xJU1RfUFJPUEVSVFkoT3duZXJUeXBlLCBET01B
dHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0
LCBTVkdOdW1iZXJMaXN0LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQotICAgIAorREVG
SU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkTnVtYmVyTGlzdCwgT3duZXJUeXBlLCBET01B
dHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQ
cm9wZXJ0eSkKKwogI2lmIEVOQUJMRShTVkdfQU5JTUFUSU9OKQogY2xhc3MgU1ZHQW5pbWF0aW9u
RWxlbWVudDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVB
c3BlY3RSYXRpby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFByZXNlcnZlQXNwZWN0UmF0aW8uaAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDkgKzM0LDggQEAgdHlwZWRlZiBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxTVkdQcgog
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8s
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8sIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAK
ICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oT3duZXJUeXBlLCBE
T01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFRklORV9BTklN
QVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2Fs
TmFtZSgpLCBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8sIFNWR1ByZXNlcnZlQXNwZWN0
UmF0aW8sIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCitERUZJTkVfQU5JTUFURURfUFJP
UEVSVFkoQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBPd25lclR5cGUsIERPTUF0dHJpYnV0
ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5
KQogCi0gICAgCiAjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCiBjbGFzcyBTVkdBbmltYXRpb25F
bGVtZW50OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRSZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5oCShyZXZpc2lv
biA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFJlY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCB0eXBlZGVmIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFy
T2ZmPEZsb2F0CiBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkUmVjdCwgRmxv
YXRSZWN0LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiAjZGVmaW5lIERFRklORV9B
TklNQVRFRF9SRUNUKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBVcHBlclByb3BlcnR5LCBMb3dl
clByb3BlcnR5KSBcCi1ERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRy
aWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgU1ZHQW5pbWF0ZWRSZWN0LCBGbG9hdFJl
Y3QsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCitERUZJTkVfQU5JTUFURURfUFJPUEVS
VFkoQW5pbWF0ZWRSZWN0LCBPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxv
Y2FsTmFtZSgpLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiAjaWYgRU5BQkxFKFNW
R19BTklNQVRJT04pCiBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmgJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0
LDcgQEAgdHlwZWRlZiBTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZgogREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUWShTVkdBbmltYXRlZFN0cmluZywgU3RyaW5nLCBVcHBlclByb3BlcnR5
LCBMb3dlclByb3BlcnR5KQogCiAjZGVmaW5lIERFRklORV9BTklNQVRFRF9TVFJJTkcoT3duZXJU
eXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFRklO
RV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRl
LmxvY2FsTmFtZSgpLCBTVkdBbmltYXRlZFN0cmluZywgU3RyaW5nLCBVcHBlclByb3BlcnR5LCBM
b3dlclByb3BlcnR5KQorREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkU3RyaW5nLCBP
d25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBVcHBlclBy
b3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiAjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCiBjbGFz
cyBTVkdBbmltYXRpb25FbGVtZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3QuaAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcg
KzMyLDcgQEAgdHlwZWRlZiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eQogREVDTEFS
RV9BTklNQVRFRF9MSVNUX1BST1BFUlRZKFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCwgU1ZHVHJh
bnNmb3JtTGlzdCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJ
TkVfQU5JTUFURURfVFJBTlNGT1JNX0xJU1QoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVy
UHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFRklORV9BTklNQVRFRF9MSVNUX1BST1BFUlRZ
KE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdCwgU1ZHVHJhbnNmb3JtTGlzdCwgVXBwZXJQcm9wZXJ0eSwgTG93
ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZFRyYW5zZm9ybUxp
c3QsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAJKHJldmlzaW9uIDkwNjIy
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDcgKzM3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1TVkdBbmltYXRlZFR5cGU6OlNWR0FuaW1hdGVkVHlwZShBbmltYXRlZEF0dHJp
YnV0ZVR5cGUgdHlwZSkKK1NWR0FuaW1hdGVkVHlwZTo6U1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVk
UHJvcGVydHlUeXBlIHR5cGUpCiAgICAgOiBtX3R5cGUodHlwZSkKIHsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0
ZVJlY3QoRmxvYXRSZWN0Kik7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBjcmVhdGVTdHJpbmcoU3RyaW5nKik7CiAKLSAgICBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIEFuaW1hdGVkUHJvcGVydHlUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIFNWR0FuZ2xlJiBhbmdsZSgpOwog
ICAgIGJvb2wmIGJvb2xlYW4oKTsKQEAgLTc5LDkgKzc5LDkgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0UHJlc2VydmVBc3BlY3RSYXRpb0Jhc2VWYWx1ZShjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvJik7CiAKIHByaXZhdGU6Ci0gICAgU1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVkQXR0cmlidXRl
VHlwZSk7CisgICAgU1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVkUHJvcGVydHlUeXBlKTsKIAotICAg
IEFuaW1hdGVkQXR0cmlidXRlVHlwZSBtX3R5cGU7CisgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUg
bV90eXBlOwogCiAgICAgdW5pb24gRGF0YVVuaW9uIHsKICAgICAgICAgRGF0YVVuaW9uKCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5oCShyZXZp
c2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxNCArNDMsMTQgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0Q29udGV4dEVsZW1lbnQoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpIHsgbV9jb250ZXh0
RWxlbWVudCA9IGNvbnRleHRFbGVtZW50OyB9CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgU1ZHQW5p
bWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIHR5cGUsIFNWR0FuaW1hdGlv
bkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQor
ICAgIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yKEFuaW1hdGVkUHJvcGVydHlUeXBlIHR5cGUsIFNW
R0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRF
bGVtZW50KQogICAgICAgICA6IG1fdHlwZSh0eXBlKQogICAgICAgICAsIG1fYW5pbWF0aW9uRWxl
bWVudChhbmltYXRpb25FbGVtZW50KQogICAgICAgICAsIG1fY29udGV4dEVsZW1lbnQoY29udGV4
dEVsZW1lbnQpCiAgICAgewogICAgIH0KIAotICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBtX3R5
cGU7CisgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgbV90eXBlOwogICAgIFNWR0FuaW1hdGlvbkVs
ZW1lbnQqIG1fYW5pbWF0aW9uRWxlbWVudDsKICAgICBTVkdFbGVtZW50KiBtX2NvbnRleHRFbGVt
ZW50OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5j
cHAJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMyArNTIsMjAgQEAgdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBk
ZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHQW5pbWF0aW9uRWxlbWVudCwg
U1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1B
VEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdBbmltYXRpb25F
bGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5F
X0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdBbmltYXRpb25FbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElF
UwogCiBTVkdBbmltYXRpb25FbGVtZW50OjpTVkdBbmltYXRpb25FbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1NNSUxFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9hbmltYXRpb25WYWxpZChmYWxzZSkKIHsK
KyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0FuaW1hdGlvbkVsZW1lbnQoKTsK
IH0KIAogc3RhdGljIHZvaWQgcGFyc2VLZXlUaW1lcyhjb25zdCBTdHJpbmcmIHBhcnNlLCBWZWN0
b3I8ZmxvYXQ+JiByZXN1bHQsIGJvb2wgdmVyaWZ5T3JkZXIpCkBAIC0yMDMsMjIgKzIxMCw2IEBA
IHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6YXR0cmlidXRlQ2hhbmcKICAgICBTVkdTTUlMRWxl
bWVudDo6YXR0cmlidXRlQ2hhbmdlZChhdHRyLCBwcmVzZXJ2ZURlY2xzKTsKIH0KIAotdm9pZCBT
VkdBbmltYXRpb25FbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQotewotICAgIFNWR1NNSUxFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
KGF0dHJOYW1lKTsKLQotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBTVkdUZXN0
czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3du
QXR0cmlidXRlKGF0dHJOYW1lKSkKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKCk7Ci0gICAgZWxzZSBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKQotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0
dHJOYW1lKTsKLX0KLQogZmxvYXQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6Z2V0U3RhcnRUaW1lKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbmFycm93UHJlY2lzaW9uVG9GbG9hdChpbnRlcnZhbEJlZ2lu
KCkudmFsdWUoKSk7CkBAIC00ODYsNyArNDc3LDcgQEAgdm9pZCBTVkdBbmltYXRpb25FbGVtZW50
OjpjdXJyZW50VmFsdWVzRgogICAgIENhbGNNb2RlIGNhbGNNb2RlID0gdGhpcy0+Y2FsY01vZGUo
KTsKICAgICBpZiAoaGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZVRhZykgfHwgaGFzVGFnTmFt
ZShTVkdOYW1lczo6YW5pbWF0ZUNvbG9yVGFnKSkgewogICAgICAgICBjb25zdCBTVkdBbmltYXRl
RWxlbWVudCogYW5pbWF0ZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBTVkdBbmltYXRlRWxl
bWVudCo+KHRoaXMpOwotICAgICAgICBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgYXR0cmlidXRlVHlw
ZSA9IGFuaW1hdGVFbGVtZW50LT5kZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0
RWxlbWVudCgpKTsKKyAgICAgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYXR0cmlidXRlVHlwZSA9
IGFuaW1hdGVFbGVtZW50LT5kZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0YXJnZXRFbGVt
ZW50KCkpOwogICAgICAgICAvLyBGYWxsIGJhY2sgdG8gZGlzY3JldGUgYW5pbWF0aW9ucyBmb3Ig
U3RyaW5ncy4KICAgICAgICAgaWYgKGF0dHJpYnV0ZVR5cGUgPT0gQW5pbWF0ZWRCb29sZWFuCiAg
ICAgICAgICAgICB8fCBhdHRyaWJ1dGVUeXBlID09IEFuaW1hdGVkRW51bWVyYXRpb24KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaAkocmV2aXNpb24gOTA2MjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDgsNyArMTA4LDYgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSosIGJvb2wgcHJlc2VydmVEZWNscyk7
Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogCiAgICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBT
dHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmlu
ZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykgPSAwOwpAQCAtMTIzLDEwICsxMjIsMTQgQEAgcHJp
dmF0ZToKICAgICBmbG9hdCBjYWxjdWxhdGVQZXJjZW50Rm9yU3BsaW5lKGZsb2F0IHBlcmNlbnQs
IHVuc2lnbmVkIHNwbGluZUluZGV4KSBjb25zdDsKICAgICB1bnNpZ25lZCBjYWxjdWxhdGVLZXlU
aW1lc0luZGV4KGZsb2F0IHBlcmNlbnQpIGNvbnN0OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVjbGFyYXRpb25zCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR0FuaW1hdGlvbkVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9P
TEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3Rz
CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVz
dHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXpl
UmVxdWlyZWRFeHRlbnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
U3lzdGVtTGFuZ3VhZ2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRo
aXMpOyB9CiAKICAgICBib29sIG1fYW5pbWF0aW9uVmFsaWQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0
Miw3IEBAIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CiAKIGNsYXNzIFNWR0FuaW1hdG9yRmFj
dG9yeSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlQW5p
bWF0b3I+IGNyZWF0ZShTVkdBbmltYXRpb25FbGVtZW50KiBhbmltYXRpb25FbGVtZW50LCBTVkdF
bGVtZW50KiBjb250ZXh0RWxlbWVudCwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIGF0dHJpYnV0ZVR5
cGUpCisgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I+IGNyZWF0
ZShTVkdBbmltYXRpb25FbGVtZW50KiBhbmltYXRpb25FbGVtZW50LCBTVkdFbGVtZW50KiBjb250
ZXh0RWxlbWVudCwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYXR0cmlidXRlVHlwZSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChhbmltYXRpb25FbGVtZW50KTsKICAgICAgICAgQVNTRVJUKGNvbnRleHRF
bGVtZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSArMzMsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0xF
TkdUSChTVkdDaXJjbGVFbGVtZW50LCBTVkdOYW1lczo6Y3hBdHRyLCBDeCwgY3gpCi1ERUZJTkVf
QU5JTUFURURfTEVOR1RIKFNWR0NpcmNsZUVsZW1lbnQsIFNWR05hbWVzOjpjeUF0dHIsIEN5LCBj
eSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTmFtZXM6OnJB
dHRyLCBSLCByKQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHQ2lyY2xlRWxlbWVudCwgU1ZH
TmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVE
X1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0NpcmNsZUVsZW1lbnQs
IFNWR05hbWVzOjpjeEF0dHIsIEN4LCBjeCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNW
R0NpcmNsZUVsZW1lbnQsIFNWR05hbWVzOjpjeUF0dHIsIEN5LCBjeSkKKyAgICBERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR0NpcmNsZUVsZW1lbnQsIFNWR05hbWVzOjpyQXR0ciwgUiwgcikKKyAg
ICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdDaXJjbGVFbGVtZW50LCBTVkdOYW1lczo6ZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMK
KworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdDaXJjbGVFbGVtZW50KQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGN4KQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKGN5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKHIpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJU
SUVTCiAKIGlubGluZSBTVkdDaXJjbGVFbGVtZW50OjpTVkdDaXJjbGVFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQpAQCAtNDYsNiArNTYsNyBA
QCBpbmxpbmUgU1ZHQ2lyY2xlRWxlbWVudDo6U1ZHQ2lyY2xlRWxlbWVuCiAgICAgLCBtX3IoTGVu
Z3RoTW9kZU90aGVyKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpjaXJjbGVU
YWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0NpcmNsZUVsZW1lbnQo
KTsKIH0KIAogUGFzc1JlZlB0cjxTVkdDaXJjbGVFbGVtZW50PiBTVkdDaXJjbGVFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpA
QCAtMTM4LDY3ICsxNDksNiBAQCB2b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHQ2lyY2xlRWxlbWVu
dDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsK
LSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUN4
KCk7Ci0gICAgICAgIHN5bmNocm9uaXplQ3koKTsKLSAgICAgICAgc3luY2hyb25pemVSKCk7Ci0g
ICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBT
VkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAg
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5h
bWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpjeEF0dHIpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVDeCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpjeUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVDeSgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpyQXR0cikg
ewotICAgICAgICBzeW5jaHJvbml6ZVIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGll
cyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0NpcmNs
ZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7
Ci19Ci0KLXZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAg
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpjeEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmN5QXR0ciwgQW5pbWF0
ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
ckF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLX0KLQogdm9pZCBTVkdDaXJjbGVFbGVtZW50Ojp0b1Bh
dGhEYXRhKFBhdGgmIHBhdGgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHBhdGguaXNFbXB0eSgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAkocmV2aXNpb24gOTA2MjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NywyMiArNDcsMjIgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRB
dHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVBy
b3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCB2
b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNS
ZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xh
cmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN4LCBjeCkKLSAgICBERUNMQVJF
X0FOSU1BVEVEX0xFTkdUSChDeSwgY3kpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUiwg
cikKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FO
SU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQ2ly
Y2xlRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3gsIGN4KQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeSwgY3kpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfTEVOR1RIKFIsIHIpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVO
RF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3RzCisgICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNo
cm9uaXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRF
eHRlbnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFu
Z3VhZ2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Q2xpcFBhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Q2xpcFBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTUgKzM0LDI0
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5p
dGlvbnMKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdDbGlwUGF0aEVsZW1lbnQsIFNW
R05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0ciwgQ2xpcFBhdGhVbml0cywgY2xpcFBhdGhVbml0cywg
U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0Ns
aXBQYXRoRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorQkVH
SU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVS
QVRJT04oU1ZHQ2xpcFBhdGhFbGVtZW50LCBTVkdOYW1lczo6Y2xpcFBhdGhVbml0c0F0dHIsIENs
aXBQYXRoVW5pdHMsIGNsaXBQYXRoVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisg
ICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHQ2xpcFBhdGhFbGVtZW50LCBTVkdOYW1lczo6
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJ
RVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdDbGlwUGF0aEVsZW1l
bnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoY2xpcFBhdGhVbml0cykK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5s
aW5lIFNWR0NsaXBQYXRoRWxlbWVudDo6U1ZHQ2xpcFBhdGhFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9jbGlwUGF0aFVuaXRz
KFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShTVkdOYW1lczo6Y2xpcFBhdGhUYWcpKTsKKyAgICByZWdpc3RlckFuaW1h
dGVkUHJvcGVydGllc0ZvclNWR0NsaXBQYXRoRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNW
R0NsaXBQYXRoRWxlbWVudD4gU1ZHQ2xpcFBhdGhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtOTksNTMgKzEwOCw2IEBA
IHZvaWQgU1ZHQ2xpcFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGEKICAgICAgICAgb2JqZWN0
LT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KIAotdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OnN5
bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAg
aWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVDbGlwUGF0
aFVuaXRzKCk7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgp
OwotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1l
KTsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1
cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpjbGlwUGF0aFVuaXRz
QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUNsaXBQYXRoVW5pdHMoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdU
ZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGVzdHM6OnN5
bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIFNWR0NsaXBQYXRoRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAs
IHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OmZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxs
UGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Y2xpcFBh
dGhVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotfQotCiB2b2lkIFNWR0NsaXBQYXRo
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZv
cmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAg
IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5
UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAkocmV2aXNpb24gOTA2MjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDE4ICs1MCwxOSBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVm
b3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRh
ID0gMCk7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFy
YXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihDbGlwUGF0aFVuaXRzLCBj
bGlwUGF0aFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQorICAgIEJFR0lOX0RFQ0xB
UkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdDbGlwUGF0aEVsZW1lbnQpCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfRU5VTUVSQVRJT04oQ2xpcFBhdGhVbml0cywgY2xpcFBhdGhVbml0cywgU1ZH
VW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFO
KEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisg
ICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogCi0gICAgLy8gU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIC8vIFNWR1Rl
c3RzCisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZH
VGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9u
aXplUmVxdWlyZWRFeHRlbnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9u
aXplU3lzdGVtTGFuZ3VhZ2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdl
KHRoaXMpOyB9CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDkw
NjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25F
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTQgKzMwLDI1IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9B
TklNQVRFRF9FTlVNRVJBVElPTihTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwg
U1ZHTmFtZXM6OnR5cGVBdHRyLCBUeXBlLCB0eXBlLCBDb21wb25lbnRUcmFuc2ZlclR5cGUpCi1E
RUZJTkVfQU5JTUFURURfTlVNQkVSX0xJU1QoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQsIFNWR05hbWVzOjp0YWJsZVZhbHVlc0F0dHIsIFRhYmxlVmFsdWVzLCB0YWJsZVZhbHVl
cykKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQsIFNWR05hbWVzOjpzbG9wZUF0dHIsIFNsb3BlLCBzbG9wZSkKLURFRklORV9BTklNQVRF
RF9OVU1CRVIoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR05hbWVzOjpp
bnRlcmNlcHRBdHRyLCBJbnRlcmNlcHQsIGludGVyY2VwdCkKLURFRklORV9BTklNQVRFRF9OVU1C
RVIoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR05hbWVzOjphbXBsaXR1
ZGVBdHRyLCBBbXBsaXR1ZGUsIGFtcGxpdHVkZSkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZH
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR05hbWVzOjpleHBvbmVudEF0dHIs
IEV4cG9uZW50LCBleHBvbmVudCkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR05hbWVzOjpvZmZzZXRBdHRyLCBPZmZzZXQsIG9m
ZnNldCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1B
VEVEX0VOVU1FUkFUSU9OKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdO
YW1lczo6dHlwZUF0dHIsIFR5cGUsIHR5cGUsIENvbXBvbmVudFRyYW5zZmVyVHlwZSkKKyAgICBE
RUZJTkVfQU5JTUFURURfTlVNQkVSX0xJU1QoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQsIFNWR05hbWVzOjp0YWJsZVZhbHVlc0F0dHIsIFRhYmxlVmFsdWVzLCB0YWJsZVZhbHVl
cykKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b25FbGVtZW50LCBTVkdOYW1lczo6c2xvcGVBdHRyLCBTbG9wZSwgc2xvcGUpCisgICAgREVGSU5F
X0FOSU1BVEVEX05VTUJFUihTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZH
TmFtZXM6OmludGVyY2VwdEF0dHIsIEludGVyY2VwdCwgaW50ZXJjZXB0KQorICAgIERFRklORV9B
TklNQVRFRF9OVU1CRVIoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR05h
bWVzOjphbXBsaXR1ZGVBdHRyLCBBbXBsaXR1ZGUsIGFtcGxpdHVkZSkKKyAgICBERUZJTkVfQU5J
TUFURURfTlVNQkVSKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdOYW1l
czo6ZXhwb25lbnRBdHRyLCBFeHBvbmVudCwgZXhwb25lbnQpCisgICAgREVGSU5FX0FOSU1BVEVE
X05VTUJFUihTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6Om9m
ZnNldEF0dHIsIE9mZnNldCwgb2Zmc2V0KQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVT
CisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
dHlwZSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh0YWJsZVZhbHVlcykK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShzbG9wZSkKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbnRlcmNlcHQpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoYW1wbGl0dWRlKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVE
X1BST1BFUlRZKGV4cG9uZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZ
KG9mZnNldCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIFNWR0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAg
ICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQpAQCAtNDYsNiArNTcsNyBAQCBTVkdD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6U1ZHCiAgICAgLCBtX2FtcGxpdHVkZSgx
KQogICAgICwgbV9leHBvbmVudCgxKQogeworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVz
Rm9yU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQoKTsKIH0KIAogYm9vbCBTVkdD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBAIC0xMTQsODEgKzEyNiw2IEBAIHZvaWQgU1ZH
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIAotdm9pZCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAo
YXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVR5cGUoKTsKLSAg
ICAgICAgc3luY2hyb25pemVUYWJsZVZhbHVlcygpOwotICAgICAgICBzeW5jaHJvbml6ZVNsb3Bl
KCk7Ci0gICAgICAgIHN5bmNocm9uaXplSW50ZXJjZXB0KCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
QW1wbGl0dWRlKCk7Ci0gICAgICAgIHN5bmNocm9uaXplRXhwb25lbnQoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVPZmZzZXQoKTsKLSAgICAgICAgU1ZHRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0
eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9y
dGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6dHlwZUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVUeXBl
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnRhYmxlVmFsdWVzQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVRhYmxlVmFsdWVzKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnNsb3BlQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVNsb3BlKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmludGVyY2VwdEF0dHIp
IHsKLSAgICAgICAgc3luY2hyb25pemVJbnRlcmNlcHQoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6YW1wbGl0dWRlQXR0cikgewotICAg
ICAgICBzeW5jaHJvbml6ZUFtcGxpdHVkZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpleHBvbmVudEF0dHIpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVFeHBvbmVudCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjpvZmZzZXRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplT2Zm
c2V0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwOwotfQotCi12b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Ojpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjp0eXBlQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp0YWJsZVZhbHVlc0F0dHIsIEFuaW1hdGVkTnVt
YmVyTGlzdCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpz
bG9wZUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OmludGVyY2VwdEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmFtcGxpdHVkZUF0dHIsIEFuaW1h
dGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OmV4cG9uZW50QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChTVkdOYW1lczo6b2Zmc2V0QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotfQotCiBD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50Ojp0cmFuc2ZlckZ1bmN0aW9uKCkgY29uc3QKIHsKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uIGZ1bmM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAkocmV2aXNpb24gOTA2MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtODAsMTkgKzgwLDE3IEBAIHByb3RlY3RlZDoKICAgICAvLyBGSVhN
RTogc3ZnQXR0cmlidXRlQ2hhbmdlZCBtaXNzaW5nLgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9w
ZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgCiBwcml2YXRlOgotICAg
IC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURf
RU5VTUVSQVRJT04oVHlwZSwgdHlwZSwgQ29tcG9uZW50VHJhbnNmZXJUeXBlKQotICAgIERFQ0xB
UkVfQU5JTUFURURfTlVNQkVSX0xJU1QoVGFibGVWYWx1ZXMsIHRhYmxlVmFsdWVzKQotICAgIERF
Q0xBUkVfQU5JTUFURURfTlVNQkVSKFNsb3BlLCBzbG9wZSkKLSAgICBERUNMQVJFX0FOSU1BVEVE
X05VTUJFUihJbnRlcmNlcHQsIGludGVyY2VwdCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJF
UihBbXBsaXR1ZGUsIGFtcGxpdHVkZSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihFeHBv
bmVudCwgZXhwb25lbnQpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoT2Zmc2V0LCBvZmZz
ZXQpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFU
SU9OKFR5cGUsIHR5cGUsIENvbXBvbmVudFRyYW5zZmVyVHlwZSkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9OVU1CRVJfTElTVChUYWJsZVZhbHVlcywgdGFibGVWYWx1ZXMpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfTlVNQkVSKFNsb3BlLCBzbG9wZSkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9OVU1CRVIoSW50ZXJjZXB0LCBpbnRlcmNlcHQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfTlVNQkVSKEFtcGxpdHVkZSwgYW1wbGl0dWRlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X05VTUJFUihFeHBvbmVudCwgZXhwb25lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVN
QkVSKE9mZnNldCwgb2Zmc2V0KQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdDdXJzb3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Q3Vyc29yRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0N1cnNvckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMSArMzAsMjAgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9u
cwotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdDdXJzb3JFbGVtZW50LCBTVkdOYW1lczo6eEF0
dHIsIFgsIHgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0N1cnNvckVsZW1lbnQsIFNWR05h
bWVzOjp5QXR0ciwgWSwgeSkKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHQ3Vyc29yRWxlbWVu
dCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCi1ERUZJTkVfQU5JTUFURURfQk9P
TEVBTihTVkdDdXJzb3JFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQorICAgIERF
RklORV9BTklNQVRFRF9MRU5HVEgoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZ
LCB5KQorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHQ3Vyc29yRWxlbWVudCwgWExpbmtO
YW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4o
U1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRy
LCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQor
RU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHQ3Vyc29yRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWSh4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHkpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJF
R0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVS
X0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0N1cnNvckVsZW1lbnQ6OlNWR0N1cnNv
ckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTQyLDYgKzUxLDcgQEAg
aW5saW5lIFNWR0N1cnNvckVsZW1lbnQ6OlNWR0N1cnNvckVsZW1lbgogICAgICwgbV95KExlbmd0
aE1vZGVIZWlnaHQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmN1cnNvclRh
ZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQ3Vyc29yRWxlbWVudCgp
OwogfQogCiBQYXNzUmVmUHRyPFNWR0N1cnNvckVsZW1lbnQ+IFNWR0N1cnNvckVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBA
IC05NiwyMCArMTA2LDYgQEAgdm9pZCBTVkdDdXJzb3JFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgU1ZHQ3Vyc29yRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdDdXJzb3JFbGVtZW50OjpmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0
ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQog
dm9pZCBTVkdDdXJzb3JFbGVtZW50OjphZGRDbGllbnQoU1ZHRWxlbWVudCogZWxlbWVudCkKIHsK
ICAgICBtX2NsaWVudHMuYWRkKGVsZW1lbnQpOwpAQCAtMTQ3LDUxICsxNDMsNiBAQCB2b2lkIFNW
R0N1cnNvckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nCiAgICAgICAgICgqaXQpLT5zZXROZWVk
c1N0eWxlUmVjYWxjKCk7CiB9CiAKLXZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6c3luY2hyb25pemVQ
cm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5h
bWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNo
cm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIFNWR0VsZW1lbnQ6OnN5
bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRWxl
bWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplWCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjp5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChT
VkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplSHJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rl
c3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3lu
Y2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCiB2b2lkIFNWR0N1cnNvckVsZW1l
bnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykg
Y29uc3QKIHsKICAgICBTVkdFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJs
cyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgJKHJldmlzaW9uIDkw
NjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNTMsMjEgKzUzLDIwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29u
c3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJF
X0FOSU1BVEVEX0xFTkdUSChYLCB4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkp
Ci0KLSAgICAvLyBTVkdVUklSZWZlcmVuY2UKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhI
cmVmLCBocmVmKQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERF
Q0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdDdXJzb3JFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JP
T0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0
cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rl
c3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0
aGlzKTsgfQogCiAgICAgSGFzaFNldDxTVkdFbGVtZW50Kj4gbV9jbGllbnRzOwogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCwxMyArMjgsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9w
ZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHRGVmc0VsZW1lbnQs
IFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9BTklN
QVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHRGVmc0VsZW1l
bnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5J
TUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R0RlZnNFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAgUkVHSVNURVJfUEFSRU5U
X0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJP
UEVSVElFUwogCiBpbmxpbmUgU1ZHRGVmc0VsZW1lbnQ6OlNWR0RlZnNFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKFNWR05hbWVzOjpkZWZzVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3Bl
cnRpZXNGb3JTVkdEZWZzRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0RlZnNFbGVtZW50
PiBTVkdEZWZzRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKQEAgLTUyLDIyICs2MCw2IEBAIFJlbmRlck9iamVjdCogU1ZHRGVm
c0VsZW1lbnQ6OmNyZWF0ZVJlbmQKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHSGlk
ZGVuQ29udGFpbmVyKHRoaXMpOwogfQogCi12b2lkIFNWR0RlZnNFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLQot
ICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQ
cm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0g
ICAgZWxzZSBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAg
ICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLX0KLQog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdE
ZWZzRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxl
bWVudC5oCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMiArNDMsMTUgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICAv
LyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHRGVmc0VsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
Qk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAotICAgIC8vIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAv
LyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMo
KSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpz
eW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBz
eW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1M
YW5ndWFnZSh0aGlzKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSwyMyArMjg1LDkgQEAg
dm9pZCBTVkdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdAogICAgICAgICBTdHlsZWRF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIFNWR0VsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3Zv
aWQgU1ZHRWxlbWVudDo6YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgVmVjdG9yPEFuaW1hdGVkUHJvcGVydHlUeXBlPiYg
cHJvcGVydHlUeXBlcykKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0
dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLUFuaW1hdGVkQXR0cmlidXRl
VHlwZSBTVkdFbGVtZW50OjphbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgYW5pbWF0ZWRBdHRyaWJ1dGVNYXAgPSBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwot
ICAgIGlmIChhbmltYXRlZEF0dHJpYnV0ZU1hcC5pc0VtcHR5KCkpCi0gICAgICAgIGZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIGlmIChhbmltYXRlZEF0dHJpYnV0ZU1hcC5j
b250YWlucyhhdHRyTmFtZSkpCi0gICAgICAgIHJldHVybiBhbmltYXRlZEF0dHJpYnV0ZU1hcC5n
ZXQoYXR0ck5hbWUpOwotICAgIGlmIChpc1N0eWxlZCgpKQotICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudCo+KHRoaXMpLT5hbmltYXRlZFByb3BlcnR5VHlwZUZvckNT
U1Byb3BlcnR5KGF0dHJOYW1lKTsKLQotICAgIHJldHVybiBBbmltYXRlZFVua25vd247CisgICAg
bG9jYWxBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCkuYW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRy
aWJ1dGUoYXR0cmlidXRlTmFtZSwgcHJvcGVydHlUeXBlcyk7CiB9CiAKIGJvb2wgU1ZHRWxlbWVu
dDo6aGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkKQEAgLTM5MiwxMyArMzc4LDQyIEBAIHZv
aWQgU1ZHRWxlbWVudDo6dXBkYXRlQW5pbWF0ZWRTVkdBdHRyaWIKIAogICAgIHNldElzU3luY2hy
b25pemluZ1NWR0F0dHJpYnV0ZXMoKTsKIAotICAgIGNvbnN0X2Nhc3Q8U1ZHRWxlbWVudCo+KHRo
aXMpLT5zeW5jaHJvbml6ZVByb3BlcnR5KG5hbWUpOwotICAgIGlmIChuYW1lID09IGFueVFOYW1l
KCkpCisgICAgU1ZHRWxlbWVudCogbm9uQ29uc3RUaGlzID0gY29uc3RfY2FzdDxTVkdFbGVtZW50
Kj4odGhpcyk7CisgICAgaWYgKG5hbWUgPT0gYW55UU5hbWUoKSkgeworICAgICAgICBub25Db25z
dFRoaXMtPmxvY2FsQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpLnN5bmNocm9uaXplUHJvcGVydGll
cyhub25Db25zdFRoaXMpOwogICAgICAgICBzZXRBcmVTVkdBdHRyaWJ1dGVzVmFsaWQoKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgbm9uQ29uc3RUaGlzLT5sb2NhbEF0dHJpYnV0ZVRvUHJvcGVydHlN
YXAoKS5zeW5jaHJvbml6ZVByb3BlcnR5KG5vbkNvbnN0VGhpcywgbmFtZSk7CiAKICAgICBjbGVh
cklzU3luY2hyb25pemluZ1NWR0F0dHJpYnV0ZXMoKTsKIH0KIAorU1ZHQXR0cmlidXRlVG9Qcm9w
ZXJ0eU1hcCYgU1ZHRWxlbWVudDo6bG9jYWxBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCkKK3sKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU1ZHQXR0
cmlidXRlVG9Qcm9wZXJ0eU1hcCwgZHVtbXlNYXAsICgpKTsKKyAgICByZXR1cm4gZHVtbXlNYXA7
Cit9CisKK3ZvaWQgU1ZHRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHZvaWQq
IGNvbnRleHRFbGVtZW50KQoreworICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7CisgICAgc3Rh
dGljX2Nhc3Q8U1ZHRWxlbWVudCo+KGNvbnRleHRFbGVtZW50KS0+c3luY2hyb25pemVSZXF1aXJl
ZEZlYXR1cmVzKCk7Cit9CisKK3ZvaWQgU1ZHRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4
dGVuc2lvbnModm9pZCogY29udGV4dEVsZW1lbnQpCit7CisgICAgQVNTRVJUKGNvbnRleHRFbGVt
ZW50KTsKKyAgICBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4oY29udGV4dEVsZW1lbnQpLT5zeW5j
aHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpOworfQorCit2b2lkIFNWR0VsZW1lbnQ6OnN5bmNo
cm9uaXplU3lzdGVtTGFuZ3VhZ2Uodm9pZCogY29udGV4dEVsZW1lbnQpCit7CisgICAgQVNTRVJU
KGNvbnRleHRFbGVtZW50KTsKKyAgICBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4oY29udGV4dEVs
ZW1lbnQpLT5zeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCk7Cit9CisKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgJKHJldmlzaW9uIDkwNjIy
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjQsNDcgKzI0LDI3IEBACiAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR0xvY2F0YWJs
ZS5oIgorI2luY2x1ZGUgIlNWR1Byb3BlcnR5SW5mby5oIgogI2luY2x1ZGUgIlN0eWxlZEVsZW1l
bnQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWVudW0gQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIHsKLSAgICBBbmltYXRlZEFuZ2xlLAotICAgIEFu
aW1hdGVkQm9vbGVhbiwKLSAgICBBbmltYXRlZENvbG9yLAotICAgIEFuaW1hdGVkRW51bWVyYXRp
b24sCi0gICAgQW5pbWF0ZWRJbnRlZ2VyLAotICAgIEFuaW1hdGVkTGVuZ3RoLAotICAgIEFuaW1h
dGVkTGVuZ3RoTGlzdCwKLSAgICBBbmltYXRlZE51bWJlciwKLSAgICBBbmltYXRlZE51bWJlckxp
c3QsCi0gICAgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlciwKLSAgICBBbmltYXRlZFBhdGgs
Ci0gICAgQW5pbWF0ZWRQb2ludHMsCi0gICAgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLAot
ICAgIEFuaW1hdGVkUmVjdCwKLSAgICBBbmltYXRlZFN0cmluZywKLSAgICBBbmltYXRlZFRyYW5z
Zm9ybUxpc3QsCi0gICAgQW5pbWF0ZWRVbmtub3duCi19OwotCiBlbnVtIFNWR1BhcnNpbmdFcnJv
ciB7CiAgICAgTm9FcnJvciwKICAgICBQYXJzaW5nQXR0cmlidXRlRmFpbGVkRXJyb3IsCiAgICAg
TmVnYXRpdmVWYWx1ZUZvcmJpZGRlbkVycm9yCiB9OwogCi10eXBlZGVmIEhhc2hNYXA8UXVhbGlm
aWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cDsKLQorY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTsK
IGNsYXNzIERvY3VtZW50OworY2xhc3MgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDsKIGNsYXNz
IFNWR0N1cnNvckVsZW1lbnQ7CiBjbGFzcyBTVkdEb2N1bWVudEV4dGVuc2lvbnM7CiBjbGFzcyBT
VkdFbGVtZW50SW5zdGFuY2U7CiBjbGFzcyBTVkdFbGVtZW50UmFyZURhdGE7CiBjbGFzcyBTVkdT
VkdFbGVtZW50OwotY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogCiBjbGFzcyBTVkdFbGVtZW50IDog
cHVibGljIFN0eWxlZEVsZW1lbnQgewogcHVibGljOgpAQCAtOTEsMTIgKzcxLDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSB7IH0KLQotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIGFu
aW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIFZlY3RvcjxBbmltYXRlZFByb3BlcnR5VHlwZT4mKTsKIAogICAgIHZvaWQg
c2VuZFNWR0xvYWRFdmVudElmUG9zc2libGUoYm9vbCBzZW5kUGFyZW50TG9hZEV2ZW50cyA9IGZh
bHNlKTsKIApAQCAtMTE1LDYgKzkxLDE2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAK
KyAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModm9pZCogY29udGV4
dEVsZW1lbnQpOworICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25z
KHZvaWQqIGNvbnRleHRFbGVtZW50KTsKKyAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZVN5c3Rl
bUxhbmd1YWdlKHZvaWQqIGNvbnRleHRFbGVtZW50KTsKKworICAgIHZpcnR1YWwgdm9pZCBzeW5j
aHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25p
emVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVT
eXN0ZW1MYW5ndWFnZSgpIHsgfQorCisgICAgdmlydHVhbCBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5
TWFwJiBsb2NhbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKTsKKwogcHJvdGVjdGVkOgogICAgIFNW
R0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMywxMiArMzMsMjMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBw
cm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdFbGxpcHNlRWxl
bWVudCwgU1ZHTmFtZXM6OmN4QXR0ciwgQ3gsIGN4KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChT
VkdFbGxpcHNlRWxlbWVudCwgU1ZHTmFtZXM6OmN5QXR0ciwgQ3ksIGN5KQotREVGSU5FX0FOSU1B
VEVEX0xFTkdUSChTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTmFtZXM6OnJ4QXR0ciwgUngsIHJ4KQot
REVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTmFtZXM6OnJ5QXR0
ciwgUnksIHJ5KQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHRWxsaXBzZUVsZW1lbnQsIFNW
R05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRF
RF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdFbGxpcHNlRWxlbWVu
dCwgU1ZHTmFtZXM6OmN4QXR0ciwgQ3gsIGN4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgo
U1ZHRWxsaXBzZUVsZW1lbnQsIFNWR05hbWVzOjpjeUF0dHIsIEN5LCBjeSkKKyAgICBERUZJTkVf
QU5JTUFURURfTEVOR1RIKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdOYW1lczo6cnhBdHRyLCBSeCwg
cngpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTmFt
ZXM6OnJ5QXR0ciwgUnksIHJ5KQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0VsbGlw
c2VFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVG
SU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdFbGxpcHNlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWShjeCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShjeSkKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShyeCkKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWShyeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KQorICAgIFJFR0lTVEVS
X1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1B
VEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0VsbGlwc2VFbGVtZW50OjpTVkdFbGxpcHNlRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAg
ICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKQEAg
LTQ4LDYgKzU5LDcgQEAgaW5saW5lIFNWR0VsbGlwc2VFbGVtZW50OjpTVkdFbGxpcHNlRWxlbQog
ICAgICwgbV9yeShMZW5ndGhNb2RlSGVpZ2h0KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNW
R05hbWVzOjplbGxpcHNlVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JT
VkdFbGxpcHNlRWxlbWVudCgpOwogfSAgICAKIAogUGFzc1JlZlB0cjxTVkdFbGxpcHNlRWxlbWVu
dD4gU1ZHRWxsaXBzZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xNDksNzQgKzE2MSw2IEBAIHZvaWQgU1ZHRWxsaXBz
ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0K
IAotdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkg
ewotICAgICAgICBzeW5jaHJvbml6ZUN4KCk7Ci0gICAgICAgIHN5bmNocm9uaXplQ3koKTsKLSAg
ICAgICAgc3luY2hyb25pemVSeCgpOwotICAgICAgICBzeW5jaHJvbml6ZVJ5KCk7Ci0gICAgICAg
IHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBTVkdUZXN0
czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNo
cm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpjeEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVD
eCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjpjeUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVDeSgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpyeEF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVSeCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjpyeUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVSeSgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBT
VkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRWxsaXBzZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJu
IHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRWxsaXBzZUVsZW1l
bnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXApOyAgICAKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OmN4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChTVkdOYW1lczo6Y3lBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyeEF0dHIsIEFuaW1hdGVkTGVuZ3Ro
KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnJ5QXR0ciwg
QW5pbWF0ZWRMZW5ndGgpOwotfQotCiB2b2lkIFNWR0VsbGlwc2VFbGVtZW50Ojp0b1BhdGhEYXRh
KFBhdGgmIHBhdGgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHBhdGguaXNFbXB0eSgpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCShyZXZpc2lvbiA5MDYyMikKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NywyMiArNDcsMjMgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRy
aWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgdm9pZCB0
b1BhdGhEYXRhKFBhdGgmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRp
dmVMZW5ndGhzKCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlv
bnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeCwgY3gpCi0gICAgREVDTEFSRV9BTklN
QVRFRF9MRU5HVEgoQ3ksIGN5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFJ4LCByeCkK
LSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSeSwgcnkpCi0KLSAgICAvLyBTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgQkVHSU5f
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0VsbGlwc2VFbGVtZW50KQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeCwgY3gpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIKEN5LCBjeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUngsIHJ4KQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSeSwgcnkpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKKworICAg
IC8vIFNWR1Rlc3RzCisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJl
cygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6
OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3Rl
bUxhbmd1YWdlKHRoaXMpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNjIyKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsMTYgKzMxLDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0
ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVCbGVu
ZEVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQotREVGSU5FX0FOSU1BVEVEX1NU
UklORyhTVkdGRUJsZW5kRWxlbWVudCwgU1ZHTmFtZXM6OmluMkF0dHIsIEluMiwgaW4yKQotREVG
SU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdOYW1lczo6bW9k
ZUF0dHIsIE1vZGUsIG1vZGUsIEJsZW5kTW9kZVR5cGUpCitCRUdJTl9ERUZJTkVfQU5JTUFURURf
UFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVCbGVuZEVsZW1lbnQs
IFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkco
U1ZHRkVCbGVuZEVsZW1lbnQsIFNWR05hbWVzOjppbjJBdHRyLCBJbjIsIGluMikKKyAgICBERUZJ
TkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHRkVCbGVuZEVsZW1lbnQsIFNWR05hbWVzOjptb2Rl
QXR0ciwgTW9kZSwgbW9kZSwgQmxlbmRNb2RlVHlwZSkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJP
UEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFQmxlbmRF
bGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGluMSkKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjIpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkobW9kZSkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJP
UEVSVElFUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCitFTkRfUkVHSVNU
RVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHRkVCbGVuZEVsZW1lbnQ6OlNWR0ZF
QmxlbmRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1l
LCBkb2N1bWVudCkKICAgICAsIG1fbW9kZShGRUJMRU5EX01PREVfTk9STUFMKQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUJsZW5kVGFnKSk7CisgICAgcmVnaXN0ZXJBbmlt
YXRlZFByb3BlcnRpZXNGb3JTVkdGRUJsZW5kRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNW
R0ZFQmxlbmRFbGVtZW50PiBTVkdGRUJsZW5kRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTExOSw1NSArMTI4LDYgQEAg
dm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbgogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0ZFQmxlbmRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9
PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplTW9kZSgpOwotICAgICAgICBzeW5j
aHJvbml6ZUluMSgpOwotICAgICAgICBzeW5jaHJvbml6ZUluMigpOwotICAgICAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5h
bWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6bW9kZUF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVNb2RlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
OjppbjJBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4yKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIFNWR0ZFQmxlbmRFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0ZFQmxlbmRFbGVtZW50OjpmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCk7ICAgIAotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjppbjJBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjptb2RlQXR0ciwgQW5pbWF0ZWRFbnVt
ZXJhdGlvbik7Ci19Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUJsZW5kRWxlbWVu
dDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIp
CiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RC
eUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCShy
ZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC04MCwxNSArODAsMTMgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCBib29s
IHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKLSAgICAv
LyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NU
UklORyhJbjEsIGluMSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjIsIGluMikKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKE1vZGUsIG1vZGUsIEJsZW5kTW9kZVR5cGUp
CisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFQmxlbmRFbGVtZW50
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9TVFJJTkcoSW4yLCBpbjIpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
RU5VTUVSQVRJT04oTW9kZSwgbW9kZSwgQmxlbmRNb2RlVHlwZSkKKyAgICBFTkRfREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHJldmlz
aW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDI1IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRF
RF9TVFJJTkcoU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwg
aW4xKQotREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
LCBTVkdOYW1lczo6dHlwZUF0dHIsIFR5cGUsIHR5cGUsIENvbG9yTWF0cml4VHlwZSkKLURFRklO
RV9BTklNQVRFRF9OVU1CRVJfTElTVChTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6
OnZhbHVlc0F0dHIsIFZhbHVlcywgdmFsdWVzKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKKyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVS
QVRJT04oU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQsIFNWR05hbWVzOjp0eXBlQXR0ciwgVHlwZSwg
dHlwZSwgQ29sb3JNYXRyaXhUeXBlKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVJfTElTVChT
VkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OnZhbHVlc0F0dHIsIFZhbHVlcywgdmFs
dWVzKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FO
SU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVE
X1BST1BFUlRZKHR5cGUpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkodmFs
dWVzKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJU
SUVTCiAKIGlubGluZSBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6U1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQog
ICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3Vt
ZW50KQogICAgICwgbV90eXBlKEZFQ09MT1JNQVRSSVhfVFlQRV9VTktOT1dOKQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUNvbG9yTWF0cml4VGFnKSk7CisgICAgcmVnaXN0
ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRUNvbG9yTWF0cml4RWxlbWVudCgpOwogfQogCiBQ
YXNzUmVmUHRyPFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50PiBTVkdGRUNvbG9yTWF0cml4RWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCkKQEAgLTEyNCw1NSArMTMzLDYgQEAgdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6c3Zn
QXR0cmlidQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplVHlwZSgpOwotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICBzeW5j
aHJvbml6ZVZhbHVlcygpOwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAg
ICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6dHlwZUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVUeXBlKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omlu
QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp2YWx1ZXNBdHRyKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplVmFsdWVzKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZp
bGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0
dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OnR5cGVBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnZhbHVlc0F0dHIsIEFuaW1hdGVkTnVtYmVy
TGlzdCk7Ci19Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbG9yTWF0cml4RWxl
bWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0
ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZl
Y3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0
cml4RWxlbWVudC5oCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbG9yTWF0cml4RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NywxNSArNzcsMTMgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
Kik7CiAgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZl
Y3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVy
Kik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJF
X0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFU
SU9OKFR5cGUsIHR5cGUsIENvbG9yTWF0cml4VHlwZSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05V
TUJFUl9MSVNUKFZhbHVlcywgdmFsdWVzKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVElFUyhTVkdGRUNvbG9yTWF0cml4RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9TVFJJTkcoSW4xLCBpbjEpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04o
VHlwZSwgdHlwZSwgQ29sb3JNYXRyaXhUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05V
TUJFUl9MSVNUKFZhbHVlcywgdmFsdWVzKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAkocmV2aXNp
b24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMyArMzQsMjAgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLURFRklORV9B
TklNQVRFRF9TVFJJTkcoU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQsIFNWR05hbWVzOjpp
bkF0dHIsIEluMSwgaW4xKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBE
RUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LCBTVkdO
YW1lczo6aW5BdHRyLCBJbjEsIGluMSkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUwor
CitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGluMSkKKyAg
ICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBp
bmxpbmUgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OlNWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCkKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBk
b2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVDb21wb25lbnRU
cmFuc2ZlclRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudD4gU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC03Miw0MSAr
NzksNiBAQCB2b2lkIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpwYXJzCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17
Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVJ
bjEoKTsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5j
aHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFt
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmluQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICBy
ZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRUNvbXBv
bmVudFRyYW5zZmVyRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsK
LSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0K
IFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7
CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlk
KGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudC5oCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywx
MyArMzcsMTEgQEAgcHJpdmF0ZToKICAgICAvLyBGSVhNRTogc3ZnQXR0cmlidXRlQ2hhbmdlZCBt
aXNzaW5nLgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwot
ICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkg
ZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCisgICAg
QkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJF
bGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICBF
TkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNw
cAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMjAgKzMxLDMzIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9B
TklNQVRFRF9TVFJJTkcoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJ
bjEsIGluMSkKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBT
VkdOYW1lczo6aW4yQXR0ciwgSW4yLCBpbjIpCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04o
U1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6b3BlcmF0b3JBdHRyLCBfb3BlcmF0b3Is
IF9vcGVyYXRvciwgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSkKLURFRklORV9BTklNQVRFRF9OVU1C
RVIoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6azFBdHRyLCBLMSwgazEpCi1ERUZJ
TkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6OmsyQXR0
ciwgSzIsIGsyKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUNvbXBvc2l0ZUVsZW1lbnQs
IFNWR05hbWVzOjprM0F0dHIsIEszLCBrMykKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVD
b21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6azRBdHRyLCBLNCwgazQpCitCRUdJTl9ERUZJTkVf
QU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVDb21w
b3NpdGVFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKKyAgICBERUZJTkVfQU5J
TUFURURfU1RSSU5HKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6OmluMkF0dHIsIElu
MiwgaW4yKQorICAgIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQsIFNWR05hbWVzOjpvcGVyYXRvckF0dHIsIF9vcGVyYXRvciwgX29wZXJhdG9yLCBDb21w
b3NpdGVPcGVyYXRpb25UeXBlKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVDb21w
b3NpdGVFbGVtZW50LCBTVkdOYW1lczo6azFBdHRyLCBLMSwgazEpCisgICAgREVGSU5FX0FOSU1B
VEVEX05VTUJFUihTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVzOjprMkF0dHIsIEsyLCBr
MikKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZH
TmFtZXM6OmszQXR0ciwgSzMsIGszKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVD
b21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6azRBdHRyLCBLNCwgazQpCitFTkRfREVGSU5FX0FO
SU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhT
VkdGRUNvbXBvc2l0ZUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkoaW4xKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGluMikKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShfb3BlcmF0b3IpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkoazEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkoazIpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoazMpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoazQpCisgICAgUkVHSVNURVJfUEFS
RU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZFQ29t
cG9zaXRlRWxlbWVudDo6U1ZHRkVDb21wb3NpdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fX29wZXJhdG9yKEZF
Q09NUE9TSVRFX09QRVJBVE9SX09WRVIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OmZlQ29tcG9zaXRlVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JT
VkdGRUNvbXBvc2l0ZUVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQ+IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTE2MCw4MyArMTczLDYgQEAgdm9pZCBT
VkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCi12b2lkIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0g
YW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZV9vcGVyYXRvcigpOwotICAgICAgICBz
eW5jaHJvbml6ZUluMSgpOwotICAgICAgICBzeW5jaHJvbml6ZUluMigpOwotICAgICAgICBzeW5j
aHJvbml6ZUsxKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSzIoKTsKLSAgICAgICAgc3luY2hyb25p
emVLMygpOwotICAgICAgICBzeW5jaHJvbml6ZUs0KCk7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0
dHJOYW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6
OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpvcGVyYXRvckF0dHIpIHsKLSAgICAgICAg
c3luY2hyb25pemVfb3BlcmF0b3IoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4x
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmluMkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVJbjIoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6azFBdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplSzEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6azJBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSzIoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
azNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSzMoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6azRBdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplSzQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVDb21wb3Np
dGVFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
OwotfQotCi12b2lkIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwot
Ci0gICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsUGFzc2VkQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOyAgICAK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5p
bWF0ZWRTdHJpbmcpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6aW4yQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6b3BlcmF0b3JBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmsxQXR0ciwgQW5pbWF0
ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
azJBdHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjprM0F0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Oms0QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotfQot
CiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZChT
VkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBG
aWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAkocmV2
aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDE5ICs4NSwxNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIGJv
b2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAotICAgIC8vIEFuaW1h
dGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKElu
MSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMiwgaW4yKQotICAgIERFQ0xB
UkVfQU5JTUFURURfRU5VTUVSQVRJT04oX29wZXJhdG9yLCBfb3BlcmF0b3IsIENvbXBvc2l0ZU9w
ZXJhdGlvblR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoSzEsIGsxKQotICAgIERF
Q0xBUkVfQU5JTUFURURfTlVNQkVSKEsyLCBrMikKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJF
UihLMywgazMpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoSzQsIGs0KQorICAgIEJFR0lO
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX1NUUklORyhJbjIsIGluMikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJB
VElPTihfb3BlcmF0b3IsIF9vcGVyYXRvciwgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoSzEsIGsxKQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX05VTUJFUihLMiwgazIpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEszLCBr
MykKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoSzQsIGs0KQorICAgIEVORF9ERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
LmNwcAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwyNSArMzQsNDMgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwot
REVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFt
ZXM6OmluQXR0ciwgSW4xLCBpbjEpCi1ERUZJTkVfQU5JTUFURURfSU5URUdFUl9NVUxUSVBMRV9X
UkFQUEVSUyhTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6Om9yZGVyQXR0ciwg
b3JkZXJYSWRlbnRpZmllcigpLCBPcmRlclgsIG9yZGVyWCkKLURFRklORV9BTklNQVRFRF9JTlRF
R0VSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1l
czo6b3JkZXJBdHRyLCBvcmRlcllJZGVudGlmaWVyKCksIE9yZGVyWSwgb3JkZXJZKSAKLURFRklO
RV9BTklNQVRFRF9OVU1CRVJfTElTVChTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFt
ZXM6Omtlcm5lbE1hdHJpeEF0dHIsIEtlcm5lbE1hdHJpeCwga2VybmVsTWF0cml4KQotREVGSU5F
X0FOSU1BVEVEX05VTUJFUihTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OmRp
dmlzb3JBdHRyLCBEaXZpc29yLCBkaXZpc29yKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OmJpYXNBdHRyLCBCaWFzLCBiaWFzKQot
REVGSU5FX0FOSU1BVEVEX0lOVEVHRVIoU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQsIFNWR05h
bWVzOjp0YXJnZXRYQXR0ciwgVGFyZ2V0WCwgdGFyZ2V0WCkKLURFRklORV9BTklNQVRFRF9JTlRF
R0VSKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6dGFyZ2V0WUF0dHIsIFRh
cmdldFksIHRhcmdldFkpCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQsIFNWR05hbWVzOjplZGdlTW9kZUF0dHIsIEVkZ2VNb2RlLCBlZGdlTW9k
ZSwgRWRnZU1vZGVUeXBlKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVS
UyhTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhB
dHRyLCBrZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKSwgS2VybmVsVW5pdExlbmd0aFgsIGtl
cm5lbFVuaXRMZW5ndGhYKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVS
UyhTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhB
dHRyLCBrZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIoKSwgS2VybmVsVW5pdExlbmd0aFksIGtl
cm5lbFVuaXRMZW5ndGhZKQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFscGhhQXR0ciwgUHJlc2VydmVBbHBoYSwg
cHJlc2VydmVBbHBoYSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVG
SU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6
OmluQXR0ciwgSW4xLCBpbjEpCisgICAgREVGSU5FX0FOSU1BVEVEX0lOVEVHRVJfTVVMVElQTEVf
V1JBUFBFUlMoU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQsIFNWR05hbWVzOjpvcmRlckF0dHIs
IG9yZGVyWElkZW50aWZpZXIoKSwgT3JkZXJYLCBvcmRlclgpCisgICAgREVGSU5FX0FOSU1BVEVE
X0lOVEVHRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQsIFNW
R05hbWVzOjpvcmRlckF0dHIsIG9yZGVyWUlkZW50aWZpZXIoKSwgT3JkZXJZLCBvcmRlclkpIAor
ICAgIERFRklORV9BTklNQVRFRF9OVU1CRVJfTElTVChTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dCwgU1ZHTmFtZXM6Omtlcm5lbE1hdHJpeEF0dHIsIEtlcm5lbE1hdHJpeCwga2VybmVsTWF0cml4
KQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQs
IFNWR05hbWVzOjpkaXZpc29yQXR0ciwgRGl2aXNvciwgZGl2aXNvcikKKyAgICBERUZJTkVfQU5J
TUFURURfTlVNQkVSKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6Ymlhc0F0
dHIsIEJpYXMsIGJpYXMpCisgICAgREVGSU5FX0FOSU1BVEVEX0lOVEVHRVIoU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQsIFNWR05hbWVzOjp0YXJnZXRYQXR0ciwgVGFyZ2V0WCwgdGFyZ2V0WCkK
KyAgICBERUZJTkVfQU5JTUFURURfSU5URUdFUihTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwg
U1ZHTmFtZXM6OnRhcmdldFlBdHRyLCBUYXJnZXRZLCB0YXJnZXRZKQorICAgIERFRklORV9BTklN
QVRFRF9FTlVNRVJBVElPTihTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OmVk
Z2VNb2RlQXR0ciwgRWRnZU1vZGUsIGVkZ2VNb2RlLCBFZGdlTW9kZVR5cGUpCisgICAgREVGSU5F
X0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudCwgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBrZXJuZWxVbml0TGVuZ3RoWElk
ZW50aWZpZXIoKSwgS2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhYKQorICAgIERF
RklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQsIFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwga2VybmVsVW5pdExlbmd0
aFlJZGVudGlmaWVyKCksIEtlcm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKKyAg
ICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZH
TmFtZXM6OnByZXNlcnZlQWxwaGFBdHRyLCBQcmVzZXJ2ZUFscGhhLCBwcmVzZXJ2ZUFscGhhKQor
RU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKG9yZGVyWCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShvcmRl
clkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoa2VybmVsTWF0cml4KQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGRpdmlzb3IpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoYmlhcykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWSh0YXJnZXRYKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKHRhcmdldFkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZWRnZU1v
ZGUpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoa2VybmVsVW5pdExlbmd0
aFgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoa2VybmVsVW5pdExlbmd0
aFkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocHJlc2VydmVBbHBoYSkK
KyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwog
CiBpbmxpbmUgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
ICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1
bWVudCkKICAgICAsIG1fZWRnZU1vZGUoRURHRU1PREVfRFVQTElDQVRFKQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUNvbnZvbHZlTWF0cml4VGFnKSk7CisgICAgcmVnaXN0
ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCgpOwogfQog
CiBQYXNzUmVmUHRyPFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50PiBTVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKQEAgLTI0NSw4OCArMjYzLDYgQEAgdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudDo6c3ZnQXR0cgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplRWRnZU1vZGUoKTsKLSAgICAgICAgc3luY2hyb25pemVEaXZp
c29yKCk7Ci0gICAgICAgIHN5bmNocm9uaXplQmlhcygpOwotICAgICAgICBzeW5jaHJvbml6ZVRh
cmdldFgoKTsKLSAgICAgICAgc3luY2hyb25pemVUYXJnZXRZKCk7Ci0gICAgICAgIHN5bmNocm9u
aXplS2VybmVsVW5pdExlbmd0aFgoKTsKLSAgICAgICAgc3luY2hyb25pemVLZXJuZWxVbml0TGVu
Z3RoWSgpOwotICAgICAgICBzeW5jaHJvbml6ZVByZXNlcnZlQWxwaGEoKTsKLSAgICAgICAgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmVkZ2VNb2RlQXR0cikg
ewotICAgICAgICBzeW5jaHJvbml6ZUVkZ2VNb2RlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRpdmlzb3JBdHRyKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplRGl2aXNvcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjpiaWFzQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUJp
YXMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6dGFyZ2V0WEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVUYXJnZXRYKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRhcmdl
dFlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplVGFyZ2V0WSgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3Ro
QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUtlcm5lbFVuaXRMZW5ndGhYKCk7Ci0gICAgICAg
IHN5bmNocm9uaXplS2VybmVsVW5pdExlbmd0aFkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cHJlc2VydmVBbHBoYUF0dHIpIHsKLSAg
ICAgICAgc3luY2hyb25pemVQcmVzZXJ2ZUFscGhhKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om9yZGVyQXR0ciwgQW5pbWF0ZWROdW1iZXJPcHRp
b25hbE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjprZXJuZWxNYXRyaXhBdHRyLCBBbmltYXRlZE51bWJlckxpc3QpOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZGl2aXNvckF0dHIsIEFuaW1hdGVkTnVtYmVy
KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmJpYXNBdHRy
LCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjp0YXJnZXRYQXR0ciwgQW5pbWF0ZWRJbnRlZ2VyKTsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRhcmdldFlBdHRyLCBBbmltYXRlZEludGVnZXIp
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6b3BlcmF0b3JB
dHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBBbmltYXRlZE51bWJlck9wdGlv
bmFsTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OnByZXNlcnZlQWxwaGFBdHRyLCBBbmltYXRlZEJvb2xlYW4pOwotfQotCiBQYXNzUmVmUHRyPEZp
bHRlckVmZmVjdD4gU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVj
dCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAkocmV2
aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsOSArNzgsNiBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFs
IGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIG9yZGVyWElkZW50aWZpZXIoKTsKQEAgLTg4LDE5ICs4NSwy
MCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGtlcm5lbFVuaXRM
ZW5ndGhYSWRlbnRpZmllcigpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGtlcm5l
bFVuaXRMZW5ndGhZSWRlbnRpZmllcigpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVj
bGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCi0gICAgREVD
TEFSRV9BTklNQVRFRF9JTlRFR0VSKE9yZGVyWCwgb3JkZXJYKQotICAgIERFQ0xBUkVfQU5JTUFU
RURfSU5URUdFUihPcmRlclksIG9yZGVyWSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUl9M
SVNUKEtlcm5lbE1hdHJpeCwga2VybmVsTWF0cml4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVN
QkVSKERpdmlzb3IsIGRpdmlzb3IpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQmlhcywg
YmlhcykKLSAgICBERUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoVGFyZ2V0WCwgdGFyZ2V0WCkKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoVGFyZ2V0WSwgdGFyZ2V0WSkKLSAgICBERUNMQVJF
X0FOSU1BVEVEX0VOVU1FUkFUSU9OKEVkZ2VNb2RlLCBlZGdlTW9kZSwgRWRnZU1vZGVUeXBlKQot
ICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0
TGVuZ3RoWCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWSwg
a2VybmVsVW5pdExlbmd0aFkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKFByZXNlcnZl
QWxwaGEsIHByZXNlcnZlQWxwaGEpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X1NUUklORyhJbjEsIGluMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9JTlRFR0VSKE9yZGVy
WCwgb3JkZXJYKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoT3JkZXJZLCBvcmRl
clkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSX0xJU1QoS2VybmVsTWF0cml4LCBr
ZXJuZWxNYXRyaXgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKERpdmlzb3IsIGRp
dmlzb3IpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEJpYXMsIGJpYXMpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihUYXJnZXRYLCB0YXJnZXRYKQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoVGFyZ2V0WSwgdGFyZ2V0WSkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9FTlVNRVJBVElPTihFZGdlTW9kZSwgZWRnZU1vZGUsIEVkZ2VNb2RlVHlwZSkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFgsIGtlcm5l
bFVuaXRMZW5ndGhYKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLZXJuZWxVbml0
TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0aFkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9P
TEVBTihQcmVzZXJ2ZUFscGhhLCBwcmVzZXJ2ZUFscGhhKQorICAgIEVORF9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCShy
ZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMiArMzUsMjIgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5F
X0FOSU1BVEVEX1NUUklORyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpp
bkF0dHIsIEluMSwgaW4xKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQsIFNWR05hbWVzOjpkaWZmdXNlQ29uc3RhbnRBdHRyLCBEaWZmdXNlQ29uc3Rh
bnQsIGRpZmZ1c2VDb25zdGFudCkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0ciwgU3VyZmFjZVNjYWxl
LCBzdXJmYWNlU2NhbGUpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJT
KFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhB
dHRyLCBrZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKSwgS2VybmVsVW5pdExlbmd0aFgsIGtl
cm5lbFVuaXRMZW5ndGhYKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVS
UyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3Ro
QXR0ciwga2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCksIEtlcm5lbFVuaXRMZW5ndGhZLCBr
ZXJuZWxVbml0TGVuZ3RoWSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAg
REVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05h
bWVzOjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVE
aWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6ZGlmZnVzZUNvbnN0YW50QXR0ciwgRGlm
ZnVzZUNvbnN0YW50LCBkaWZmdXNlQ29uc3RhbnQpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJF
UihTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRy
LCBTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVS
X01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6
Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBrZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKSwgS2Vy
bmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhYKQorICAgIERFRklORV9BTklNQVRFRF9O
VU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdO
YW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigp
LCBLZXJuZWxVbml0TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0aFkpCitFTkRfREVGSU5FX0FOSU1B
VEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkoaW4xKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGRpZmZ1c2VD
b25zdGFudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShzdXJmYWNlU2Nh
bGUpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoa2VybmVsVW5pdExlbmd0
aFgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoa2VybmVsVW5pdExlbmd0
aFkpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJ
RVMKIAogaW5saW5lIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6U1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1l
LCBkb2N1bWVudCkKQEAgLTQ4LDYgKzU4LDcgQEAgaW5saW5lIFNWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudDo6U1ZHRgogICAgICwgbV9zdXJmYWNlU2NhbGUoMSkKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShTVkdOYW1lczo6ZmVEaWZmdXNlTGlnaHRpbmdUYWcpKTsKKyAgICByZWdpc3RlckFu
aW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCgpOwogfQogCiBQ
YXNzUmVmUHRyPFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudD4gU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQpAQCAtMTk0LDY3ICsyMDUsNiBAQCB2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudDo6bGlnaHRFCiAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7
CiB9CiAKLXZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9
PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHN5bmNo
cm9uaXplU3VyZmFjZVNjYWxlKCk7Ci0gICAgICAgIHN5bmNocm9uaXplRGlmZnVzZUNvbnN0YW50
KCk7Ci0gICAgICAgIHN5bmNocm9uaXplS2VybmVsVW5pdExlbmd0aFgoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVLZXJuZWxVbml0TGVuZ3RoWSgpOwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFt
ZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5j
aHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6bGlnaHRpbmdfY29sb3JBdHRyKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewotICAgICAg
ICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplU3VyZmFjZVNjYWxlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIpIHsKLSAgICAgICAgc3luY2hy
b25pemVEaWZmdXNlQ29uc3RhbnQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIpIHsKLSAgICAgICAg
c3luY2hyb25pemVLZXJuZWxVbml0TGVuZ3RoWCgpOwotICAgICAgICBzeW5jaHJvbml6ZUtlcm5l
bFVuaXRMZW5ndGhZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFRGlmZnVz
ZUxpZ2h0aW5nRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKLQotICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6
ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKTsgICAgCi0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0
dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVt
YmVyKTsKLX0KLQogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBm
aWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRF
ZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
aWZmdXNlTGlnaHRpbmdFbGVtZW50LmgJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MywyMCArNDMsMTggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRy
aWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJp
YnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1
YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVh
bCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJC
dWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBrZXJu
ZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBrZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIoKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3Bl
cnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQot
ICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKERpZmZ1c2VDb25zdGFudCwgZGlmZnVzZUNvbnN0
YW50KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFN1cmZhY2VTY2FsZSwgc3VyZmFjZVNj
YWxlKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJu
ZWxVbml0TGVuZ3RoWCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVu
Z3RoWSwga2VybmVsVW5pdExlbmd0aFkpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9TVFJJTkcoSW4xLCBpbjEpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKERp
ZmZ1c2VDb25zdGFudCwgZGlmZnVzZUNvbnN0YW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X05VTUJFUihTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhYKQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWSwga2VybmVsVW5pdExl
bmd0aFkpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDEyICszMCwyMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVk
IHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4xLCBpbjEpCi1ERUZJTkVfQU5J
TUFURURfU1RSSU5HKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OmluMkF0
dHIsIEluMiwgaW4yKQotREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRyLCBYQ2hhbm5lbFNl
bGVjdG9yLCB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0b3JUeXBlKQotREVGSU5FX0FO
SU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6
OnlDaGFubmVsU2VsZWN0b3JBdHRyLCBZQ2hhbm5lbFNlbGVjdG9yLCB5Q2hhbm5lbFNlbGVjdG9y
LCBDaGFubmVsU2VsZWN0b3JUeXBlKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQsIFNWR05hbWVzOjpzY2FsZUF0dHIsIFNjYWxlLCBzY2FsZSkKK0JF
R0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklO
RyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4x
KQorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
LCBTVkdOYW1lczo6aW4yQXR0ciwgSW4yLCBpbjIpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1F
UkFUSU9OKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OnhDaGFubmVsU2Vs
ZWN0b3JBdHRyLCBYQ2hhbm5lbFNlbGVjdG9yLCB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2Vs
ZWN0b3JUeXBlKQorICAgIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQsIFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVjdG9yQXR0ciwgWUNoYW5uZWxT
ZWxlY3RvciwgeUNoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSkKKyAgICBERUZJ
TkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6
OnNjYWxlQXR0ciwgU2NhbGUsIHNjYWxlKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVT
CisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGluMSkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjIpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkoeENoYW5uZWxTZWxlY3RvcikKKyAgICBSRUdJU1RFUl9MT0NB
TF9BTklNQVRFRF9QUk9QRVJUWSh5Q2hhbm5lbFNlbGVjdG9yKQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKHNjYWxlKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJ
U1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdGRURpc3BsYWNlbWVudE1hcEVs
ZW1lbnQ6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCkBAIC00Myw2ICs1Myw3IEBAIGlubGlu
ZSBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OlNWR0YKICAgICAsIG1feUNoYW5uZWxTZWxl
Y3RvcihDSEFOTkVMX0EpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlRGlz
cGxhY2VtZW50TWFwVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQ+IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTEzOSw2OSAr
MTUwLDYgQEAgdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN2Z0F0dAogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsK
LSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVhD
aGFubmVsU2VsZWN0b3IoKTsKLSAgICAgICAgc3luY2hyb25pemVZQ2hhbm5lbFNlbGVjdG9yKCk7
Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSW4yKCk7Ci0g
ICAgICAgIHN5bmNocm9uaXplU2NhbGUoKTsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRyKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplWENoYW5uZWxTZWxlY3RvcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVjdG9yQXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZVlDaGFubmVsU2VsZWN0b3IoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmluMkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVJbjIoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
c2NhbGVBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplU2NhbGUoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjphdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJl
dHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAg
ICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAg
PSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbjJBdHRyLCBBbmltYXRlZFN0
cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4Q2hh
bm5lbFNlbGVjdG9yQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVjdG9yQXR0ciwgQW5pbWF0
ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjpzY2FsZUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLX0KLQogUGFzc1JlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBp
bnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgJKHJldmlz
aW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxNyArNzgsMTUgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVh
bCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVBy
b3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAK
LSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1B
VEVEX1NUUklORyhJbjEsIGluMSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjIsIGlu
MikKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFhDaGFubmVsU2VsZWN0b3IsIHhD
aGFubmVsU2VsZWN0b3IsIENoYW5uZWxTZWxlY3RvclR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRF
RF9FTlVNRVJBVElPTihZQ2hhbm5lbFNlbGVjdG9yLCB5Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVs
U2VsZWN0b3JUeXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFNjYWxlLCBzY2FsZSkK
KyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4yLCBpbjIpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfRU5VTUVSQVRJT04oWENoYW5uZWxTZWxlY3RvciwgeENoYW5uZWxTZWxlY3Rvciwg
Q2hhbm5lbFNlbGVjdG9yVHlwZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElP
TihZQ2hhbm5lbFNlbGVjdG9yLCB5Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2VsZWN0b3JUeXBl
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihTY2FsZSwgc2NhbGUpCisgICAgRU5E
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNw
cAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEyICszMiwyMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVf
QU5JTUFURURfU1RSSU5HKFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIs
IEluMSwgaW4xKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRURyb3BTaGFkb3dFbGVtZW50
LCBTVkdOYW1lczo6ZHhBdHRyLCBEeCwgZHgpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZF
RHJvcFNoYWRvd0VsZW1lbnQsIFNWR05hbWVzOjpkeUF0dHIsIER5LCBkeSkKLURFRklORV9BTklN
QVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVEcm9wU2hhZG93RWxlbWVudCwgU1ZH
TmFtZXM6OnN0ZERldmlhdGlvbkF0dHIsIHN0ZERldmlhdGlvblhJZGVudGlmaWVyKCksIFN0ZERl
dmlhdGlvblgsIHN0ZERldmlhdGlvblgpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExF
X1dSQVBQRVJTKFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQsIFNWR05hbWVzOjpzdGREZXZpYXRpb25B
dHRyLCBzdGREZXZpYXRpb25ZSWRlbnRpZmllcigpLCBTdGREZXZpYXRpb25ZLCBzdGREZXZpYXRp
b25ZKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFU
RURfU1RSSU5HKFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwg
aW4xKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVEcm9wU2hhZG93RWxlbWVudCwg
U1ZHTmFtZXM6OmR4QXR0ciwgRHgsIGR4KQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZH
RkVEcm9wU2hhZG93RWxlbWVudCwgU1ZHTmFtZXM6OmR5QXR0ciwgRHksIGR5KQorICAgIERFRklO
RV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVEcm9wU2hhZG93RWxlbWVu
dCwgU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIsIHN0ZERldmlhdGlvblhJZGVudGlmaWVyKCks
IFN0ZERldmlhdGlvblgsIHN0ZERldmlhdGlvblgpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJF
Ul9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRURyb3BTaGFkb3dFbGVtZW50LCBTVkdOYW1lczo6c3Rk
RGV2aWF0aW9uQXR0ciwgc3RkRGV2aWF0aW9uWUlkZW50aWZpZXIoKSwgU3RkRGV2aWF0aW9uWSwg
c3RkRGV2aWF0aW9uWSkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9S
RUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKGR4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKGR5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHN0ZERldmlhdGlv
blgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc3RkRGV2aWF0aW9uWSkK
KyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwog
CiBpbmxpbmUgU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCkBA
IC00Nyw2ICs1Nyw3IEBAIGlubGluZSBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpTVkdGRURyb3AK
ICAgICAsIG1fc3RkRGV2aWF0aW9uWSgyKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05h
bWVzOjpmZURyb3BTaGFkb3dUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0Zv
clNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRURyb3BTaGFk
b3dFbGVtZW50PiBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTQwLDQ3ICsxNTEsNiBAQCB2
b2lkIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnN2Z0F0dHJpYnV0CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3luY2hyb25pemVQ
cm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5h
bWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVN0ZERldmlhdGlvblgoKTsK
LSAgICAgICAgc3luY2hyb25pemVTdGREZXZpYXRpb25ZKCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
RHgoKTsKLSAgICAgICAgc3luY2hyb25pemVEeSgpOwotICAgICAgICBzeW5jaHJvbml6ZUluMSgp
OwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9u
aXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
c3RkRGV2aWF0aW9uQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVN0ZERldmlhdGlvblgoKTsK
LSAgICAgICAgc3luY2hyb25pemVTdGREZXZpYXRpb25ZKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewotICAgICAgICBz
eW5jaHJvbml6ZUluMSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjpkeEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVEeCgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkeUF0
dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVEeSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJC
dWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
dGhpcy0+cmVuZGVyZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFk
b3dFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQuaAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEcm9wU2hhZG93RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxOCArMzksMTggQEAg
cHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7
CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgc3RkRGV2aWF0aW9uWElkZW50aWZpZXIoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBzdGREZXZpYXRpb25ZSWRlbnRpZmllcigpOwogICAgIAotICAgIC8vIEFuaW1hdGVk
IHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwg
aW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKER4LCBkeCkKLSAgICBERUNMQVJFX0FO
SU1BVEVEX05VTUJFUihEeSwgZHkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3RkRGV2
aWF0aW9uWCwgc3RkRGV2aWF0aW9uWCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihTdGRE
ZXZpYXRpb25ZLCBzdGREZXZpYXRpb25ZKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVElFUyhTVkdGRURyb3BTaGFkb3dFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X1NUUklORyhJbjEsIGluMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoRHgsIGR4
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihEeSwgZHkpCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfTlVNQkVSKFN0ZERldmlhdGlvblgsIHN0ZERldmlhdGlvblgpCisgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFN0ZERldmlhdGlvblksIHN0ZERldmlhdGlvblkpCisg
ICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKICAgICAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNw
cAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCwxOSArNzQsNiBAQCBQYXNzUmVmUHRyPEZpbHRl
ckVmZmVjdD4gU1ZHRkVGbG9vZEVsZW1lCiAgICAgcmV0dXJuIEZFRmxvb2Q6OmNyZWF0ZShmaWx0
ZXIsIGNvbG9yLCBvcGFjaXR5KTsKIH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNW
R0ZFRmxvb2RFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwOwotfQotCi12b2lkIFNWR0ZFRmxvb2RFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKQotewotICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
czo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCkpOwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
RklMVEVSUykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRmxvb2RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Rmxvb2RFbGVtZW50LmgJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRmxvb2RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDYgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBTVkdGRUZsb29kRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RB
dHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpOwog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqLCBGaWx0ZXIqKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIs
MTUgKzMyLDI0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKLURFRklORV9BTklNQVRFRF9OVU1C
RVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBTVkdOYW1lczo6
c3RkRGV2aWF0aW9uQXR0ciwgc3RkRGV2aWF0aW9uWElkZW50aWZpZXIoKSwgU3RkRGV2aWF0aW9u
WCwgc3RkRGV2aWF0aW9uWCkKLURFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBF
UlMoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwg
c3RkRGV2aWF0aW9uWUlkZW50aWZpZXIoKSwgU3RkRGV2aWF0aW9uWSwgc3RkRGV2aWF0aW9uWSkK
K0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NU
UklORyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4x
KQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50LCBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwgc3RkRGV2aWF0aW9u
WElkZW50aWZpZXIoKSwgU3RkRGV2aWF0aW9uWCwgc3RkRGV2aWF0aW9uWCkKKyAgICBERUZJTkVf
QU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dCwgU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIsIHN0ZERldmlhdGlvbllJZGVudGlmaWVyKCks
IFN0ZERldmlhdGlvblksIHN0ZERldmlhdGlvblkpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHN0ZERldmlhdGlvblgpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc3RkRGV2aWF0aW9uWSkKKyAgICBSRUdJ
U1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUg
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUdhdXNzaWFuQmx1clRhZykpOworICAgIHJl
Z2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50KCk7CiB9
CiAKIFBhc3NSZWZQdHI8U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50PiBTVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCkBAIC0xMTksNTAgKzEyOCw2IEBAIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50OjpzdmdBdHRyaWIKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdG
RUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAg
ICAgICAgc3luY2hyb25pemVTdGREZXZpYXRpb25YKCk7Ci0gICAgICAgIHN5bmNocm9uaXplU3Rk
RGV2aWF0aW9uWSgpOwotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5h
bWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0cikg
ewotICAgICAgICBzeW5jaHJvbml6ZVN0ZERldmlhdGlvblgoKTsKLSAgICAgICAgc3luY2hyb25p
emVTdGREZXZpYXRpb25ZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0K
LUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAo
KSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQg
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnN0ZERldmlhdGlv
bkF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOwotfQotCiBQYXNzUmVmUHRyPEZp
bHRlckVmZmVjdD4gU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3Qq
IGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAkocmV2aXNpb24g
OTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDE4ICs0MCwxNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
LCBGaWx0ZXIqKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN0ZERldmlhdGlv
blhJZGVudGlmaWVyKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3RkRGV2aWF0
aW9uWUlkZW50aWZpZXIoKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9u
cwotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5J
TUFURURfTlVNQkVSKFN0ZERldmlhdGlvblgsIHN0ZERldmlhdGlvblgpCi0gICAgREVDTEFSRV9B
TklNQVRFRF9OVU1CRVIoU3RkRGV2aWF0aW9uWSwgc3RkRGV2aWF0aW9uWSkKKyAgICBCRUdJTl9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50KQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9OVU1CRVIoU3RkRGV2aWF0aW9uWCwgc3RkRGV2aWF0aW9uWCkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9OVU1CRVIoU3RkRGV2aWF0aW9uWSwgc3RkRGV2aWF0aW9uWSkKKyAgICBF
TkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJKHJldmlz
aW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzksMTUgKzM5LDI0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9QUkVT
RVJWRUFTUEVDVFJBVElPKFNWR0ZFSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6cHJlc2VydmVBc3Bl
Y3RSYXRpb0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCi1E
RUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFSW1hZ2VFbGVtZW50LCBYTGlua05hbWVzOjpocmVm
QXR0ciwgSHJlZiwgaHJlZikKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0ZFSW1hZ2VFbGVt
ZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVf
QU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJB
VElPKFNWR0ZFSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIs
IFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgREVGSU5FX0FO
SU1BVEVEX1NUUklORyhTVkdGRUltYWdlRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhy
ZWYsIGhyZWYpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHRkVJbWFnZUVsZW1lbnQs
IFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFU
RURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZF
SW1hZ2VFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHByZXNl
cnZlQXNwZWN0UmF0aW8pCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJl
ZikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9Q
Uk9QRVJUSUVTCiAKIGlubGluZSBTVkdGRUltYWdlRWxlbWVudDo6U1ZHRkVJbWFnZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDog
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUltYWdlVGFnKSk7CisgICAgcmVn
aXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRUltYWdlRWxlbWVudCgpOwogfQogCiBQYXNz
UmVmUHRyPFNWR0ZFSW1hZ2VFbGVtZW50PiBTVkdGRUltYWdlRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTEzOCw1NCAr
MTQ3LDYgQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbgogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChh
dHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplUHJlc2VydmVBc3Bl
Y3RSYXRpbygpOwotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgc3luY2hyb25p
emVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJO
YW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5
bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfSAgIAot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cikg
ewotICAgICAgICBzeW5jaHJvbml6ZVByZXNlcnZlQXNwZWN0UmF0aW8oKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRUltYWdlRWxl
bWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0K
LQotdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIs
IEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0KIHZv
aWQgU1ZHRkVJbWFnZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikKIHsK
ICAgICBpZiAoIWluRG9jdW1lbnQoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUlt
YWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdl
RWxlbWVudC5oCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUlt
YWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw5ICs1MSw2IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1
YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0g
ICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZp
cnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7
CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNo
U2V0PEtVUkw+JikgY29uc3Q7CkBAIC02MSwxNCArNTgsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgcmVxdWVzdEltYWdlUmVzb3VyY2UoKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRl
Y2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVz
ZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQotCi0gICAgLy8gU1ZHVVJJUmVm
ZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKLQotICAgIC8v
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xF
QU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkK
KyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVJbWFnZUVsZW1lbnQp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFz
cGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBF
TkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRJbWFnZT4gbV9jYWNoZWRJbWFnZTsKICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IG1f
dGFyZ2V0SW1hZ2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5j
cHAJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMjIgKzM2LDM3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklN
QVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjphemltdXRoQXR0ciwgQXpp
bXV0aCwgYXppbXV0aCkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQs
IFNWR05hbWVzOjplbGV2YXRpb25BdHRyLCBFbGV2YXRpb24sIGVsZXZhdGlvbikKLURFRklORV9B
TklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkK
LURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjp5QXR0
ciwgWSwgeSkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05h
bWVzOjp6QXR0ciwgWiwgeikKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1l
bnQsIFNWR05hbWVzOjpwb2ludHNBdFhBdHRyLCBQb2ludHNBdFgsIHBvaW50c0F0WCkKLURFRklO
RV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjpwb2ludHNBdFlB
dHRyLCBQb2ludHNBdFksIHBvaW50c0F0WSkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVM
aWdodEVsZW1lbnQsIFNWR05hbWVzOjpwb2ludHNBdFpBdHRyLCBQb2ludHNBdFosIHBvaW50c0F0
WikKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjpz
cGVjdWxhckV4cG9uZW50QXR0ciwgU3BlY3VsYXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkK
LURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjpsaW1p
dGluZ0NvbmVBbmdsZUF0dHIsIExpbWl0aW5nQ29uZUFuZ2xlLCBsaW1pdGluZ0NvbmVBbmdsZSkK
K0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX05V
TUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OmF6aW11dGhBdHRyLCBBemltdXRoLCBh
emltdXRoKQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNW
R05hbWVzOjplbGV2YXRpb25BdHRyLCBFbGV2YXRpb24sIGVsZXZhdGlvbikKKyAgICBERUZJTkVf
QU5JTUFURURfTlVNQkVSKFNWR0ZFTGlnaHRFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgp
CisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6
OnlBdHRyLCBZLCB5KQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1l
bnQsIFNWR05hbWVzOjp6QXR0ciwgWiwgeikKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNW
R0ZFTGlnaHRFbGVtZW50LCBTVkdOYW1lczo6cG9pbnRzQXRYQXR0ciwgUG9pbnRzQXRYLCBwb2lu
dHNBdFgpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVudCwgU1ZH
TmFtZXM6OnBvaW50c0F0WUF0dHIsIFBvaW50c0F0WSwgcG9pbnRzQXRZKQorICAgIERFRklORV9B
TklNQVRFRF9OVU1CRVIoU1ZHRkVMaWdodEVsZW1lbnQsIFNWR05hbWVzOjpwb2ludHNBdFpBdHRy
LCBQb2ludHNBdFosIHBvaW50c0F0WikKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZF
TGlnaHRFbGVtZW50LCBTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIsIFNwZWN1bGFyRXhw
b25lbnQsIHNwZWN1bGFyRXhwb25lbnQpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdG
RUxpZ2h0RWxlbWVudCwgU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0ciwgTGltaXRpbmdD
b25lQW5nbGUsIGxpbWl0aW5nQ29uZUFuZ2xlKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJU
SUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVMaWdodEVsZW1l
bnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoYXppbXV0aCkKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShlbGV2YXRpb24pCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWSh5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHopCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocG9pbnRzQXRYKQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHBvaW50c0F0WSkKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWShwb2ludHNBdFopCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkoc3BlY3VsYXJFeHBvbmVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWShsaW1pdGluZ0NvbmVBbmdsZSkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJU
SUVTCiAKIFNWR0ZFTGlnaHRFbGVtZW50OjpTVkdGRUxpZ2h0RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KQogICAgICwgbV9zcGVjdWxhckV4cG9uZW50KDEpCiB7CisgICAgcmVn
aXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRUxpZ2h0RWxlbWVudCgpOwogfQogCiBTVkdG
RUxpZ2h0RWxlbWVudCogU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdodEVsZW1lbnQoY29uc3Qg
U1ZHRWxlbWVudCogc3ZnRWxlbWVudCkKQEAgLTE5NCwxMDIgKzIwOSw2IEBAIHZvaWQgU1ZHRkVM
aWdodEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAotdm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUo
KSkgewotICAgICAgICBzeW5jaHJvbml6ZUF6aW11dGgoKTsKLSAgICAgICAgc3luY2hyb25pemVF
bGV2YXRpb24oKTsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
WSgpOwotICAgICAgICBzeW5jaHJvbml6ZVooKTsKLSAgICAgICAgc3luY2hyb25pemVQb2ludHNB
dFgoKTsKLSAgICAgICAgc3luY2hyb25pemVQb2ludHNBdFkoKTsKLSAgICAgICAgc3luY2hyb25p
emVQb2ludHNBdFooKTsKLSAgICAgICAgc3luY2hyb25pemVTcGVjdWxhckV4cG9uZW50KCk7Ci0g
ICAgICAgIHN5bmNocm9uaXplTGltaXRpbmdDb25lQW5nbGUoKTsKLSAgICAgICAgU1ZHRWxlbWVu
dDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBT
VkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICAKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmF6aW11dGhBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplQXppbXV0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjplbGV2YXRpb25BdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplRWxldmF0aW9uKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
WCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjp5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ekF0dHIpIHsKLSAgICAgICAg
c3luY2hyb25pemVaKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVQb2lu
dHNBdFgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6cG9pbnRzQXRZQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVBvaW50c0F0WSgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
Ojpwb2ludHNBdFpBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplUG9pbnRzQXRaKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwZWN1
bGFyRXhwb25lbnRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplU3BlY3VsYXJFeHBvbmVudCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
OjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVMaW1pdGluZ0Nv
bmVBbmdsZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRUxpZ2h0RWxlbWVu
dDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQot
dm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkK
LXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6YXppbXV0aEF0dHIsIEFuaW1hdGVkTnVt
YmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmVsZXZh
dGlvbkF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ekF0dHIsIEFuaW1hdGVk
TnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnBv
aW50c0F0WEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoU1ZHTmFtZXM6OnBvaW50c0F0WUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnBvaW50c0F0WkF0dHIsIEFu
aW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIsIEFu
aW1hdGVkTnVtYmVyKTsKLX0KLQogdm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVy
Q2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxk
Q291bnREZWx0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaAko
cmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDIsMjIgKzQyLDIwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVh
bCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZh
bHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBj
aGlsZENvdW50RGVsdGEgPSAwKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0
aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEF6aW11dGgsIGF6aW11dGgpCi0gICAg
REVDTEFSRV9BTklNQVRFRF9OVU1CRVIoRWxldmF0aW9uLCBlbGV2YXRpb24pCi0gICAgREVDTEFS
RV9BTklNQVRFRF9OVU1CRVIoWCwgeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihZLCB5
KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFosIHopCi0gICAgREVDTEFSRV9BTklNQVRF
RF9OVU1CRVIoUG9pbnRzQXRYLCBwb2ludHNBdFgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1C
RVIoUG9pbnRzQXRZLCBwb2ludHNBdFkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoUG9p
bnRzQXRaLCBwb2ludHNBdFopCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3BlY3VsYXJF
eHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihM
aW1pdGluZ0NvbmVBbmdsZSwgbGltaXRpbmdDb25lQW5nbGUpCisgICAgQkVHSU5fREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFTGlnaHRFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX05VTUJFUihBemltdXRoLCBhemltdXRoKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X05VTUJFUihFbGV2YXRpb24sIGVsZXZhdGlvbikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9O
VU1CRVIoWCwgeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoWSwgeSkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoWiwgeikKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9OVU1CRVIoUG9pbnRzQXRYLCBwb2ludHNBdFgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
TlVNQkVSKFBvaW50c0F0WSwgcG9pbnRzQXRZKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05V
TUJFUihQb2ludHNBdFosIHBvaW50c0F0WikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1C
RVIoU3BlY3VsYXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9OVU1CRVIoTGltaXRpbmdDb25lQW5nbGUsIGxpbWl0aW5nQ29uZUFuZ2xlKQorICAg
IEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAkocmV2
aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MCwxOSArNjAsNiBAQCBQYXNzUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVNZXJnZUVsZW1lCiAgICAgcmV0dXJuIGVmZmVjdC5yZWxlYXNlKCk7CiB9CiAKLUF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRU1lcmdlRWxlbWVudDo6YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICBy
ZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRU1lcmdl
RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpKTsKLX0KLQogfQogCiAjZW5k
aWYgLy8gRU5BQkxFKFNWRykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDYg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdGRU1lcmdlRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMyArMzIsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVE
X1NUUklORyhTVkdGRU1lcmdlTm9kZUVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4x
KQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURf
U1RSSU5HKFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4xLCBpbjEp
CitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdGRU1lcmdlTm9kZUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoaW4xKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMK
IAogaW5saW5lIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6U1ZHRkVNZXJnZU5vZGVFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNW
R0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZH
TmFtZXM6OmZlTWVyZ2VOb2RlVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNG
b3JTVkdGRU1lcmdlTm9kZUVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRU1lcmdlTm9k
ZUVsZW1lbnQ+IFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTk0LDM4ICsxMDAsNiBAQCB2b2lk
IFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3ZnQXR0cmlidXRlCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRU1lcmdlTm9kZUVs
ZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19
Ci0KLXZvaWQgU1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKQotewotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkuc2V0KFNWR05hbWVz
OjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQotdm9pZCBTVkdGRU1lcmdlTm9kZUVsZW1l
bnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17
Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVJ
bjEoKTsKLSAgICAgICAgU1ZHRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRl
KGF0dHJOYW1lKSkgewotICAgICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0gICAKLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdl
Tm9kZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJn
ZU5vZGVFbGVtZW50LmgJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTWVyZ2VOb2RlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMiArMzcsMTAgQEAg
cHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7
CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9u
cwotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAgIEJFR0lOX0RFQ0xB
UkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRU1lcmdlTm9kZUVsZW1lbnQpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNjIy
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSwxNyArMzEsMjcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0v
LyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhT
VkdGRU1vcnBob2xvZ3lFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKLURFRklO
RV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRU1vcnBob2xvZ3lFbGVtZW50LCBTVkdOYW1lczo6
b3BlcmF0b3JBdHRyLCBfb3BlcmF0b3IsIF9vcGVyYXRvciwgTW9ycGhvbG9neU9wZXJhdG9yVHlw
ZSkKLURFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudCwgU1ZHTmFtZXM6OnJhZGl1c0F0dHIsIHJhZGl1c1hJZGVudGlmaWVyKCksIFJh
ZGl1c1gsIHJhZGl1c1gpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJT
KFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQsIFNWR05hbWVzOjpyYWRpdXNBdHRyLCByYWRpdXNZSWRl
bnRpZmllcigpLCBSYWRpdXNZLCByYWRpdXNZKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQs
IFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQorICAgIERFRklORV9BTklNQVRFRF9FTlVNRVJB
VElPTihTVkdGRU1vcnBob2xvZ3lFbGVtZW50LCBTVkdOYW1lczo6b3BlcmF0b3JBdHRyLCBfb3Bl
cmF0b3IsIF9vcGVyYXRvciwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSkKKyAgICBERUZJTkVfQU5J
TUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQsIFNW
R05hbWVzOjpyYWRpdXNBdHRyLCByYWRpdXNYSWRlbnRpZmllcigpLCBSYWRpdXNYLCByYWRpdXNY
KQorICAgIERFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudCwgU1ZHTmFtZXM6OnJhZGl1c0F0dHIsIHJhZGl1c1lJZGVudGlmaWVyKCks
IFJhZGl1c1ksIHJhZGl1c1kpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVH
SU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRU1vcnBob2xvZ3lFbGVtZW50KQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGluMSkKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShfb3BlcmF0b3IpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkocmFkaXVzWCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWShyYWRpdXNZKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRF
RF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpTVkdGRU1vcnBo
b2xvZ3lFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1l
LCBkb2N1bWVudCkKICAgICAsIG1fX29wZXJhdG9yKEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9E
RSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVNb3JwaG9sb2d5VGFnKSk7
CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRU1vcnBob2xvZ3lFbGVtZW50
KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVNb3JwaG9sb2d5RWxlbWVudD4gU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKQEAgLTE0NSw1NyArMTU1LDYgQEAgdm9pZCBTVkdGRU1vcnBob2xvZ3lFbGVt
ZW50OjpzdmdBdHRyaWJ1dAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNW
R0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAg
ICAgICAgc3luY2hyb25pemVfb3BlcmF0b3IoKTsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsK
LSAgICAgICAgc3luY2hyb25pemVSYWRpdXNYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUmFkaXVz
WSgpOwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNo
cm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1l
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6b3BlcmF0b3JBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplX29wZXJhdG9yKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0
cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpyYWRpdXNBdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplUmFkaXVzWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVJhZGl1c1koKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6YXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAg
ICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRU1v
cnBob2xvZ3lFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAg
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9
IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciwgQW5pbWF0
ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjpyYWRpdXNBdHRyLCBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKLX0KLQogUGFz
c1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRl
ckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgJKHJldmlz
aW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTkgKzcwLDE3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgYm9v
bCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBR
dWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVm
ZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCiAgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgcmFkaXVzWElkZW50aWZpZXIoKTsKICAgICBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiByYWRpdXNZSWRlbnRpZmllcigpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJv
cGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEp
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihfb3BlcmF0b3IsIF9vcGVyYXRvciwg
TW9ycGhvbG9neU9wZXJhdG9yVHlwZSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihSYWRp
dXNYLCByYWRpdXNYKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFJhZGl1c1ksIHJhZGl1
c1kpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKF9vcGVyYXRvciwgX29wZXJhdG9yLCBN
b3JwaG9sb2d5T3BlcmF0b3JUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihS
YWRpdXNYLCByYWRpdXNYKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihSYWRpdXNZ
LCByYWRpdXNZKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNl
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNl
dEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU9mZnNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNSArMzEsMjQgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwot
REVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGRU9mZnNldEVsZW1lbnQsIFNWR05hbWVzOjppbkF0
dHIsIEluMSwgaW4xKQotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRU9mZnNldEVsZW1lbnQs
IFNWR05hbWVzOjpkeEF0dHIsIER4LCBkeCkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVP
ZmZzZXRFbGVtZW50LCBTVkdOYW1lczo6ZHlBdHRyLCBEeSwgZHkpCitCRUdJTl9ERUZJTkVfQU5J
TUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVPZmZzZXRF
bGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKKyAgICBERUZJTkVfQU5JTUFURURf
TlVNQkVSKFNWR0ZFT2Zmc2V0RWxlbWVudCwgU1ZHTmFtZXM6OmR4QXR0ciwgRHgsIGR4KQorICAg
IERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVPZmZzZXRFbGVtZW50LCBTVkdOYW1lczo6ZHlB
dHRyLCBEeSwgZHkpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVH
SVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRU9mZnNldEVsZW1lbnQpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1B
VEVEX1BST1BFUlRZKGR4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGR5
KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVT
CiAKIGlubGluZSBTVkdGRU9mZnNldEVsZW1lbnQ6OlNWR0ZFT2Zmc2V0RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlT2Zmc2V0VGFnKSk7CisgICAgcmVnaXN0ZXJB
bmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRU9mZnNldEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0
cjxTVkdGRU9mZnNldEVsZW1lbnQ+IFNWR0ZFT2Zmc2V0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTEwMSw1NSArMTEw
LDYgQEAgdm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0ZFT2Zmc2V0RWxlbWVudDo6c3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0
ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUR4KCk7Ci0gICAgICAg
IHN5bmNocm9uaXplRHkoKTsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmR4QXR0cikgewotICAg
ICAgICBzeW5jaHJvbml6ZUR4KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmR5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUR5KCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OmluQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBTVkdGRU9mZnNldEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVPZmZzZXRFbGVtZW50OjpmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OmR4QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZHlBdHRyLCBBbmltYXRlZE51bWJlcik7Ci19
Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU9mZnNldEVsZW1lbnQ6OmJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZp
bHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCShyZXZpc2lvbiA5
MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsMTUgKzM4LDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRl
ciopOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFS
RV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIo
RHgsIGR4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKER5LCBkeSkKKyAgICBCRUdJTl9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVPZmZzZXRFbGVtZW50KQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9OVU1CRVIoRHgsIGR4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihEeSwgZHkp
CisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDEzICszNiwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHBy
b3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwgaW4xKQotREVGSU5FX0FOSU1B
VEVEX05VTUJFUihTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6c3BlY3Vs
YXJDb25zdGFudEF0dHIsIFNwZWN1bGFyQ29uc3RhbnQsIHNwZWN1bGFyQ29uc3RhbnQpCi1ERUZJ
TkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVz
OjpzcGVjdWxhckV4cG9uZW50QXR0ciwgU3BlY3VsYXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVu
dCkKLURFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwg
U1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIsIFN1cmZhY2VTY2FsZSwgc3VyZmFjZVNjYWxlKQot
REVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50LCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIGtlcm5lbFVuaXRM
ZW5ndGhYSWRlbnRpZmllcigpLCBLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgp
Ci1ERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwga2VybmVsVW5p
dExlbmd0aFlJZGVudGlmaWVyKCksIEtlcm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3Ro
WSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVE
X1NUUklORyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJ
bjEsIGluMSkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQsIFNWR05hbWVzOjpzcGVjdWxhckNvbnN0YW50QXR0ciwgU3BlY3VsYXJDb25zdGFu
dCwgc3BlY3VsYXJDb25zdGFudCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciwgU3Bl
Y3VsYXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkKKyAgICBERUZJTkVfQU5JTUFURURfTlVN
QkVSKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpzdXJmYWNlU2NhbGVB
dHRyLCBTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSkKKyAgICBERUZJTkVfQU5JTUFURURfTlVN
QkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05h
bWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwga2VybmVsVW5pdExlbmd0aFhJZGVudGlmaWVyKCks
IEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWCkKKyAgICBERUZJTkVfQU5JTUFU
RURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQs
IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwga2VybmVsVW5pdExlbmd0aFlJZGVudGlm
aWVyKCksIEtlcm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKK0VORF9ERUZJTkVf
QU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkoaW4xKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHNw
ZWN1bGFyQ29uc3RhbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc3Bl
Y3VsYXJFeHBvbmVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShzdXJm
YWNlU2NhbGUpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoa2VybmVsVW5p
dExlbmd0aFgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoa2VybmVsVW5p
dExlbmd0aFkpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BS
T1BFUlRJRVMKIAogaW5saW5lIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OlNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
KHRhZ05hbWUsIGRvY3VtZW50KQpAQCAtNTEsNiArNjIsNyBAQCBpbmxpbmUgU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudDo6U1ZHCiAgICAgLCBtX3N1cmZhY2VTY2FsZSgxKQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZVNwZWN1bGFyTGlnaHRpbmdUYWcpKTsKKyAgICBy
ZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQo
KTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50PiBTVkdGRVNw
ZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMjA0LDcxICsyMTYsNiBAQCB2b2lkIFNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQ6OmxpZ2h0CiAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdl
ZChhdHRyTmFtZSk7CiB9CiAKLXZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBp
ZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwot
ICAgICAgICBzeW5jaHJvbml6ZVN1cmZhY2VTY2FsZSgpOwotICAgICAgICBzeW5jaHJvbml6ZVNw
ZWN1bGFyQ29uc3RhbnQoKTsKLSAgICAgICAgc3luY2hyb25pemVTcGVjdWxhckV4cG9uZW50KCk7
Ci0gICAgICAgIHN5bmNocm9uaXplS2VybmVsVW5pdExlbmd0aFgoKTsKLSAgICAgICAgc3luY2hy
b25pemVLZXJuZWxVbml0TGVuZ3RoWSgpOwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJv
bml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4x
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnN1cmZhY2VTY2FsZUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVTdXJmYWNlU2NhbGUo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6c3BlY3VsYXJDb25zdGFudEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVTcGVjdWxhckNv
bnN0YW50KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplU3Bl
Y3VsYXJFeHBvbmVudCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0cikgewotICAgICAgICBzeW5jaHJv
bml6ZUtlcm5lbFVuaXRMZW5ndGhYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplS2VybmVsVW5pdExl
bmd0aFkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cDsKLX0KLQotdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQ
YXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIs
IEFuaW1hdGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OnNwZWN1bGFyQ29uc3RhbnRBdHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciwg
QW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6c3VyZmFjZVNjYWxlQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIEFuaW1h
dGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOwotfQotCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmls
dGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEg
PSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAkocmV2aXNpb24g
OTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwyMSArNDIsMTkgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCBi
b29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVy
RWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKTsKICAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIoKTsK
IAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5J
TUFURURfU1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFNwZWN1
bGFyQ29uc3RhbnQsIHNwZWN1bGFyQ29uc3RhbnQpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1C
RVIoU3BlY3VsYXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkKLSAgICBERUNMQVJFX0FOSU1B
VEVEX05VTUJFUihTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSkKLSAgICBERUNMQVJFX0FOSU1B
VEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgpCi0gICAgREVD
TEFSRV9BTklNQVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZ
KQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3BlY3VsYXJDb25zdGFudCwgc3BlY3Vs
YXJDb25zdGFudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3BlY3VsYXJFeHBv
bmVudCwgc3BlY3VsYXJFeHBvbmVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIo
U3VyZmFjZVNjYWxlLCBzdXJmYWNlU2NhbGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVN
QkVSKEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWCkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZKQor
ICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMyArMzIsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NU
UklORyhTVkdGRVRpbGVFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKK0JFR0lO
X0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhT
VkdGRVRpbGVFbGVtZW50LCBTVkdOYW1lczo6aW5BdHRyLCBJbjEsIGluMSkKK0VORF9ERUZJTkVf
QU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR0ZFVGlsZUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
aW4xKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJU
SUVTCiAKIGlubGluZSBTVkdGRVRpbGVFbGVtZW50OjpTVkdGRVRpbGVFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBB
U1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVUaWxlVGFnKSk7CisgICAgcmVnaXN0ZXJBbmlt
YXRlZFByb3BlcnRpZXNGb3JTVkdGRVRpbGVFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZH
RkVUaWxlRWxlbWVudD4gU1ZHRkVUaWxlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTg2LDQxICs5Myw2IEBAIHZvaWQg
U1ZHRkVUaWxlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmcKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIH0KIAotdm9pZCBTVkdGRVRpbGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlR
TmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRl
KGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIAotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFVGls
ZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7
Ci19Ci0KLXZvaWQgU1ZHRkVUaWxlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsUGFzc2VkQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmlu
Zyk7Ci19Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVRpbGVFbGVtZW50OjpidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAg
ICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4x
KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCShyZXZpc2lvbiA5
MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDEzICszNywxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9u
aXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIq
KTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVf
QU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVElFUyhTVkdGRVRpbGVFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklO
RyhJbjEsIGluMSkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTMg
KzMwLDI0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkg
ZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZH
RkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OmJhc2VGcmVxdWVuY3lBdHRyLCBiYXNlRnJl
cXVlbmN5WElkZW50aWZpZXIoKSwgQmFzZUZyZXF1ZW5jeVgsIGJhc2VGcmVxdWVuY3lYKQotREVG
SU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRVR1cmJ1bGVuY2VFbGVt
ZW50LCBTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0dHIsIGJhc2VGcmVxdWVuY3lZSWRlbnRpZmll
cigpLCBCYXNlRnJlcXVlbmN5WSwgYmFzZUZyZXF1ZW5jeVkpCi1ERUZJTkVfQU5JTUFURURfSU5U
RUdFUihTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6bnVtT2N0YXZlc0F0dHIsIE51
bU9jdGF2ZXMsIG51bU9jdGF2ZXMpCi1ERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQsIFNWR05hbWVzOjpzZWVkQXR0ciwgU2VlZCwgc2VlZCkKLURFRklORV9BTklN
QVRFRF9FTlVNRVJBVElPTihTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6c3RpdGNo
VGlsZXNBdHRyLCBTdGl0Y2hUaWxlcywgc3RpdGNoVGlsZXMsIFNWR1N0aXRjaE9wdGlvbnMpCi1E
RUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFt
ZXM6OnR5cGVBdHRyLCBUeXBlLCB0eXBlLCBUdXJidWxlbmNlVHlwZSkKK0JFR0lOX0RFRklORV9B
TklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9X
UkFQUEVSUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0
dHIsIGJhc2VGcmVxdWVuY3lYSWRlbnRpZmllcigpLCBCYXNlRnJlcXVlbmN5WCwgYmFzZUZyZXF1
ZW5jeVgpCisgICAgREVGSU5FX0FOSU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdG
RVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0dHIsIGJhc2VGcmVx
dWVuY3lZSWRlbnRpZmllcigpLCBCYXNlRnJlcXVlbmN5WSwgYmFzZUZyZXF1ZW5jeVkpCisgICAg
REVGSU5FX0FOSU1BVEVEX0lOVEVHRVIoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6
Om51bU9jdGF2ZXNBdHRyLCBOdW1PY3RhdmVzLCBudW1PY3RhdmVzKQorICAgIERFRklORV9BTklN
QVRFRF9OVU1CRVIoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OnNlZWRBdHRyLCBT
ZWVkLCBzZWVkKQorICAgIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50LCBTVkdOYW1lczo6c3RpdGNoVGlsZXNBdHRyLCBTdGl0Y2hUaWxlcywgc3RpdGNo
VGlsZXMsIFNWR1N0aXRjaE9wdGlvbnMpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9O
KFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIFNWR05hbWVzOjp0eXBlQXR0ciwgVHlwZSwgdHlwZSwg
VHVyYnVsZW5jZVR5cGUpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5f
UkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50KQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGJhc2VGcmVxdWVuY3lYKQorICAgIFJF
R0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGJhc2VGcmVxdWVuY3lZKQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKG51bU9jdGF2ZXMpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkoc2VlZCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWShzdGl0Y2hUaWxlcykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WSh0eXBlKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9Q
RVJUSUVTCiAKIGlubGluZSBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpTVkdGRVR1cmJ1bGVuY2VF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
ICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1
bWVudCkKQEAgLTQ1LDYgKzU2LDcgQEAgaW5saW5lIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OlNW
R0ZFVHVyYgogICAgICwgbV90eXBlKEZFVFVSQlVMRU5DRV9UWVBFX1RVUkJVTEVOQ0UpCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlVHVyYnVsZW5jZVRhZykpOworICAgIHJl
Z2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVUdXJidWxlbmNlRWxlbWVudCgpOwogfQog
CiBQYXNzUmVmUHRyPFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ+IFNWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCkBAIC0xNjAsNzEgKzE3Miw2IEBAIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6c3Zn
QXR0cmlidXQKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRVR1cmJ1
bGVuY2VFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplVHlwZSgpOwotICAgICAgICBzeW5jaHJvbml6ZVN0aXRjaFRpbGVzKCk7Ci0gICAg
ICAgIHN5bmNocm9uaXplQmFzZUZyZXF1ZW5jeVgoKTsKLSAgICAgICAgc3luY2hyb25pemVCYXNl
RnJlcXVlbmN5WSgpOwotICAgICAgICBzeW5jaHJvbml6ZVNlZWQoKTsKLSAgICAgICAgc3luY2hy
b25pemVOdW1PY3RhdmVzKCk7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAg
ICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJv
cGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjp0eXBlQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVR5cGUoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
c3RpdGNoVGlsZXNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplU3RpdGNoVGlsZXMoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6YmFz
ZUZyZXF1ZW5jeUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVCYXNlRnJlcXVlbmN5WCgpOwot
ICAgICAgICBzeW5jaHJvbml6ZUJhc2VGcmVxdWVuY3lZKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNlZWRBdHRyKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplU2VlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjpudW1PY3RhdmVzQXR0cikgewotICAgICAgICBzeW5jaHJvbml6
ZU51bU9jdGF2ZXMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVUdXJidWxl
bmNlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cDsKLX0KLQotdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpiYXNlRnJlcXVlbmN5
QXR0ciwgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpudW1PY3RhdmVzQXR0ciwgQW5pbWF0ZWRJbnRlZ2Vy
KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNlZWRBdHRy
LCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjpzdGl0Y2hUaWxlc0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dHlwZUF0dHIsIEFuaW1hdGVkRW51
bWVyYXRpb24pOwotfQotCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUdXJidWxlbmNl
RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciogZmlsdGVyKQogewogICAg
IGlmIChiYXNlRnJlcXVlbmN5WCgpIDwgMCB8fCBiYXNlRnJlcXVlbmN5WSgpIDwgMCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAkocmV2aXNpb24g
OTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDUsMjEgKzEwNSwxOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIGJvb2wg
c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGJhc2VGcmVxdWVuY3lYSWRlbnRpZmllcigpOwogICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGJhc2VGcmVxdWVuY3lZSWRlbnRpZmllcigpOwog
Ci0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklN
QVRFRF9OVU1CRVIoQmFzZUZyZXF1ZW5jeVgsIGJhc2VGcmVxdWVuY3lYKQotICAgIERFQ0xBUkVf
QU5JTUFURURfTlVNQkVSKEJhc2VGcmVxdWVuY3lZLCBiYXNlRnJlcXVlbmN5WSkKLSAgICBERUNM
QVJFX0FOSU1BVEVEX0lOVEVHRVIoTnVtT2N0YXZlcywgbnVtT2N0YXZlcykKLSAgICBERUNMQVJF
X0FOSU1BVEVEX05VTUJFUihTZWVkLCBzZWVkKQotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVS
QVRJT04oU3RpdGNoVGlsZXMsIHN0aXRjaFRpbGVzLCBTVkdTdGl0Y2hPcHRpb25zKQotICAgIERF
Q0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oVHlwZSwgdHlwZSwgVHVyYnVsZW5jZVR5cGUpCisg
ICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEJhc2VGcmVxdWVuY3lYLCBiYXNl
RnJlcXVlbmN5WCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQmFzZUZyZXF1ZW5j
eVksIGJhc2VGcmVxdWVuY3lZKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoTnVt
T2N0YXZlcywgbnVtT2N0YXZlcykKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU2Vl
ZCwgc2VlZCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihTdGl0Y2hUaWxl
cywgc3RpdGNoVGlsZXMsIFNWR1N0aXRjaE9wdGlvbnMpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfRU5VTUVSQVRJT04oVHlwZSwgdHlwZSwgVHVyYnVsZW5jZVR5cGUpCisgICAgRU5EX0RFQ0xB
UkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2MjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDIzICszNiwzNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1h
dGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZH
RmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OmZpbHRlclVuaXRzQXR0ciwgRmlsdGVyVW5pdHMsIGZp
bHRlclVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQotREVGSU5FX0FOSU1BVEVEX0VO
VU1FUkFUSU9OKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpwcmltaXRpdmVVbml0c0F0dHIs
IFByaW1pdGl2ZVVuaXRzLCBwcmltaXRpdmVVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlw
ZSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OnhB
dHRyLCBYLCB4KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGaWx0ZXJFbGVtZW50LCBTVkdO
YW1lczo6eUF0dHIsIFksIHkpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlckVsZW1l
bnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKLURFRklORV9BTklNQVRFRF9M
RU5HVEgoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhlaWdodCwgaGVp
Z2h0KQotREVGSU5FX0FOSU1BVEVEX0lOVEVHRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRmlsdGVy
RWxlbWVudCwgU1ZHTmFtZXM6OmZpbHRlclJlc0F0dHIsIGZpbHRlclJlc1hJZGVudGlmaWVyKCks
IEZpbHRlclJlc1gsIGZpbHRlclJlc1gpCi1ERUZJTkVfQU5JTUFURURfSU5URUdFUl9NVUxUSVBM
RV9XUkFQUEVSUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6ZmlsdGVyUmVzQXR0ciwgZmls
dGVyUmVzWUlkZW50aWZpZXIoKSwgRmlsdGVyUmVzWSwgZmlsdGVyUmVzWSkKLURFRklORV9BTklN
QVRFRF9TVFJJTkcoU1ZHRmlsdGVyRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYs
IGhyZWYpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1l
czo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJP
UEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdGaWx0ZXJFbGVtZW50
LCBTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyLCBGaWx0ZXJVbml0cywgZmlsdGVyVW5pdHMsIFNW
R1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9O
KFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpwcmltaXRpdmVVbml0c0F0dHIsIFByaW1pdGl2
ZVVuaXRzLCBwcmltaXRpdmVVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICBE
RUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwg
WCwgeCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05h
bWVzOjp5QXR0ciwgWSwgeSkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlckVs
ZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKKyAgICBERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBIZWln
aHQsIGhlaWdodCkKKyAgICBERUZJTkVfQU5JTUFURURfSU5URUdFUl9NVUxUSVBMRV9XUkFQUEVS
UyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6ZmlsdGVyUmVzQXR0ciwgZmlsdGVyUmVzWElk
ZW50aWZpZXIoKSwgRmlsdGVyUmVzWCwgZmlsdGVyUmVzWCkKKyAgICBERUZJTkVfQU5JTUFURURf
SU5URUdFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6Zmls
dGVyUmVzQXR0ciwgZmlsdGVyUmVzWUlkZW50aWZpZXIoKSwgRmlsdGVyUmVzWSwgZmlsdGVyUmVz
WSkKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZpbHRlckVsZW1lbnQsIFhMaW5rTmFt
ZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNW
R0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwg
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VO
RF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR0ZpbHRlckVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkoZmlsdGVyVW5pdHMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkocHJpbWl0aXZlVW5pdHMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
eCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5KQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHdpZHRoKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1B
VEVEX1BST1BFUlRZKGhlaWdodCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShmaWx0ZXJSZXNYKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGZpbHRl
clJlc1kpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZpbHRlckVs
ZW1lbnQ6OlNWR0ZpbHRlckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkKLSAgICAsIFNWR1VSSVJlZmVyZW5jZSgpCi0gICAgLCBTVkdMYW5nU3BhY2UoKQotICAgICwg
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCiAgICAgLCBtX2ZpbHRlclVuaXRzKFNWR1Vu
aXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkKICAgICAsIG1fcHJpbWl0
aXZlVW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKQogICAg
ICwgbV94KExlbmd0aE1vZGVXaWR0aCwgIi0xMCUiKQpAQCAtNjMsNiArNzQsNyBAQCBpbmxpbmUg
U1ZHRmlsdGVyRWxlbWVudDo6U1ZHRmlsdGVyRWxlbWVuCiAgICAgLy8gU3BlYzogSWYgdGhlIHgv
eSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVl
IG9mICItMTAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICAvLyBTcGVjOiBJZiB0aGUgd2lkdGgvaGVp
Z2h0IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFs
dWUgb2YgIjEyMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05h
bWVzOjpmaWx0ZXJUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0Zp
bHRlckVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGaWx0ZXJFbGVtZW50PiBTVkdGaWx0
ZXJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQpAQCAtMTg5LDk4ICsyMDEsNiBAQCB2b2lkIFNWR0ZpbHRlckVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nCiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiB9
CiAKLXZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkg
ewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAg
ICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAg
ICAgICAgc3luY2hyb25pemVGaWx0ZXJVbml0cygpOwotICAgICAgICBzeW5jaHJvbml6ZVByaW1p
dGl2ZVVuaXRzKCk7Ci0gICAgICAgIHN5bmNocm9uaXplRmlsdGVyUmVzWCgpOwotICAgICAgICBz
eW5jaHJvbml6ZUZpbHRlclJlc1koKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICBTVkdT
dHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
Ojp4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVdpZHRoKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omhl
aWdodEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplRmlsdGVyVW5pdHMoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cHJpbWl0aXZlVW5pdHNBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplUHJpbWl0aXZlVW5pdHMoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZmlsdGVyUmVzQXR0cikg
ewotICAgICAgICBzeW5jaHJvbml6ZUZpbHRlclJlc1goKTsKLSAgICAgICAgc3luY2hyb25pemVG
aWx0ZXJSZXNZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAg
ICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgU1ZHRmlsdGVyRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAs
IHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyLCBBbmlt
YXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OnByaW1pdGl2ZVVuaXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5n
dGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0dHIs
IEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZmlsdGVyUmVzQXR0ciwg
QW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0KIHZv
aWQgU1ZHRmlsdGVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2Vy
LCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERl
bHRhKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQ
YXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgJKHJldmlzaW9uIDkwNjIyKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NTQsOSArNTQsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdl
ID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAK
ICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSopOwpAQCAtNjYsMjEgKzYzLDE4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgZmlsdGVyUmVzWElkZW50aWZpZXIoKTsKICAgICBzdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nJiBmaWx0ZXJSZXNZSWRlbnRpZmllcigpOwogCi0gICAgLy8gQW5pbWF0
ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElP
TihGaWx0ZXJVbml0cywgZmlsdGVyVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihQcmltaXRpdmVVbml0cywgcHJpbWl0aXZl
VW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEgoWCwgeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQotICAgIERFQ0xB
UkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSChIZWlnaHQsIGhlaWdodCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoRmlsdGVy
UmVzWCwgZmlsdGVyUmVzWCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoRmlsdGVyUmVz
WSwgZmlsdGVyUmVzWSkKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERFQ0xBUkVfQU5J
TUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgQkVHSU5fREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlckVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfRU5VTUVSQVRJT04oRmlsdGVyVW5pdHMsIGZpbHRlclVuaXRzLCBTVkdVbml0VHlwZXM6OlNW
R1VuaXRUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFByaW1pdGl2
ZVVuaXRzLCBwcmltaXRpdmVVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9MRU5HVEgoWSwgeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdp
ZHRoKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9JTlRFR0VSKEZpbHRlclJlc1gsIGZpbHRlclJlc1gpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihGaWx0ZXJSZXNZLCBmaWx0ZXJSZXNZKQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9
OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkocmV2aXNpb24gOTA2MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTEgKzM3LDIyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTmFtZXM6OnhBdHRy
LCBYLCB4KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKLURFRklORV9BTklNQVRFRF9MRU5H
VEgoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdOYW1lczo6d2lkdGhB
dHRyLCBXaWR0aCwgd2lkdGgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhlaWdodCwgaGVp
Z2h0KQotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMsIFNWR05hbWVzOjpyZXN1bHRBdHRyLCBSZXN1bHQsIHJlc3VsdCkKK0JFR0lOX0RF
RklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkK
KyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcywgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQorICAgIERFRklORV9BTklNQVRFRF9MRU5H
VEgoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdOYW1lczo6d2lkdGhB
dHRyLCBXaWR0aCwgd2lkdGgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQs
IGhlaWdodCkKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcywgU1ZHTmFtZXM6OnJlc3VsdEF0dHIsIFJlc3VsdCwgcmVzdWx0KQor
RU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorICAgIFJF
R0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh3
aWR0aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShoZWlnaHQpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocmVzdWx0KQorICAgIFJFR0lTVEVSX1BB
UkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVsZW1lbnQpCitFTkRfUkVHSVNURVJf
QU5JTUFURURfUFJPUEVSVElFUwogCiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KQpAQCAtNTIsNiArNjMsNyBAQCBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM6OlNWCiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIHgveSBhdHRyaWJ1
dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIwJSIg
d2VyZSBzcGVjaWZpZWQuCiAgICAgLy8gU3BlYzogSWYgdGhlIHdpZHRoL2hlaWdodCBhdHRyaWJ1
dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIxMDAl
IiB3ZXJlIHNwZWNpZmllZC4KKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcygpOwogfQogCiBib29sIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBAIC0xMjEsNTEgKzEzMyw2IEBAIHZvaWQgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGUKICAgICBpbnZhbGlkYXRlKCk7CiB9CiAKLXZvaWQg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoteyAgICAKLSAgICBpZiAoYXR0ck5hbWUg
PT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgc3luY2hy
b25pemVZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAgc3luY2hyb25p
emVIZWlnaHQoKTsKLSAgICAgICAgc3luY2hyb25pemVSZXN1bHQoKTsKLSAgICAgICAgU1ZHU3R5
bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewot
ICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
eEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplWSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjp3aWR0aEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWln
aHRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJlc3VsdEF0dHIpIHsKLSAg
ICAgICAgc3luY2hyb25pemVSZXN1bHQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCiB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2Rl
KiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQog
ewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIs
IGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkBAIC0yMDQsMTcg
KzE3MSw2IEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGUKICAgICBm
aWx0ZXJFZmZlY3QtPnNldEVmZmVjdEJvdW5kYXJpZXMoZWZmZWN0QkJveCk7CiB9CiAKLXZvaWQg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsUGFzc2VkQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKQotewotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAg
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5p
bWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5n
dGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cmVzdWx0
QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotfQotCiBSZW5kZXJPYmplY3QqIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5h
LCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkocmV2aXNp
b24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDYgQEAgcHJvdGVjdGVk
OgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0g
ICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwotICAgIHZvaWQgZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwJik7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChi
b29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2Rl
KiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIGlubGlu
ZSB2b2lkIGludmFsaWRhdGUoKQpAQCAtNzMsMTIgKzcxLDEzIEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5
bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVy
aW5nQ29udGV4dCYpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSChZLCB5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKLSAgICBERUNMQVJFX0FO
SU1BVEVEX1NUUklORyhSZXN1bHQsIHJlc3VsdCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X0xFTkdUSChZLCB5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwgd2lk
dGgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhSZXN1bHQsIHJlc3VsdCkKKyAgICBFTkRfREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAkocmV2aXNpb24gOTA2MjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA0LDIwICsxMDQsNiBAQCBib29sIFNWR0ZpdFRvVmlld0JveDo6cGFyc2VNYXBwZWRB
dHRyaWJ1CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNWR0ZpdFRvVmlld0JveDo6c3lu
Y2hyb25pemVQcm9wZXJ0aWVzKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAg
IGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplVmlld0Jv
eCgpOwotICAgICAgICBzeW5jaHJvbml6ZVByZXNlcnZlQXNwZWN0UmF0aW8oKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dmlld0JveEF0
dHIpCi0gICAgICAgIHN5bmNocm9uaXplVmlld0JveCgpOwotICAgIGVsc2UgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cikKLSAgICAgICAgc3luY2hyb25p
emVQcmVzZXJ2ZUFzcGVjdFJhdGlvKCk7Ci19Ci0KIGJvb2wgU1ZHRml0VG9WaWV3Qm94Ojppc0tu
b3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIHJldHVy
biBhdHRyTmFtZSA9PSBTVkdOYW1lczo6dmlld0JveEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZpdFRvVmlld0JveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRU
b1ZpZXdCb3guaAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0
VG9WaWV3Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDE0ICs0MywxMCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShEb2N1bWVudCosIEF0dHJpYnV0ZSopOwogICAg
IGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdm9pZCBh
ZGRTdXBwb3J0ZWRBdHRyaWJ1dGVzKEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4mKTsKLSAgICB2b2lk
IHN5bmNocm9uaXplUHJvcGVydGllcyhjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICB2aXJ0
dWFsIHZvaWQgc2V0Vmlld0JveEJhc2VWYWx1ZShjb25zdCBGbG9hdFJlY3QmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldFByZXNlcnZlQXNwZWN0UmF0aW9CYXNlVmFsdWUoY29uc3QgU1ZHUHJl
c2VydmVBc3BlY3RSYXRpbyYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVZp
ZXdCb3goKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJlc2VydmVBc3BlY3RS
YXRpbygpID0gMDsKLQogcHJpdmF0ZToKICAgICBib29sIHBhcnNlVmlld0JveChEb2N1bWVudCos
IGNvbnN0IFN0cmluZyYsIEZsb2F0UmVjdCYpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZvbnRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRm9udEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiwxNCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwot
REVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHRm9udEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisg
ICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHRm9udEVsZW1lbnQsIFNWR05hbWVzOjpleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUwor
CitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZvbnRFbGVtZW50KQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkRWxl
bWVudCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdGb250
RWxlbWVudDo6U1ZHRm9udEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkgCkBAIC00NSw2ICs1MSw3IEBAIGlubGluZSBTVkdGb250RWxlbWVudDo6U1ZHRm9udEVsZW1l
bnQoY28KICAgICAsIG1faXNHbHlwaENhY2hlVmFsaWQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoU1ZHTmFtZXM6OmZvbnRUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVy
dGllc0ZvclNWR0ZvbnRFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRm9udEVsZW1lbnQ+
IFNWR0ZvbnRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQpAQCAtNTIsMTQgKzU5LDYgQEAgUGFzc1JlZlB0cjxTVkdGb250RWxl
bWVudD4gU1ZHRm9udEVsZW1lbgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRm9udEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBTVkdGb250RWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBTVkdT
dHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLQotICAgIGlmIChh
dHRyTmFtZSA9PSBhbnlRTmFtZSgpIHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQoKTsKLX0KLQogdm9pZCBTVkdGb250RWxlbWVudDo6aW52YWxpZGF0ZUds
eXBoQ2FjaGUoKQogewogICAgIGlmIChtX2lzR2x5cGhDYWNoZVZhbGlkKSB7CkBAIC0yNTksMTcg
KzI1OCw2IEBAIEdseXBoIFNWR0ZvbnRFbGVtZW50OjptaXNzaW5nR2x5cGgoKQogICAgIHJldHVy
biBtX21pc3NpbmdHbHlwaDsKIH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0Zv
bnRFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
OwotfQotCi12b2lkIFNWR0ZvbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQotewotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpKTsKLX0KLQogfQogCiAjZW5k
aWYgLy8gRU5BQkxFKFNWR19GT05UUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVu
dC5oCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MywxOCArNzMsMTQgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBTVkdGb250RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5n
Q29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9ICAKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZvaWQgZW5zdXJl
R2x5cGhDYWNoZSgpOwogICAgIHZvaWQgcmVnaXN0ZXJMaWdhdHVyZXNJbkdseXBoQ2FjaGUoVmVj
dG9yPFN0cmluZz4mKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwot
Ci0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFU
RURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGb250RWxl
bWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVElFUwogCiAgICAgS2VybmluZ1BhaXJWZWN0b3IgbV9ob3Jpem9udGFsS2Vy
bmluZ1BhaXJzOwogICAgIEtlcm5pbmdQYWlyVmVjdG9yIG1fdmVydGljYWxLZXJuaW5nUGFpcnM7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5j
cHAJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTMgKzM0LDI1IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklO
RV9BTklNQVRFRF9MRU5HVEgoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjp4QXR0
ciwgWCwgeCkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQs
IFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKLURFRklO
RV9BTklNQVRFRF9MRU5HVEgoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjpoZWln
aHRBdHRyLCBIZWlnaHQsIGhlaWdodCkKLURFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQotREVGSU5F
X0FOSU1BVEVEX0JPT0xFQU4oU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjpleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVT
CisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZH
TmFtZXM6OnhBdHRyLCBYLCB4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKKyAgICBERUZJTkVfQU5JTUFU
RURfTEVOR1RIKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBX
aWR0aCwgd2lkdGgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGb3JlaWduT2JqZWN0
RWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhlaWdodCwgaGVpZ2h0KQorICAgIERFRklO
RV9BTklNQVRFRF9TVFJJTkcoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFhMaW5rTmFtZXM6Omhy
ZWZBdHRyLCBIcmVmLCBocmVmKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0ZvcmVp
Z25PYmplY3RFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIs
IEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitF
TkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWSh4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZ
KHkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkod2lkdGgpCisgICAgUkVH
SVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaGVpZ2h0KQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKGhyZWYpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJ
U1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6U1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpCkBAIC01MCw2ICs2Miw3IEBAIGlubGluZSBTVkdGb3JlaWduT2JqZWN0RWxl
bWVudDo6U1ZHRm9yZWkKICAgICAsIG1faGVpZ2h0KExlbmd0aE1vZGVIZWlnaHQpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RUYWcpKTsKKyAgICByZWdp
c3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KCk7CiB9CiAK
IFBhc3NSZWZQdHI8U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ+IFNWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQpAQCAtMTM0LDc2ICsxNDcsNiBAQCB2b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50Ojpz
dmdBdHRyaWJ1CiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFy
ZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVyZXIpOwogfQogCi12b2lkIFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgc3luY2hyb25p
emVXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAgICBzeW5jaHJv
bml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgc3luY2hyb25pemVIcmVm
KCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5h
bWUpOwotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQ
cm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlz
U3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVkoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
d2lkdGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0
aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17ICAgIAotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBh
c3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBB
bmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExl
bmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6Omhy
ZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0KIFJlbmRlck9iamVjdCogU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5
bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdGb3JlaWduT2JqZWN0KHRo
aXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50
LmgJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDI2ICs0NSwyNSBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAg
dmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwot
ICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2
aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9k
ZSopIGNvbnN0OwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSk7CiAKICAgICB2aXJ0dWFsIGJvb2wg
c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RI
KFdpZHRoLCB3aWR0aCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdo
dCkKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5H
KEhyZWYsIGhyZWYpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAg
REVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSChYLCB4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwgd2lkdGgpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBF
TkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5j
aHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVk
RXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxh
bmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1l
bnQuY3BwCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEzICszMSwyMSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotREVGSU5FX0FOSU1B
VEVEX0JPT0xFQU4oU1ZHR0VsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1B
VEVEX0JPT0xFQU4oU1ZHR0VsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKK0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR0dFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1B
VEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFS
RU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisg
ICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVH
SVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBTVkdHRWxlbWVudDo6U1ZHR0VsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmdUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJv
cGVydGllc0ZvclNWR0dFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHR0VsZW1lbnQ+IFNW
R0dFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQpAQCAtODksNDQgKzk3LDYgQEAgdm9pZCBTVkdHRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjbwogICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFu
ZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyKTsKIH0KIAotdm9pZCBTVkdHRWxl
bWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
LXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6
ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9u
aXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAg
ICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFt
ZSkpIHsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRy
TmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0dFbGVtZW50OjphdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwot
ICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0dF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKSk7Ci19Ci0KIFJlbmRlck9iamVjdCogU1ZH
R0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUq
IHN0eWxlKQogewogICAgIC8vIFNWRyAxLjEgdGVzdHN1aXRlIGV4cGxpY2l0ZWx5IHVzZXMgY29u
c3RydWN0cyBsaWtlIDxnIGRpc3BsYXk9Im5vbmUiPjxsaW5lYXJHcmFkaWVudD4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdHRWxlbWVudC5oCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxNiArNTEsMTcgQEAgcHJp
dmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAg
ICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0
IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNs
YXJhdGlvbnMKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHR0VsZW1l
bnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMKIAotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJl
cXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1
aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9u
cyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkg
eyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOSwyMCArMTI5LDYgQEAgc3RhdGljIGlubGlu
ZSBmbG9hdCBwYXJzZVNWR0dseXBoQXR0cmlidQogICAgIHJldHVybiB2YWx1ZS50b0Zsb2F0KCk7
CiB9CiAKLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdHbHlwaEVsZW1lbnQ6OmF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7
Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZH
R2x5cGhFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRo
aXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRFbGVtZW50
OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
ZEF0dHIsIEFuaW1hdGVkUGF0aCk7Ci19Ci0KIFNWR0dseXBoIFNWR0dseXBoRWxlbWVudDo6YnVp
bGRHZW5lcmljR2x5cGhJZGVudGlmaWVyKGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQpCiB7CiAg
ICAgU1ZHR2x5cGggaWRlbnRpZmllcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlw
aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVt
ZW50LmgJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0Niw4IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgU1ZHR2x5cGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwog
CisgICAgLy8gRklYTUU6IHN2Z0F0dHJpYnV0ZUNoYW5nZWQgbWlzc2luZy4KICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7Ci0gICAgdmlydHVhbCB2b2lk
IGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlZEZyb21Eb2N1bWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50
RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dy
YWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE4ICszOCwyOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1E
RUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6
c3ByZWFkTWV0aG9kQXR0ciwgU3ByZWFkTWV0aG9kLCBzcHJlYWRNZXRob2QsIFNWR1NwcmVhZE1l
dGhvZFR5cGUpCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHR3JhZGllbnRFbGVtZW50
LCBTVkdOYW1lczo6Z3JhZGllbnRVbml0c0F0dHIsIEdyYWRpZW50VW5pdHMsIGdyYWRpZW50VW5p
dHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCi1ERUZJTkVfQU5JTUFURURfVFJBTlNGT1JN
X0xJU1QoU1ZHR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6Z3JhZGllbnRUcmFuc2Zvcm1BdHRy
LCBHcmFkaWVudFRyYW5zZm9ybSwgZ3JhZGllbnRUcmFuc2Zvcm0pCi1ERUZJTkVfQU5JTUFURURf
U1RSSU5HKFNWR0dyYWRpZW50RWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhy
ZWYpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVz
OjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKLQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BS
T1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHR3JhZGllbnRFbGVt
ZW50LCBTVkdOYW1lczo6c3ByZWFkTWV0aG9kQXR0ciwgU3ByZWFkTWV0aG9kLCBzcHJlYWRNZXRo
b2QsIFNWR1NwcmVhZE1ldGhvZFR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9O
KFNWR0dyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRyLCBHcmFkaWVu
dFVuaXRzLCBncmFkaWVudFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQorICAgIERF
RklORV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChTVkdHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVz
OjpncmFkaWVudFRyYW5zZm9ybUF0dHIsIEdyYWRpZW50VHJhbnNmb3JtLCBncmFkaWVudFRyYW5z
Zm9ybSkKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0dyYWRpZW50RWxlbWVudCwgWExp
bmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xF
QU4oU1ZHR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdHcmFkaWVudEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoc3ByZWFkTWV0aG9kKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1B
VEVEX1BST1BFUlRZKGdyYWRpZW50VW5pdHMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkoZ3JhZGllbnRUcmFuc2Zvcm0pCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkoaHJlZikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR1N0eWxlZEVsZW1lbnQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElF
UworIAogU1ZHR3JhZGllbnRFbGVtZW50OjpTVkdHcmFkaWVudEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fc3ByZWFkTWV0aG9kKFNWR1NwcmVhZE1l
dGhvZFBhZCkKICAgICAsIG1fZ3JhZGllbnRVbml0cyhTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZ
UEVfT0JKRUNUQk9VTkRJTkdCT1gpCiB7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNG
b3JTVkdHcmFkaWVudEVsZW1lbnQoKTsKIH0KIAogYm9vbCBTVkdHcmFkaWVudEVsZW1lbnQ6Omlz
U3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpAQCAtMTE2
LDYxICsxMjcsNiBAQCB2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhCiAg
ICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKICAgICAgICAgb2JqZWN0
LT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KLQotdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OnN5
bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAg
aWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVHcmFkaWVu
dFVuaXRzKCk7Ci0gICAgICAgIHN5bmNocm9uaXplR3JhZGllbnRUcmFuc2Zvcm0oKTsKLSAgICAg
ICAgc3luY2hyb25pemVTcHJlYWRNZXRob2QoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAg
ICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0
ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjpncmFkaWVudFVuaXRzQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUdyYWRpZW50
VW5pdHMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6Z3JhZGllbnRUcmFuc2Zvcm1BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplR3Jh
ZGllbnRUcmFuc2Zvcm0oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6c3ByZWFkTWV0aG9kQXR0cikgewotICAgICAgICBzeW5jaHJvbml6
ZVNwcmVhZE1ldGhvZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBTVkdHcmFk
aWVudEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApCi17Ci0gICAg
U1ZHU3R5bGVkRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLQotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6c3ByZWFkTWV0aG9kQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpncmFkaWVudFVu
aXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIsIEFuaW1hdGVkVHJhbnNm
b3JtTGlzdCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6
OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19CiAgICAgCiB2b2lkIFNWR0dyYWRpZW50RWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVD
aGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAkocmV2aXNpb24gOTA2MjIpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTczLDcgKzczLDYgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1NwcmVhZE1ldGhv
ZAogICAgIH0KIH07CiAKLQogY2xhc3MgU1ZHR3JhZGllbnRFbGVtZW50IDogcHVibGljIFNWR1N0
eWxlZEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVVJJUmVm
ZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQgewpAQCAtOTMsMjQgKzkyLDE5IEBAIHByb3RlY3RlZDoKICAgICBib29s
IGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2b2lk
IGZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBuZWVkc1BlbmRpbmdSZXNv
dXJjZUhhbmRsaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVm
b3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRh
ID0gMCk7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNM
QVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNwcmVhZE1ldGhvZCwgc3ByZWFkTWV0aG9kLCBTVkdT
cHJlYWRNZXRob2RUeXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oR3JhZGll
bnRVbml0cywgZ3JhZGllbnRVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKEdyYWRpZW50VHJhbnNmb3JtLCBncmFkaWVu
dFRyYW5zZm9ybSkKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERFQ0xBUkVfQU5JTUFU
RURfU1RSSU5HKEhyZWYsIGhyZWYpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR0dyYWRpZW50RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9FTlVNRVJBVElPTihTcHJlYWRNZXRob2QsIHNwcmVhZE1ldGhvZCwgU1ZHU3ByZWFkTWV0aG9k
VHlwZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihHcmFkaWVudFVuaXRz
LCBncmFkaWVudFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKEdyYWRpZW50VHJhbnNmb3JtLCBncmFkaWVudFRy
YW5zZm9ybSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE0ICszNiwy
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmlu
aXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ltYWdlRWxlbWVudCwgU1ZHTmFtZXM6
OnhBdHRyLCBYLCB4KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdJbWFnZUVsZW1lbnQsIFNW
R05hbWVzOjp5QXR0ciwgWSwgeSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHSW1hZ2VFbGVt
ZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0aCwgd2lkdGgpCi1ERUZJTkVfQU5JTUFURURf
TEVOR1RIKFNWR0ltYWdlRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhlaWdodCwgaGVp
Z2h0KQotREVGSU5FX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oU1ZHSW1hZ2VFbGVtZW50
LCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8s
IHByZXNlcnZlQXNwZWN0UmF0aW8pCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ltYWdlRWxl
bWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCi1ERUZJTkVfQU5JTUFURURf
Qk9PTEVBTihTVkdJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1B
VEVEX0xFTkdUSChTVkdJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKKyAgICBE
RUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ltYWdlRWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZ
LCB5KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1l
czo6d2lkdGhBdHRyLCBXaWR0aCwgd2lkdGgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChT
VkdJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdodCkKKyAg
ICBERUZJTkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhTVkdJbWFnZUVsZW1lbnQsIFNW
R05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJl
c2VydmVBc3BlY3RSYXRpbykKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ltYWdlRWxl
bWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCisgICAgREVGSU5FX0FOSU1B
VEVEX0JPT0xFQU4oU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNU
RVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdJbWFnZUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkoeCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWSh5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHdpZHRoKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGhlaWdodCkKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGhyZWYpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJF
TlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAg
ICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJ
U1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdJbWFnZUVsZW1lbnQ6OlNWR0lt
YWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCiAgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkKQEAgLTU0LDYgKzY3LDcgQEAgaW5saW5lIFNWR0ltYWdlRWxlbWVudDo6U1ZHSW1hZ2VFbGVt
ZW50KAogICAgICwgbV9pbWFnZUxvYWRlcih0aGlzKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KFNWR05hbWVzOjppbWFnZVRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9y
U1ZHSW1hZ2VFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHSW1hZ2VFbGVtZW50PiBTVkdJ
bWFnZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCkBAIC0xNzMsODggKzE4Nyw2IEBAIHZvaWQgU1ZHSW1hZ2VFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2UKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBT
VkdJbWFnZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAg
c3luY2hyb25pemVYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICBzeW5jaHJv
bml6ZVdpZHRoKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHN5bmNo
cm9uaXplUHJlc2VydmVBc3BlY3RSYXRpbygpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAg
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAg
ICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRy
TmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0
cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplWCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjp5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikgewotICAgICAgICBzeW5j
aHJvbml6ZUhlaWdodCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cikgewotICAgICAgICBzeW5j
aHJvbml6ZVByZXNlcnZlQXNwZWN0UmF0aW8oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdVUklSZWZlcmVuY2U6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVz
KHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHSW1hZ2VF
bGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwot
fQotCi12b2lkIFNWR0ltYWdlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTGVu
Z3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OndpZHRo
QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIEFu
aW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0KIGJvb2wg
U1ZHSW1hZ2VFbGVtZW50OjpzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4geCgpLmlzUmVsYXRpdmUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1l
bnQuaAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDkgKzUxLDYgQEAgcHJpdmF0ZToKICAgICBib29s
IGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJ
bnRvRG9jdW1lbnQoKTsKQEAgLTY4LDE4ICs2NSwyMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBk
ZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQotICAgIERFQ0xB
UkVfQU5JTUFURURfTEVOR1RIKFksIHkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lk
dGgsIHdpZHRoKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQot
ICAgIERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJh
dGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAg
REVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHSW1hZ2VFbGVtZW50KQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdU
SChZLCB5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwgd2lkdGgpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oUHJlc2VydmVBc3BlY3RSYXRpbywg
cHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJl
ZiwgaHJlZikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1
aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWly
ZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMo
dGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsg
U1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KIAogICAgIFNWR0lt
YWdlTG9hZGVyIG1faW1hZ2VMb2FkZXI7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xpbmVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGlu
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
aW5lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEyICszMywyMyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJ
TkVfQU5JTUFURURfTEVOR1RIKFNWR0xpbmVFbGVtZW50LCBTVkdOYW1lczo6eDFBdHRyLCBYMSwg
eDEpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0xpbmVFbGVtZW50LCBTVkdOYW1lczo6eTFB
dHRyLCBZMSwgeTEpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0xpbmVFbGVtZW50LCBTVkdO
YW1lczo6eDJBdHRyLCBYMiwgeDIpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0xpbmVFbGVt
ZW50LCBTVkdOYW1lczo6eTJBdHRyLCBZMiwgeTIpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihT
VkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorQkVH
SU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RI
KFNWR0xpbmVFbGVtZW50LCBTVkdOYW1lczo6eDFBdHRyLCBYMSwgeDEpCisgICAgREVGSU5FX0FO
SU1BVEVEX0xFTkdUSChTVkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6OnkxQXR0ciwgWTEsIHkxKQor
ICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZUVsZW1lbnQsIFNWR05hbWVzOjp4MkF0
dHIsIFgyLCB4MikKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0xpbmVFbGVtZW50LCBT
VkdOYW1lczo6eTJBdHRyLCBZMiwgeTIpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZH
TGluZUVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9E
RUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR0xpbmVFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKHgxKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHkxKQorICAgIFJF
R0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgyKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKHkyKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZ
KGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAgUkVHSVNURVJf
UEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5JTUFU
RURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHTGluZUVsZW1lbnQ6OlNWR0xpbmVFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQpAQCAtNDgsNiAr
NTksNyBAQCBpbmxpbmUgU1ZHTGluZUVsZW1lbnQ6OlNWR0xpbmVFbGVtZW50KGNvCiAgICAgLCBt
X3kyKExlbmd0aE1vZGVIZWlnaHQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6
OmxpbmVUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0xpbmVFbGVt
ZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHTGluZUVsZW1lbnQ+IFNWR0xpbmVFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpA
QCAtMTQ1LDc0ICsxNTcsNiBAQCB2b2lkIFNWR0xpbmVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHTGluZUVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0g
ICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVYMSgp
OwotICAgICAgICBzeW5jaHJvbml6ZVkxKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWDIoKTsKLSAg
ICAgICAgc3luY2hyb25pemVZMigpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0
aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpz
eW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
eDFBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWDEoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eTFBdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplWTEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6eDJBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWDIoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eTJBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplWTIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVy
dGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0xp
bmVFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
OwotfQotCi12b2lkIFNWR0xpbmVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OngxQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eTFBdHRyLCBBbmltYXRl
ZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4
MkF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnkyQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotfQotCiB2b2lkIFNWR0xpbmVF
bGVtZW50Ojp0b1BhdGhEYXRhKFBhdGgmIHBhdGgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHBhdGgu
aXNFbXB0eSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oCShyZXZpc2lv
biA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Nyw5ICs0Nyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgdG9QYXRoRGF0YShQYXRoJikgY29uc3Q7CiAKQEAgLTU3LDE0ICs1NCwxOCBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsK
IAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5J
TUFURURfTEVOR1RIKFgxLCB4MSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZMSwgeTEp
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWDIsIHgyKQotICAgIERFQ0xBUkVfQU5JTUFU
RURfTEVOR1RIKFkyLCB5MikKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQK
LSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwg
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHTGluZUVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RI
KFgxLCB4MSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWTEsIHkxKQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYMiwgeDIpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfTEVOR1RIKFkyLCB5MikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5E
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0
dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hy
b25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9u
aXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4
dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5n
dWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MCwxMSArNDAsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRl
ZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjp4MUF0dHIsIFgxLCB4MSkKLURFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6eTFBdHRyLCBZMSwg
eTEpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZH
TmFtZXM6OngyQXR0ciwgWDIsIHgyKQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjp5MkF0dHIsIFkyLCB5MikKK0JFR0lOX0RFRklORV9B
TklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjp4MUF0dHIsIFgxLCB4MSkKKyAgICBERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OnkxQXR0ciwg
WTEsIHkxKQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50LCBTVkdOYW1lczo6eDJBdHRyLCBYMiwgeDIpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdU
SChTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjp5MkF0dHIsIFkyLCB5MikKK0VO
RF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWSh4MSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WSh5MSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh4MikKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5MikKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdHcmFkaWVudEVsZW1lbnQpCitFTkRfUkVHSVNURVJfQU5JTUFU
RURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpTVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQogICAgIDogU1ZHR3JhZGllbnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQpA
QCAtNTUsNiArNjQsNyBAQCBpbmxpbmUgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpTVkdMaW5l
CiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIHgyIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0
aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEwMCUiIHdlcmUgc3BlY2lmaWVkLgogICAg
IEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpsaW5lYXJHcmFkaWVudFRhZykpOworICAgIHJl
Z2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50KCk7CiB9
CiAKIFBhc3NSZWZQdHI8U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50PiBTVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCkBAIC0xMTksNjIgKzEyOSw2IEBAIHZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50OjpzdmdBdHRyaWIKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0K
IAotdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17ICAgIAotICAgIGlmIChhdHRyTmFtZSA9PSBh
bnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWDEoKTsKLSAgICAgICAgc3luY2hyb25p
emVZMSgpOwotICAgICAgICBzeW5jaHJvbml6ZVgyKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWTIo
KTsKLSAgICAgICAgU1ZHR3JhZGllbnRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJO
YW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0dyYWRpZW50RWxlbWVudDo6c3luY2hyb25p
emVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9ICAgCi0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OngxQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVgx
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnkxQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVkxKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OngyQXR0cikgewotICAgICAg
ICBzeW5jaHJvbml6ZVgyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OnkyQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVkyKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQot
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6YXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgp
KTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
Ci17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR0dy
YWRpZW50RWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OngxQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eTFBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4MkF0dHIsIEFuaW1hdGVk
TGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Onky
QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotfQotCiBSZW5kZXJPYmplY3QqIFNWR0xpbmVhckdyYWRp
ZW50RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHls
ZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1Jlc291cmNlTGluZWFyR3Jh
ZGllbnQodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRp
ZW50RWxlbWVudC5oCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTkgKzQyLDE3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSop
OwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCiAgICAgdmlydHVhbCBib29sIHNl
bGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5
IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgxLCB4MSkKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZMSwgeTEpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoWDIsIHgyKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFkyLCB5MikKKyAgICBCRUdJ
Tl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50KQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYMSwgeDEpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKFkxLCB5MSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgo
WDIsIHgyKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZMiwgeTIpCisgICAgRU5E
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDkw
NjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDE0ICsyOCwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFu
aW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR01Q
YXRoRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCi1ERUZJTkVfQU5J
TUFURURfQk9PTEVBTihTVkdNUGF0aEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5F
X0FOSU1BVEVEX1NUUklORyhTVkdNUGF0aEVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBI
cmVmLCBocmVmKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR01QYXRoRWxlbWVudCwg
U1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorRU5EX0RFRklORV9BTklNQVRF
RF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHTVBh
dGhFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGhyZWYpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdNUGF0
aEVsZW1lbnQ6OlNWR01QYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjptcGF0aFRhZykpOworICAgIHJlZ2lz
dGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHTVBhdGhFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQ
dHI8U1ZHTVBhdGhFbGVtZW50PiBTVkdNUGF0aEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC02OCw0MSArNzUsNiBAQCB2
b2lkIFNWR01QYXRoRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHTVBhdGhFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBh
bnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVVJJUmVmZXJl
bmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUhy
ZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHTVBhdGhFbGVtZW50OjphdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkp
OwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNW
R01QYXRoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5p
bWF0ZWRTdHJpbmcpOwotfQotCiBTVkdQYXRoRWxlbWVudCogU1ZHTVBhdGhFbGVtZW50OjpwYXRo
RWxlbWVudCgpCiB7CiAgICAgRWxlbWVudCogdGFyZ2V0ID0gdHJlZVNjb3BlKCktPmdldEVsZW1l
bnRCeUlkKGdldFRhcmdldChocmVmKCkpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdN
UGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhF
bGVtZW50LmgJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRo
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxNyArNDQsMTEgQEAgcHJpdmF0ZToKICAg
ICAvLyBGSVhNRTogc3ZnQXR0cmlidXRlQ2hhbmdlZCBtaXNzaW5nLgogICAgIGJvb2wgaXNTdXBw
b3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKLSAgICAvLyBB
bmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQot
ICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCi0KLSAgICAvLyBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgQkVH
SU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR01QYXRoRWxlbWVudCkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVt
ZW50LmNwcAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2Vy
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE3ICszMiw0NiBAQAogI2luY2x1ZGUg
IlNWR1NWR0VsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBBbmltYXRlZCBw
cm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXJrZXJFbGVt
ZW50LCBTVkdOYW1lczo6cmVmWEF0dHIsIFJlZlgsIHJlZlgpCi1ERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjpyZWZZQXR0ciwgUmVmWSwgcmVmWSkKLURF
RklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6Om1hcmtlcldp
ZHRoQXR0ciwgTWFya2VyV2lkdGgsIG1hcmtlcldpZHRoKQotREVGSU5FX0FOSU1BVEVEX0xFTkdU
SChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6bWFya2VySGVpZ2h0QXR0ciwgTWFya2VySGVp
Z2h0LCBtYXJrZXJIZWlnaHQpCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHTWFya2Vy
RWxlbWVudCwgU1ZHTmFtZXM6Om1hcmtlclVuaXRzQXR0ciwgTWFya2VyVW5pdHMsIG1hcmtlclVu
aXRzLCBTVkdNYXJrZXJVbml0c1R5cGUpCi1ERUZJTkVfQU5JTUFURURfQU5HTEVfTVVMVElQTEVf
V1JBUFBFUlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6Om9yaWVudEF0dHIsIG9yaWVudEFu
Z2xlSWRlbnRpZmllcigpLCBPcmllbnRBbmdsZSwgb3JpZW50QW5nbGUpCi1ERUZJTkVfQU5JTUFU
RURfQk9PTEVBTihTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpCi1ERUZJTkVfQU5JTUFURURfUkVDVChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1l
czo6dmlld0JveEF0dHIsIFZpZXdCb3gsIHZpZXdCb3gpCi1ERUZJTkVfQU5JTUFURURfUFJFU0VS
VkVBU1BFQ1RSQVRJTyhTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RS
YXRpb0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgCisv
LyBEZWZpbmUgY3VzdG9tIGFuaW1hdGVkIHByb3BlcnR5ICdvcmllbnRUeXBlJy4KK2NvbnN0IFNW
R1Byb3BlcnR5SW5mbyogU1ZHTWFya2VyRWxlbWVudDo6b3JpZW50VHlwZVByb3BlcnR5SW5mbygp
Cit7CisgICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogc19wcm9wZXJ0eUluZm8gPSAw
OworICAgIGlmICghc19wcm9wZXJ0eUluZm8pIHsKKyAgICAgICAgc19wcm9wZXJ0eUluZm8gPSBu
ZXcgU1ZHUHJvcGVydHlJbmZvKEFuaW1hdGVkRW51bWVyYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6b3JpZW50QXR0ciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWVudFR5cGVJZGVudGlm
aWVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU1ZH
TWFya2VyRWxlbWVudDo6c3luY2hyb25pemVPcmllbnRUeXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNWR01hcmtlckVsZW1lbnQ6Omxvb2t1cE9yQ3Jl
YXRlT3JpZW50VHlwZVdyYXBwZXIpOworICAgIH0KKyAgICByZXR1cm4gc19wcm9wZXJ0eUluZm87
Cit9CisKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1B
VEVEX0xFTkdUSChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6cmVmWEF0dHIsIFJlZlgsIHJl
ZlgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1l
czo6cmVmWUF0dHIsIFJlZlksIHJlZlkpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdN
YXJrZXJFbGVtZW50LCBTVkdOYW1lczo6bWFya2VyV2lkdGhBdHRyLCBNYXJrZXJXaWR0aCwgbWFy
a2VyV2lkdGgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXJrZXJFbGVtZW50LCBT
VkdOYW1lczo6bWFya2VySGVpZ2h0QXR0ciwgTWFya2VySGVpZ2h0LCBtYXJrZXJIZWlnaHQpCisg
ICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVz
OjptYXJrZXJVbml0c0F0dHIsIE1hcmtlclVuaXRzLCBtYXJrZXJVbml0cywgU1ZHTWFya2VyVW5p
dHNUeXBlKQorICAgIERFRklORV9BTklNQVRFRF9BTkdMRV9NVUxUSVBMRV9XUkFQUEVSUyhTVkdN
YXJrZXJFbGVtZW50LCBTVkdOYW1lczo6b3JpZW50QXR0ciwgb3JpZW50QW5nbGVJZGVudGlmaWVy
KCksIE9yaWVudEFuZ2xlLCBvcmllbnRBbmdsZSkKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVB
TihTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0
dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQp
CisgICAgREVGSU5FX0FOSU1BVEVEX1JFQ1QoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6OnZp
ZXdCb3hBdHRyLCBWaWV3Qm94LCB2aWV3Qm94KQorICAgIERFRklORV9BTklNQVRFRF9QUkVTRVJW
RUFTUEVDVFJBVElPKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJh
dGlvQXR0ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKK0VORF9E
RUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR01hcmtlckVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkocmVmWCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShyZWZZKQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKG1hcmtlcldpZHRoKQorICAgIFJF
R0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKG1hcmtlckhlaWdodCkKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShtYXJrZXJVbml0cykKKyAgICBSRUdJU1RFUl9MT0NB
TF9BTklNQVRFRF9QUk9QRVJUWShvcmllbnRBbmdsZSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShvcmllbnRUeXBlKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkodmlld0JveCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWShwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR1N0eWxlZEVsZW1lbnQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVS
VElFUwogCiBpbmxpbmUgU1ZHTWFya2VyRWxlbWVudDo6U1ZHTWFya2VyRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHls
ZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQpAQCAtNTUsNiArODQsNyBAQCBpbmxpbmUgU1ZH
TWFya2VyRWxlbWVudDo6U1ZHTWFya2VyRWxlbWVuCiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIG1h
cmtlcldpZHRoL21hcmtlckhlaWdodCBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVm
ZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIzIiB3ZXJlIHNwZWNpZmllZC4KICAgICBBU1NFUlQo
aGFzVGFnTmFtZShTVkdOYW1lczo6bWFya2VyVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFBy
b3BlcnRpZXNGb3JTVkdNYXJrZXJFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHTWFya2Vy
RWxlbWVudD4gU1ZHTWFya2VyRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTE3MCw5MSArMjAwLDYgQEAgdm9pZCBTVkdN
YXJrZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZwogICAgICAgICBvYmplY3QtPnNldE5lZWRz
TGF5b3V0KHRydWUpOwogfQogCi12b2lkIFNWR01hcmtlckVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1l
ID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVNYXJrZXJVbml0cygpOwotICAg
ICAgICBzeW5jaHJvbml6ZVJlZlgoKTsKLSAgICAgICAgc3luY2hyb25pemVSZWZZKCk7Ci0gICAg
ICAgIHN5bmNocm9uaXplTWFya2VyV2lkdGgoKTsKLSAgICAgICAgc3luY2hyb25pemVNYXJrZXJI
ZWlnaHQoKTsKLSAgICAgICAgc3luY2hyb25pemVPcmllbnRBbmdsZSgpOwotICAgICAgICBzeW5j
aHJvbml6ZU9yaWVudFR5cGUoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR0ZpdFRvVmlld0JveDo6c3luY2hyb25pemVQcm9wZXJ0
aWVzKGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9w
ZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3Vw
cG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRFbGVtZW50Ojpz
eW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6bWFya2VyVW5pdHNBdHRyKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplTWFya2VyVW5pdHMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cmVmWEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25p
emVSZWZYKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnJlZllBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplUmVmWSgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjptYXJrZXJX
aWR0aEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVNYXJrZXJXaWR0aCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjptYXJrZXJIZWln
aHRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplTWFya2VySGVpZ2h0KCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9yaWVudEF0dHIp
IHsKLSAgICAgICAgc3luY2hyb25pemVPcmllbnRBbmdsZSgpOwotICAgICAgICBzeW5jaHJvbml6
ZU9yaWVudFR5cGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAg
ICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpdFRvVmlld0JveDo6c3luY2hyb25pemVQcm9wZXJ0
aWVzKGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHTWFya2VyRWxl
bWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0K
LQotdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdT
dHlsZWRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6cmVmWEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnJlZllBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjptYXJrZXJXaWR0aEF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om1hcmtlclVuaXRzQXR0ciwgQW5pbWF0
ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjpvcmllbnRBdHRyLCBBbmltYXRlZEFuZ2xlKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBBbmltYXRlZFJlY3QpOwotfQotCiB2
b2lkIFNWR01hcmtlckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNl
ciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnRE
ZWx0YSkKIHsKICAgICBTVkdTdHlsZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5
UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpAQCAt
MjcwLDkgKzIxNSwxMiBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnNldE9yaWVudFRvQXV0bygp
CiB7CiAgICAgc2V0T3JpZW50VHlwZUJhc2VWYWx1ZShTVkdNYXJrZXJPcmllbnRBdXRvKTsKICAg
ICBzZXRPcmllbnRBbmdsZUJhc2VWYWx1ZShTVkdBbmdsZSgpKTsKLQotICAgIGlmIChSZW5kZXJP
YmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlv
dXQodHJ1ZSk7CisgCisgICAgLy8gTWFyayBvcmllbnRBdHRyIGRpcnR5IC0gdGhlIG5leHQgWE1M
IERPTSBhY2Nlc3Mgb2YgdGhhdCBhdHRyaWJ1dGUga2lja3MgaW4gc3luY2hyb25pemF0aW9uLgor
ICAgIG1fb3JpZW50QW5nbGUuc2hvdWxkU3luY2hyb25pemUgPSB0cnVlOworICAgIG1fb3JpZW50
VHlwZS5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7CisgICAgaW52YWxpZGF0ZVNWR0F0dHJpYnV0
ZXMoKTsKKyAgICBzdmdBdHRyaWJ1dGVDaGFuZ2VkKG9yaWVudEFuZ2xlUHJvcGVydHlJbmZvKCkt
PmF0dHJpYnV0ZU5hbWUpOwogfQogCiB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnNldE9yaWVudFRv
QW5nbGUoY29uc3QgU1ZHQW5nbGUmIGFuZ2xlKQpAQCAtMjgwLDggKzIyOCwxMSBAQCB2b2lkIFNW
R01hcmtlckVsZW1lbnQ6OnNldE9yaWVudFRvQW5nbGUoCiAgICAgc2V0T3JpZW50VHlwZUJhc2VW
YWx1ZShTVkdNYXJrZXJPcmllbnRBbmdsZSk7CiAgICAgc2V0T3JpZW50QW5nbGVCYXNlVmFsdWUo
YW5nbGUpOwogCi0gICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAg
ICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCh0cnVlKTsKKyAgICAvLyBNYXJrIG9yaWVudEF0
dHIgZGlydHkgLSB0aGUgbmV4dCBYTUwgRE9NIGFjY2VzcyBvZiB0aGF0IGF0dHJpYnV0ZSBraWNr
cyBpbiBzeW5jaHJvbml6YXRpb24uCisgICAgbV9vcmllbnRBbmdsZS5zaG91bGRTeW5jaHJvbml6
ZSA9IHRydWU7CisgICAgbV9vcmllbnRUeXBlLnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKKyAg
ICBpbnZhbGlkYXRlU1ZHQXR0cmlidXRlcygpOworICAgIHN2Z0F0dHJpYnV0ZUNoYW5nZWQob3Jp
ZW50QW5nbGVQcm9wZXJ0eUluZm8oKS0+YXR0cmlidXRlTmFtZSk7CiB9CiAKIFJlbmRlck9iamVj
dCogU1ZHTWFya2VyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBS
ZW5kZXJTdHlsZSopCkBAIC0yOTcsMjQgKzI0OCwzMyBAQCBib29sIFNWR01hcmtlckVsZW1lbnQ6
OnNlbGZIYXNSZWxhdGl2ZUxlCiAgICAgICAgIHx8IG1hcmtlckhlaWdodCgpLmlzUmVsYXRpdmUo
KTsKIH0KIAotdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzeW5jaHJvbml6ZU9yaWVudFR5cGUoKQor
dm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzeW5jaHJvbml6ZU9yaWVudFR5cGUodm9pZCogY29udGV4
dEVsZW1lbnQpCiB7Ci0gICAgaWYgKCFtX29yaWVudFR5cGUuc2hvdWxkU3luY2hyb25pemUpCisg
ICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICBTVkdNYXJrZXJFbGVtZW50KiBvd25lclR5
cGUgPSBzdGF0aWNfY2FzdDxTVkdNYXJrZXJFbGVtZW50Kj4oY29udGV4dEVsZW1lbnQpOworICAg
IGlmICghb3duZXJUeXBlLT5tX29yaWVudFR5cGUuc2hvdWxkU3luY2hyb25pemUpCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIElmIG9yaWVudCBpcyBub3QgYXV0bywgdGhlIHByZXZpb3VzIGNh
bGwgdG8gc3luY2hyb25pemVPcmllbnRBbmdsZSBhbHJlYWR5IHNldCB0aGUgb3JpZW50QXR0ciB0
byB0aGUgcmlnaHQgYW5nbGUuCisgICAgaWYgKG93bmVyVHlwZS0+bV9vcmllbnRUeXBlLnZhbHVl
ICE9IFNWR01hcmtlck9yaWVudEF1dG8pCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBBdG9t
aWNTdHJpbmcgdmFsdWU7Ci0gICAgaWYgKG1fb3JpZW50VHlwZS52YWx1ZSA9PSBTVkdNYXJrZXJP
cmllbnRBdXRvKQotICAgICAgICB2YWx1ZSA9ICJhdXRvIjsKLSAgICBlbHNlIGlmIChtX29yaWVu
dFR5cGUudmFsdWUgPT0gU1ZHTWFya2VyT3JpZW50QW5nbGUpCi0gICAgICAgIHZhbHVlID0gb3Jp
ZW50QW5nbGUoKS52YWx1ZUFzU3RyaW5nKCk7CiAKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5U3lu
Y2hyb25pemVyPHRydWU+OjpzeW5jaHJvbml6ZSh0aGlzLCBTVkdOYW1lczo6b3JpZW50QXR0ciwg
dmFsdWUpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBhdXRvU3RyaW5n
LCAoImF1dG8iKSk7CisgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6
c3luY2hyb25pemUob3duZXJUeXBlLCBvcmllbnRUeXBlUHJvcGVydHlJbmZvKCktPmF0dHJpYnV0
ZU5hbWUsIGF1dG9TdHJpbmcpOwogfQogCitQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+
IFNWR01hcmtlckVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlT3JpZW50VHlwZVdyYXBwZXIodm9pZCog
Y29udGV4dEVsZW1lbnQpCit7CisgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICBTVkdN
YXJrZXJFbGVtZW50KiBvd25lclR5cGUgPSBzdGF0aWNfY2FzdDxTVkdNYXJrZXJFbGVtZW50Kj4o
Y29udGV4dEVsZW1lbnQpOworICAgIHJldHVybiBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBP
ckNyZWF0ZVdyYXBwZXI8U1ZHTWFya2VyRWxlbWVudCwgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblBy
b3BlcnR5VGVhck9mZjxTVkdNYXJrZXJPcmllbnRUeXBlPiwgU1ZHTWFya2VyT3JpZW50VHlwZSwg
dHJ1ZT4KKyAgICAgICAgICAgKG93bmVyVHlwZSwgb3JpZW50VHlwZVByb3BlcnR5SW5mbygpLCBv
d25lclR5cGUtPm1fb3JpZW50VHlwZS52YWx1ZSk7Cit9CisgIAogUGFzc1JlZlB0cjxTVkdBbmlt
YXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmPFNWR01hcmtlck9yaWVudFR5cGU+ID4gU1ZH
TWFya2VyRWxlbWVudDo6b3JpZW50VHlwZUFuaW1hdGVkKCkKIHsKICAgICBtX29yaWVudFR5cGUu
c2hvdWxkU3luY2hyb25pemUgPSB0cnVlOwotICAgIHJldHVybiBTVkdBbmltYXRlZFByb3BlcnR5
Ojpsb29rdXBPckNyZWF0ZVdyYXBwZXI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVh
ck9mZjxTVkdNYXJrZXJPcmllbnRUeXBlPiwgU1ZHTWFya2VyT3JpZW50VHlwZT4odGhpcywgU1ZH
TmFtZXM6Om9yaWVudEF0dHIsIG9yaWVudFR5cGVJZGVudGlmaWVyKCksIG1fb3JpZW50VHlwZS52
YWx1ZSk7CisgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvblByb3BlcnR5VGVhck9mZjxTVkdNYXJrZXJPcmllbnRUeXBlPiA+KGxvb2t1cE9yQ3JlYXRl
T3JpZW50VHlwZVdyYXBwZXIodGhpcykpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTWFya2VyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdNYXJrZXJFbGVtZW50LmgJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hcmtlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDYgKzEyMCw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldE9yaWVudFRvQXV0bygpOwogICAgIHZvaWQgc2V0T3JpZW50VG9B
bmdsZShjb25zdCBTVkdBbmdsZSYpOwogCisgICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5m
byogb3JpZW50VHlwZVByb3BlcnR5SW5mbygpOworCiBwcml2YXRlOgogICAgIFNWR01hcmtlckVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKQEAgLTEyOCw5ICsxMzAs
NiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQo
Ym9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9k
ZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHls
ZSopOwpAQCAtMTM4LDMzICsxMzcsMzMgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBz
ZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKKyAgICB2b2lkIHN5bmNocm9uaXplT3Jp
ZW50VHlwZSgpOworCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgb3JpZW50VHlwZUlk
ZW50aWZpZXIoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBvcmllbnRBbmdsZUlk
ZW50aWZpZXIoKTsKLQotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAg
IERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFJlZlgsIHJlZlgpCi0gICAgREVDTEFSRV9BTklNQVRF
RF9MRU5HVEgoUmVmWSwgcmVmWSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChNYXJrZXJX
aWR0aCwgbWFya2VyV2lkdGgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoTWFya2VySGVp
Z2h0LCBtYXJrZXJIZWlnaHQpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihNYXJr
ZXJVbml0cywgbWFya2VyVW5pdHMsIFNWR01hcmtlclVuaXRzVHlwZSkKLSAgICBERUNMQVJFX0FO
SU1BVEVEX0FOR0xFKE9yaWVudEFuZ2xlLCBvcmllbnRBbmdsZSkKLQotICAgIC8vIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKLQotICAgIC8v
IFNWR0ZpdFRvVmlld0JveAotICAgIERFQ0xBUkVfQU5JTUFURURfUkVDVChWaWV3Qm94LCB2aWV3
Qm94KQotICAgIERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFz
cGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQotCisgCisgICAgQkVHSU5fREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR01hcmtlckVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfTEVOR1RIKFJlZlgsIHJlZlgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RI
KFJlZlksIHJlZlkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKE1hcmtlcldpZHRo
LCBtYXJrZXJXaWR0aCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoTWFya2VySGVp
Z2h0LCBtYXJrZXJIZWlnaHQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04o
TWFya2VyVW5pdHMsIG1hcmtlclVuaXRzLCBTVkdNYXJrZXJVbml0c1R5cGUpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfQU5HTEUoT3JpZW50QW5nbGUsIG9yaWVudEFuZ2xlKQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9SRUNUKFZpZXdC
b3gsIHZpZXdCb3gpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJ
TyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgIEVORF9ERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgCiBwdWJsaWM6Ci0gICAgLy8gQ3VzdG9tIGFuaW1h
dGVkIHByb3BlcnR5OiBvcmllbnRUeXBlCisgICAgLy8gQ3VzdG9tICdvcmllbnRUeXBlJyBwcm9w
ZXJ0eS4KKyAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZU9yaWVudFR5cGUodm9pZCogY29udGV4
dEVsZW1lbnQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IGxv
b2t1cE9yQ3JlYXRlT3JpZW50VHlwZVdyYXBwZXIodm9pZCogY29udGV4dEVsZW1lbnQpOwogICAg
IFNWR01hcmtlck9yaWVudFR5cGUmIG9yaWVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX29yaWVu
dFR5cGUudmFsdWU7IH0KICAgICBTVkdNYXJrZXJPcmllbnRUeXBlJiBvcmllbnRUeXBlQmFzZVZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRUeXBlLnZhbHVlOyB9CiAgICAgdm9pZCBzZXRP
cmllbnRUeXBlQmFzZVZhbHVlKGNvbnN0IFNWR01hcmtlck9yaWVudFR5cGUmIHR5cGUpIHsgbV9v
cmllbnRUeXBlLnZhbHVlID0gdHlwZTsgfQogICAgIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvblByb3BlcnR5VGVhck9mZjxTVkdNYXJrZXJPcmllbnRUeXBlPiA+IG9yaWVudFR5cGVB
bmltYXRlZCgpOwogCiBwcml2YXRlOgotICAgIHZvaWQgc3luY2hyb25pemVPcmllbnRUeXBlKCk7
CiAgICAgbXV0YWJsZSBTVkdTeW5jaHJvbml6YWJsZUFuaW1hdGVkUHJvcGVydHk8U1ZHTWFya2Vy
T3JpZW50VHlwZT4gbV9vcmllbnRUeXBlOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hc2tFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFza0VsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdNYXNrRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE0ICszNiwyNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1E
RUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHTWFza0VsZW1lbnQsIFNWR05hbWVzOjptYXNr
VW5pdHNBdHRyLCBNYXNrVW5pdHMsIG1hc2tVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlw
ZSkKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6
Om1hc2tDb250ZW50VW5pdHNBdHRyLCBNYXNrQ29udGVudFVuaXRzLCBtYXNrQ29udGVudFVuaXRz
LCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdN
YXNrRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQotREVGSU5FX0FOSU1BVEVEX0xFTkdU
SChTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQotREVGSU5FX0FOSU1BVEVE
X0xFTkdUSChTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgV2lkdGgsIHdpZHRo
KQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdo
dEF0dHIsIEhlaWdodCwgaGVpZ2h0KQotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHTWFza0Vs
ZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklO
RV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNW
R01hc2tFbGVtZW50LCBTVkdOYW1lczo6bWFza1VuaXRzQXR0ciwgTWFza1VuaXRzLCBtYXNrVW5p
dHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1F
UkFUSU9OKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6bWFza0NvbnRlbnRVbml0c0F0dHIsIE1h
c2tDb250ZW50VW5pdHMsIG1hc2tDb250ZW50VW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5
cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6
OnhBdHRyLCBYLCB4KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTWFza0VsZW1lbnQs
IFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01h
c2tFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0aCwgd2lkdGgpCisgICAgREVGSU5F
X0FOSU1BVEVEX0xFTkdUSChTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEhl
aWdodCwgaGVpZ2h0KQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR01hc2tFbGVtZW50
LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FOSU1B
VEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdN
YXNrRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShtYXNrVW5p
dHMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkobWFza0NvbnRlbnRVbml0
cykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh4KQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkod2lkdGgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaGVp
Z2h0KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZH
U3R5bGVkTG9jYXRhYmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJP
UEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlu
bGluZSBTVkdNYXNrRWxlbWVudDo6U1ZHTWFza0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkTG9jYXRhYmxlRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTU3LDYgKzcwLDcgQEAgaW5saW5lIFNWR01hc2tF
bGVtZW50OjpTVkdNYXNrRWxlbWVudChjbwogICAgIC8vIFNwZWM6IElmIHRoZSB4L3kgYXR0cmli
dXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiLTEw
JSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgLy8gU3BlYzogSWYgdGhlIHdpZHRoL2hlaWdodCBhdHRy
aWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIx
MjAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6bWFz
a1RhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHTWFza0VsZW1lbnQo
KTsKIH0KIAogUGFzc1JlZlB0cjxTVkdNYXNrRWxlbWVudD4gU1ZHTWFza0VsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0x
NTEsODggKzE2NSw2IEBAIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQK
ICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KIAotdm9pZCBTVkdNYXNr
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJv
bml6ZU1hc2tVbml0cygpOwotICAgICAgICBzeW5jaHJvbml6ZU1hc2tDb250ZW50VW5pdHMoKTsK
LSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAg
ICBzeW5jaHJvbml6ZVdpZHRoKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAg
ICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBTVkdU
ZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgU1ZH
U3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1l
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6bWFza1VuaXRzQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZU1hc2tVbml0cygpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjptYXNr
Q29udGVudFVuaXRzQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZU1hc2tDb250ZW50VW5pdHMo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6eEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplWSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjp3aWR0aEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpo
ZWlnaHRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVGVz
dHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5j
aHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBTVkdNYXNrRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdNYXNrRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOwotCi0gICAgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0
aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwg
QW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjptYXNrVW5pdHNBdHRyLCBB
bmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6Om1hc2tDb250ZW50VW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLX0K
LQogdm9pZCBTVkdNYXNrRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFy
c2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3Vu
dERlbHRhKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2Vk
QnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkocmV2aXNpb24gOTA2MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAs
MjUgKzUwLDI2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVu
Q2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2Ug
PSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAog
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJl
bmRlclN0eWxlKik7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3Rocygp
IGNvbnN0OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVD
TEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihNYXNrVW5pdHMsIG1hc2tVbml0cywgU1ZHVW5pdFR5
cGVzOjpTVkdVbml0VHlwZSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKE1hc2tD
b250ZW50VW5pdHMsIG1hc2tDb250ZW50VW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUp
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKLSAgICBERUNMQVJFX0FOSU1BVEVE
X0xFTkdUSChZLCB5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkK
LSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKLQotICAgIC8vIFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4o
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAg
ICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHTWFza0VsZW1lbnQpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oTWFza1VuaXRzLCBtYXNrVW5pdHMsIFNW
R1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVS
QVRJT04oTWFza0NvbnRlbnRVbml0cywgbWFza0NvbnRlbnRVbml0cywgU1ZHVW5pdFR5cGVzOjpT
VkdVbml0VHlwZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9MRU5HVEgoV2lkdGgsIHdpZHRoKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChI
ZWlnaHQsIGhlaWdodCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RF
Q0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFs
IHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25p
emVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVu
c2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFn
ZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KIH07CiAK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5j
cHAJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlw
aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNyArMzYsNiBAQCBQYXNzUmVmUHRy
PFNWR01pc3NpbmdHbHlwaEVsZW1lbnQ+IFNWR01pCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
VkdNaXNzaW5nR2x5cGhFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLUF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdNaXNzaW5nR2x5cGhFbGVtZW50OjphdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJl
dHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR01pc3NpbmdH
bHlwaEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgU1ZH
U3R5bGVkRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkpOwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZH
X0ZPTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVu
dC5oCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNaXNzaW5nR2x5
cGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDYgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBTVkdNaXNzaW5nR2x5cGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCopOwogCi0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCkBA
IC00Miw1ICszOSwzIEBAIHByaXZhdGU6CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHX0ZPTlRTKQog
I2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhF
bGVtZW50LmNwcAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0NiwzMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVf
QU5JTUFURURfTlVNQkVSKFNWR1BhdGhFbGVtZW50LCBTVkdOYW1lczo6cGF0aExlbmd0aEF0dHIs
IFBhdGhMZW5ndGgsIHBhdGhMZW5ndGgpCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdQYXRo
RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorLy8gRGVmaW5l
IGN1c3RvbSBhbmltYXRlZCBwcm9wZXJ0eSAnZCcuCitjb25zdCBTVkdQcm9wZXJ0eUluZm8qIFNW
R1BhdGhFbGVtZW50OjpkUHJvcGVydHlJbmZvKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJv
cGVydHlJbmZvKiBzX3Byb3BlcnR5SW5mbyA9IDA7CisgICAgaWYgKCFzX3Byb3BlcnR5SW5mbykg
eworICAgICAgICBzX3Byb3BlcnR5SW5mbyA9IG5ldyBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRQ
YXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFt
ZXM6OmRBdHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U1ZHTmFtZXM6OmRBdHRyLmxvY2FsTmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJlNWR1BhdGhFbGVtZW50OjpzeW5jaHJvbml6ZUQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU1ZHUGF0aEVsZW1lbnQ6Omxv
b2t1cE9yQ3JlYXRlRFdyYXBwZXIpOworICAgIH0KKyAgICByZXR1cm4gc19wcm9wZXJ0eUluZm87
Cit9CisKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1B
VEVEX05VTUJFUihTVkdQYXRoRWxlbWVudCwgU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyLCBQYXRo
TGVuZ3RoLCBwYXRoTGVuZ3RoKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1BhdGhF
bGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5F
X0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdQYXRoRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShk
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHBhdGhMZW5ndGgpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBT
VkdQYXRoRWxlbWVudDo6U1ZHUGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCkBAIC01Niw2ICs3OSw3IEBAIGlubGluZSBTVkdQYXRoRWxl
bWVudDo6U1ZHUGF0aEVsZW1lbnQoY28KICAgICAsIG1fcGF0aFNlZ0xpc3QoUGF0aFNlZ1VuYWx0
ZXJlZFJvbGUpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBhdGhUYWcpKTsK
KyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1BhdGhFbGVtZW50KCk7CiB9CiAK
IFBhc3NSZWZQdHI8U1ZHUGF0aEVsZW1lbnQ+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMjM4LDcgKzI2
Miw3IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICBSZW5k
ZXJTVkdQYXRoKiByZW5kZXJlciA9IHN0YXRpY19jYXN0PFJlbmRlclNWR1BhdGgqPih0aGlzLT5y
ZW5kZXJlcigpKTsKIAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZEF0dHIpIHsKLSAg
ICAgICAgaWYgKG1fYW5pbWF0YWJsZVBhdGhTZWdMaXN0KSB7CisgICAgICAgIGlmIChTVkdBbmlt
YXRlZFByb3BlcnR5Ojpsb29rdXBXcmFwcGVyPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0
eVRlYXJPZmY+KHRoaXMsIGRQcm9wZXJ0eUluZm8oKSkpIHsKICAgICAgICAgICAgIFNWR1BhdGhT
ZWdMaXN0IG5ld0xpc3QoUGF0aFNlZ1VuYWx0ZXJlZFJvbGUpOwogICAgICAgICAgICAgU1ZHUGF0
aFBhcnNlckZhY3RvcnkqIGZhY3RvcnkgPSBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpOwog
ICAgICAgICAgICAgZmFjdG9yeS0+YnVpbGRTVkdQYXRoU2VnTGlzdEZyb21CeXRlU3RyZWFtKG1f
cGF0aEJ5dGVTdHJlYW0uZ2V0KCksIHRoaXMsIG5ld0xpc3QsIFVuYWx0ZXJlZFBhcnNpbmcpOwpA
QCAtMjUzLDgwICsyNzcsMzIgQEAgdm9pZCBTVkdQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZAogICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJl
c291cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyKTsKIH0KIAotdm9pZCBTVkdQYXRoRWxlbWVudDo6
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK1Bhc3NS
ZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gU1ZHUGF0aEVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRl
RFdyYXBwZXIodm9pZCogY29udGV4dEVsZW1lbnQpCiB7Ci0gICAgaWYgKGF0dHJOYW1lID09IGFu
eVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVEKCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
UGF0aExlbmd0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRy
TmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICgh
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZEF0dHIpIHsK
LSAgICAgICAgc3luY2hyb25pemVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplUGF0aExlbmd0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQorICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7CisgICAgU1ZHUGF0
aEVsZW1lbnQqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR1BhdGhFbGVtZW50Kj4oY29udGV4
dEVsZW1lbnQpOwogCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJO
YW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSog
ZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7CisgICAgZmFjdG9yeS0+YnVp
bGRTVkdQYXRoU2VnTGlzdEZyb21CeXRlU3RyZWFtKG93bmVyVHlwZS0+bV9wYXRoQnl0ZVN0cmVh
bS5nZXQoKSwgb3duZXJUeXBlLCBvd25lclR5cGUtPm1fcGF0aFNlZ0xpc3QudmFsdWUsIFVuYWx0
ZXJlZFBhcnNpbmcpOwogCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFNW
R0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdQYXRoRWxlbWVudCwg
U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZiwgU1ZHUGF0aFNlZ0xpc3QsIHRy
dWU+CisgICAgICAgICAgIChvd25lclR5cGUsIGRQcm9wZXJ0eUluZm8oKSwgb3duZXJUeXBlLT5t
X3BhdGhTZWdMaXN0LnZhbHVlKTsKIH0KIAotdm9pZCBTVkdQYXRoRWxlbWVudDo6c3luY2hyb25p
emVEKCkKK3ZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplRCh2b2lkKiBjb250ZXh0RWxl
bWVudCkKIHsKLSAgICBpZiAoIW1fcGF0aFNlZ0xpc3Quc2hvdWxkU3luY2hyb25pemUpCisgICAg
QVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICBTVkdQYXRoRWxlbWVudCogb3duZXJUeXBlID0g
c3RhdGljX2Nhc3Q8U1ZHUGF0aEVsZW1lbnQqPihjb250ZXh0RWxlbWVudCk7CisgICAgaWYgKCFv
d25lclR5cGUtPm1fcGF0aFNlZ0xpc3Quc2hvdWxkU3luY2hyb25pemUpCiAgICAgICAgIHJldHVy
bjsKLQotICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5bmNocm9u
aXplKHRoaXMsIFNWR05hbWVzOjpkQXR0ciwgbV9wYXRoU2VnTGlzdC52YWx1ZS52YWx1ZUFzU3Ry
aW5nKCkpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHUGF0aEVsZW1lbnQ6
OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZv
aWQgU1ZHUGF0aEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0g
ICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
ID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6ZEF0dHIsIEFuaW1hdGVkUGF0aCk7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwYXRoTGVuZ3RoQXR0ciwgQW5pbWF0ZWROdW1i
ZXIpOworICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5bmNocm9u
aXplKG93bmVyVHlwZSwgZFByb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lLCBvd25lclR5cGUt
Pm1fcGF0aFNlZ0xpc3QudmFsdWUudmFsdWVBc1N0cmluZygpKTsKIH0KIAogU1ZHUGF0aFNlZ0xp
c3RQcm9wZXJ0eVRlYXJPZmYqIFNWR1BhdGhFbGVtZW50OjpwYXRoU2VnTGlzdCgpCiB7Ci0gICAg
aWYgKCFtX2FuaW1hdGFibGVQYXRoU2VnTGlzdCkgewotICAgICAgICBtX3BhdGhTZWdMaXN0LnNo
b3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKLQotICAgICAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSog
ZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7Ci0gICAgICAgIGZhY3Rvcnkt
PmJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbShtX3BhdGhCeXRlU3RyZWFtLmdldCgp
LCB0aGlzLCBtX3BhdGhTZWdMaXN0LnZhbHVlLCBVbmFsdGVyZWRQYXJzaW5nKTsKLQotICAgICAg
ICBtX2FuaW1hdGFibGVQYXRoU2VnTGlzdCA9IFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9y
Q3JlYXRlV3JhcHBlcjxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLCBTVkdQ
YXRoU2VnTGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLCBTVkdO
YW1lczo6ZEF0dHIsIFNWR05hbWVzOjpkQXR0ci5sb2NhbE5hbWUoKSwgbV9wYXRoU2VnTGlzdC52
YWx1ZSk7Ci0gICAgfQotCisgICAgbV9wYXRoU2VnTGlzdC5zaG91bGRTeW5jaHJvbml6ZSA9IHRy
dWU7CisgICAgaWYgKCFtX2FuaW1hdGFibGVQYXRoU2VnTGlzdCkKKyAgICAgICAgbV9hbmltYXRh
YmxlUGF0aFNlZ0xpc3QgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR0FuaW1hdGVkUGF0aFNlZ0xp
c3RQcm9wZXJ0eVRlYXJPZmY+KGxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIodGhpcykpOwogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZio+KG1fYW5pbWF0
YWJsZVBhdGhTZWdMaXN0LT5iYXNlVmFsKFBhdGhTZWdVbmFsdGVyZWRSb2xlKSk7CiB9CiAKQEAg
LTMzOCwxNiArMzE0LDkgQEAgU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYqIFNWR1BhdGhF
bAogCiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZiogU1ZHUGF0aEVsZW1lbnQ6OmFuaW1h
dGVkUGF0aFNlZ0xpc3QoKQogewotICAgIGlmICghbV9hbmltYXRhYmxlUGF0aFNlZ0xpc3QpIHsK
LSAgICAgICAgbV9wYXRoU2VnTGlzdC5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7Ci0KLSAgICAg
ICAgU1ZHUGF0aFBhcnNlckZhY3RvcnkqIGZhY3RvcnkgPSBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6
c2VsZigpOwotICAgICAgICBmYWN0b3J5LT5idWlsZFNWR1BhdGhTZWdMaXN0RnJvbUJ5dGVTdHJl
YW0obV9wYXRoQnl0ZVN0cmVhbS5nZXQoKSwgdGhpcywgbV9wYXRoU2VnTGlzdC52YWx1ZSwgVW5h
bHRlcmVkUGFyc2luZyk7Ci0KLSAgICAgICAgbV9hbmltYXRhYmxlUGF0aFNlZ0xpc3QgPSBTVkdB
bmltYXRlZFByb3BlcnR5Ojpsb29rdXBPckNyZWF0ZVdyYXBwZXI8U1ZHQW5pbWF0ZWRQYXRoU2Vn
TGlzdFByb3BlcnR5VGVhck9mZiwgU1ZHUGF0aFNlZ0xpc3Q+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAodGhpcywgU1ZHTmFtZXM6OmRBdHRyLCBTVkdOYW1lczo6ZEF0dHIubG9j
YWxOYW1lKCksIG1fcGF0aFNlZ0xpc3QudmFsdWUpOwotICAgIH0KLQorICAgIG1fcGF0aFNlZ0xp
c3Quc2hvdWxkU3luY2hyb25pemUgPSB0cnVlOworICAgIGlmICghbV9hbmltYXRhYmxlUGF0aFNl
Z0xpc3QpCisgICAgICAgIG1fYW5pbWF0YWJsZVBhdGhTZWdMaXN0ID0gc3RhdGljX3BvaW50ZXJf
Y2FzdDxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmPihsb29rdXBPckNyZWF0
ZURXcmFwcGVyKHRoaXMpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0xpc3RQ
cm9wZXJ0eVRlYXJPZmYqPihtX2FuaW1hdGFibGVQYXRoU2VnTGlzdC0+YW5pbVZhbChQYXRoU2Vn
VW5hbHRlcmVkUm9sZSkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQu
aAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtOTEsMTEgKzkxLDEyIEBAIHB1YmxpYzoKICAgICBTVkdQYXRo
U2VnTGlzdFByb3BlcnR5VGVhck9mZiogYW5pbWF0ZWROb3JtYWxpemVkUGF0aFNlZ0xpc3QoKTsK
IAogICAgIFNWR1BhdGhCeXRlU3RyZWFtKiBwYXRoQnl0ZVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJu
IG1fcGF0aEJ5dGVTdHJlYW0uZ2V0KCk7IH0KLSAgICBTVkdBbmltYXRlZFByb3BlcnR5KiBhbmlt
YXRhYmxlUGF0aFNlZ0xpc3QoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGFibGVQYXRoU2VnTGlz
dC5nZXQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0Owog
ICAgIHZvaWQgcGF0aFNlZ0xpc3RDaGFuZ2VkKFNWR1BhdGhTZWdSb2xlKTsKIAorICAgIHN0YXRp
YyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIGRQcm9wZXJ0eUluZm8oKTsKKwogcHJpdmF0ZToKICAg
ICBTVkdQYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApAQCAt
MTA0LDIxICsxMDUsMjQgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c01hcmtlcnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAvLyBBbmltYXRl
ZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihQYXRo
TGVuZ3RoLCBwYXRoTGVuZ3RoKQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIC8vIEN1c3RvbSAnZCcgcHJvcGVydHkK
KyAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZUQodm9pZCogY29udGV4dEVsZW1lbnQpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlRFdy
YXBwZXIodm9pZCogY29udGV4dEVsZW1lbnQpOworCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR1BhdGhFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05V
TUJFUihQYXRoTGVuZ3RoLCBwYXRoTGVuZ3RoKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JP
T0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0
cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rl
c3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0
aGlzKTsgfQogCi0gICAgdm9pZCBzeW5jaHJvbml6ZUQoKTsKLQotcHJvdGVjdGVkOgorcHJpdmF0
ZToKICAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IG1fcGF0aEJ5dGVTdHJlYW07CiAgICAg
bXV0YWJsZSBTVkdTeW5jaHJvbml6YWJsZUFuaW1hdGVkUHJvcGVydHk8U1ZHUGF0aFNlZ0xpc3Q+
IG1fcGF0aFNlZ0xpc3Q7CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0
eVRlYXJPZmY+IG1fYW5pbWF0YWJsZVBhdGhTZWdMaXN0OwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhTZWdXaXRoQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXRoU2VnV2l0aENvbnRleHQuaAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ1dpdGhDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDcgKzM5LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFBhdGhTZWdVbmRlZmluZWRSb2xlOgog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGNhc2UgUGF0aFNlZ1VuYWx0ZXJlZFJvbGU6
Ci0gICAgICAgICAgICByZXR1cm4gbV9lbGVtZW50LT5hbmltYXRhYmxlUGF0aFNlZ0xpc3QoKTsK
KyAgICAgICAgICAgIHJldHVybiBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBXcmFwcGVyPFNW
R0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+KG1fZWxlbWVudC5nZXQoKSwgU1ZH
UGF0aEVsZW1lbnQ6OmRQcm9wZXJ0eUluZm8oKSk7CiAgICAgICAgIGNhc2UgUGF0aFNlZ05vcm1h
bGl6ZWRSb2xlOgogICAgICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTQxMiAtIEltcGxlbWVudCBub3JtYWxpemVkIHBhdGggc2VnbWVu
dCBsaXN0cyEKICAgICAgICAgICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdHRlcm5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0dGVybkVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDE4ICs0Miwz
NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmlu
aXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1l
czo6eEF0dHIsIFgsIHgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1BhdHRlcm5FbGVtZW50
LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1BhdHRl
cm5FbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0aCwgd2lkdGgpCi1ERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVp
Z2h0LCBoZWlnaHQpCi1ERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHUGF0dGVybkVsZW1l
bnQsIFNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRyLCBQYXR0ZXJuVW5pdHMsIHBhdHRlcm5Vbml0
cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElP
TihTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50VW5pdHNBdHRyLCBQ
YXR0ZXJuQ29udGVudFVuaXRzLCBwYXR0ZXJuQ29udGVudFVuaXRzLCBTVkdVbml0VHlwZXM6OlNW
R1VuaXRUeXBlKQotREVGSU5FX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFNWR1BhdHRlcm5FbGVt
ZW50LCBTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIsIFBhdHRlcm5UcmFuc2Zvcm0sIHBh
dHRlcm5UcmFuc2Zvcm0pIAotREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdQYXR0ZXJuRWxlbWVu
dCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCi1ERUZJTkVfQU5JTUFURURfQk9P
TEVBTihTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQotREVGSU5FX0FOSU1BVEVEX1JFQ1QoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjp2
aWV3Qm94QXR0ciwgVmlld0JveCwgdmlld0JveCkKLURFRklORV9BTklNQVRFRF9QUkVTRVJWRUFT
UEVDVFJBVElPKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRp
b0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pIAorQkVHSU5f
REVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNW
R1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCisgICAgREVGSU5FX0FOSU1B
VEVEX0xFTkdUSChTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQorICAg
IERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjp3aWR0
aEF0dHIsIFdpZHRoLCB3aWR0aCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1BhdHRl
cm5FbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQpCisgICAgREVG
SU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6cGF0
dGVyblVuaXRzQXR0ciwgUGF0dGVyblVuaXRzLCBwYXR0ZXJuVW5pdHMsIFNWR1VuaXRUeXBlczo6
U1ZHVW5pdFR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR1BhdHRlcm5F
bGVtZW50LCBTVkdOYW1lczo6cGF0dGVybkNvbnRlbnRVbml0c0F0dHIsIFBhdHRlcm5Db250ZW50
VW5pdHMsIHBhdHRlcm5Db250ZW50VW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisg
ICAgREVGSU5FX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdO
YW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIsIFBhdHRlcm5UcmFuc2Zvcm0sIHBhdHRlcm5UcmFu
c2Zvcm0pIAorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHUGF0dGVybkVsZW1lbnQsIFhM
aW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQorICAgIERFRklORV9BTklNQVRFRF9CT09M
RUFOKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCisgICAgREVGSU5FX0FOSU1BVEVEX1JFQ1QoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVz
Ojp2aWV3Qm94QXR0ciwgVmlld0JveCwgdmlld0JveCkKKyAgICBERUZJTkVfQU5JTUFURURfUFJF
U0VSVkVBU1BFQ1RSQVRJTyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQXNw
ZWN0UmF0aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSAK
K0VORF9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR1BhdHRlcm5FbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1B
VEVEX1BST1BFUlRZKHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeSkK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh3aWR0aCkKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShoZWlnaHQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkocGF0dGVyblVuaXRzKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVE
X1BST1BFUlRZKHBhdHRlcm5Db250ZW50VW5pdHMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkocGF0dGVyblRyYW5zZm9ybSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShocmVmKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkodmlld0JveCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShwcmVz
ZXJ2ZUFzcGVjdFJhdGlvKSAKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdTdHlsZWRFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5l
IFNWR1BhdHRlcm5FbGVtZW50OjpTVkdQYXR0ZXJuRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KQpAQCAtNjUsNiArODIsNyBAQCBpbmxpbmUgU1ZHUGF0dGVybkVsZW1l
bnQ6OlNWR1BhdHRlcm5FbGVtCiAgICAgLCBtX3BhdHRlcm5Db250ZW50VW5pdHMoU1ZHVW5pdFR5
cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKFNWR05hbWVzOjpwYXR0ZXJuVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRp
ZXNGb3JTVkdQYXR0ZXJuRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR1BhdHRlcm5FbGVt
ZW50PiBTVkdQYXR0ZXJuRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTE4MCwxMTAgKzE5OCw2IEBAIHZvaWQgU1ZHUGF0
dGVybkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW4KICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xh
eW91dCh0cnVlKTsKIH0KIAotdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6c3luY2hyb25pemVQcm9w
ZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsgICAgCi0gICAgaWYgKGF0dHJO
YW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVQYXR0ZXJuVW5pdHMoKTsK
LSAgICAgICAgc3luY2hyb25pemVQYXR0ZXJuQ29udGVudFVuaXRzKCk7Ci0gICAgICAgIHN5bmNo
cm9uaXplUGF0dGVyblRyYW5zZm9ybSgpOwotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAg
ICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAg
c3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICBTVkdGaXRU
b1ZpZXdCb3g6OnN5bmNocm9uaXplUHJvcGVydGllcyhhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1Rl
c3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdT
dHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
OjpwYXR0ZXJuVW5pdHNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplUGF0dGVyblVuaXRzKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnBhdHRlcm5Db250ZW50VW5pdHNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplUGF0dGVybkNv
bnRlbnRVbml0cygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpwYXR0ZXJuVHJhbnNmb3JtQXR0cikgewotICAgICAgICBzeW5jaHJvbml6
ZVBhdHRlcm5UcmFuc2Zvcm0oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlB
dHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVXaWR0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hy
b25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewotICAgICAgICBTVkdGaXRUb1ZpZXdCb3g6OnN5bmNocm9uaXplUHJvcGVydGllcyhhdHRyTmFt
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGll
cyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1BhdHRl
cm5FbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
OwotfQotCi12b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAg
ICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFu
aW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnBhdHRlcm5Vbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRp
b24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cGF0dGVy
bkNvbnRlbnRVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIsIEFuaW1h
dGVkVHJhbnNmb3JtTGlzdCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhM
aW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgQW5pbWF0ZWRSZWN0KTsKLSAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0
UmF0aW9BdHRyLCBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOwotfQotCiB2b2lkIFNWR1Bh
dHRlcm5FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUq
IGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7
CiAgICAgU1ZHU3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwg
YmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCwz
MyArNjAsMzAgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5D
aGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9
IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVu
ZGVyU3R5bGUqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkg
Y29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNM
QVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFks
IHkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQotICAgIERFQ0xB
UkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQotICAgIERFQ0xBUkVfQU5JTUFURURf
RU5VTUVSQVRJT04oUGF0dGVyblVuaXRzLCBwYXR0ZXJuVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZH
VW5pdFR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihQYXR0ZXJuQ29udGVu
dFVuaXRzLCBwYXR0ZXJuQ29udGVudFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQot
ICAgIERFQ0xBUkVfQU5JTUFURURfVFJBTlNGT1JNX0xJU1QoUGF0dGVyblRyYW5zZm9ybSwgcGF0
dGVyblRyYW5zZm9ybSkKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERFQ0xBUkVfQU5J
TUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi0KLSAgICAvLyBTVkdQYXR0ZXJuRWxl
bWVudAotICAgIERFQ0xBUkVfQU5JTUFURURfUkVDVChWaWV3Qm94LCB2aWV3Qm94KQotICAgIERF
Q0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBw
cmVzZXJ2ZUFzcGVjdFJhdGlvKSAKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHUGF0dGVybkVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgs
IHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVS
QVRJT04oUGF0dGVyblVuaXRzLCBwYXR0ZXJuVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5
cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oUGF0dGVybkNvbnRlbnRV
bml0cywgcGF0dGVybkNvbnRlbnRVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChQYXR0ZXJuVHJhbnNmb3JtLCBw
YXR0ZXJuVHJhbnNmb3JtKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBo
cmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9SRUNUKFZpZXdCb3gsIHZpZXdCb3gpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJF
U0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlv
KSAKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0
cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rl
c3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0
aGlzKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUG9seUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEyICszNSwzNSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRp
b25zCi1ERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdQb2x5RWxlbWVudCwgU1ZHTmFtZXM6OmV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorLy8gRGVmaW5lIGN1c3RvbSBhbmltYXRlZCBwcm9w
ZXJ0eSAncG9pbnRzJy4KK2NvbnN0IFNWR1Byb3BlcnR5SW5mbyogU1ZHUG9seUVsZW1lbnQ6OnBv
aW50c1Byb3BlcnR5SW5mbygpCit7CisgICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyog
c19wcm9wZXJ0eUluZm8gPSAwOworICAgIGlmICghc19wcm9wZXJ0eUluZm8pIHsKKyAgICAgICAg
c19wcm9wZXJ0eUluZm8gPSBuZXcgU1ZHUHJvcGVydHlJbmZvKEFuaW1hdGVkUG9pbnRzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6OnBvaW50
c0F0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdO
YW1lczo6cG9pbnRzQXR0ci5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZTVkdQb2x5RWxlbWVudDo6c3luY2hyb25pemVQb2ludHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU1ZHUG9seUVsZW1l
bnQ6Omxvb2t1cE9yQ3JlYXRlUG9pbnRzV3JhcHBlcik7CisgICAgfQorICAgIHJldHVybiBzX3By
b3BlcnR5SW5mbzsKK30KKworQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBE
RUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdQb2x5RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JF
R0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUG9seUVsZW1lbnQpCisgICAgUkVH
SVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocG9pbnRzKQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNU
RVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitF
TkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBTVkdQb2x5RWxlbWVudDo6U1ZHUG9s
eUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
CiB7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdQb2x5RWxlbWVudCgpOyAg
ICAKIH0KIAogYm9vbCBTVkdQb2x5RWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBAIC02OCw4ICs5MSw4IEBAIHZvaWQgU1ZHUG9seUVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXQKICAgICAgICAgaWYgKCFwb2ludHNMaXN0RnJvbVNW
R0RhdGEobmV3TGlzdCwgdmFsdWUpKQogICAgICAgICAgICAgZG9jdW1lbnQoKS0+YWNjZXNzU1ZH
RXh0ZW5zaW9ucygpLT5yZXBvcnRFcnJvcigiUHJvYmxlbSBwYXJzaW5nIHBvaW50cz1cIiIgKyB2
YWx1ZSArICJcIiIpOwogCi0gICAgICAgIGlmIChTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJP
ZmY8U1ZHUG9pbnRMaXN0PiogbGlzdCA9IG1fYW5pbWF0YWJsZVBvaW50c0xpc3QuZ2V0KCkpCi0g
ICAgICAgICAgICBsaXN0LT5kZXRhY2hMaXN0V3JhcHBlcnMobmV3TGlzdC5zaXplKCkpOworICAg
ICAgICBpZiAoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSogd3JhcHBlciA9IFNWR0FuaW1hdGVkUHJvcGVy
dHk6Omxvb2t1cFdyYXBwZXI8U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50
TGlzdD4gPih0aGlzLCBwb2ludHNQcm9wZXJ0eUluZm8oKSkpCisgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0Pio+KHdyYXBw
ZXIpLT5kZXRhY2hMaXN0V3JhcHBlcnMobmV3TGlzdC5zaXplKCkpOwogCiAgICAgICAgIG1fcG9p
bnRzLnZhbHVlID0gbmV3TGlzdDsKICAgICAgICAgcmV0dXJuOwpAQCAtMTE1LDY3ICsxMzgsMzMg
QEAgdm9pZCBTVkdQb2x5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQordm9pZCBTVkdQb2x5RWxlbWVudDo6
c3luY2hyb25pemVQb2ludHModm9pZCogY29udGV4dEVsZW1lbnQpCiB7Ci0gICAgU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotCi0g
ICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUG9pbnRzKCk7Ci0g
ICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwor
ICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7CisgICAgU1ZHUG9seUVsZW1lbnQqIG93bmVyVHlw
ZSA9IHN0YXRpY19jYXN0PFNWR1BvbHlFbGVtZW50Kj4oY29udGV4dEVsZW1lbnQpOworICAgIGlm
ICghb3duZXJUeXBlLT5tX3BvaW50cy5zaG91bGRTeW5jaHJvbml6ZSkKICAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3du
QXR0cmlidXRlKGF0dHJOYW1lKSkKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKCk7Ci0gICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0
dHIpCi0gICAgICAgIHN5bmNocm9uaXplUG9pbnRzKCk7Ci0gICAgZWxzZSBpZiAoU1ZHVGVzdHM6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25p
emVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKKyAgICBTVkdBbmltYXRlZFByb3BlcnR5U3lu
Y2hyb25pemVyPHRydWU+OjpzeW5jaHJvbml6ZShvd25lclR5cGUsIHBvaW50c1Byb3BlcnR5SW5m
bygpLT5hdHRyaWJ1dGVOYW1lLCBvd25lclR5cGUtPm1fcG9pbnRzLnZhbHVlLnZhbHVlQXNTdHJp
bmcoKSk7CiB9CiAKLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdQb2x5RWxlbWVudDo6
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQorUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3Bl
cnR5PiBTVkdQb2x5RWxlbWVudDo6bG9va3VwT3JDcmVhdGVQb2ludHNXcmFwcGVyKHZvaWQqIGNv
bnRleHRFbGVtZW50KQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1
cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdQb2x5RWxlbWVu
dDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
Ojpwb2ludHNBdHRyLCBBbmltYXRlZFBvaW50cyk7Ci19Ci0KLXZvaWQgU1ZHUG9seUVsZW1lbnQ6
OnN5bmNocm9uaXplUG9pbnRzKCkKLXsKLSAgICBpZiAoIW1fcG9pbnRzLnNob3VsZFN5bmNocm9u
aXplKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25p
emVyPHRydWU+OjpzeW5jaHJvbml6ZSh0aGlzLCBTVkdOYW1lczo6cG9pbnRzQXR0ciwgbV9wb2lu
dHMudmFsdWUudmFsdWVBc1N0cmluZygpKTsKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwor
ICAgIFNWR1BvbHlFbGVtZW50KiBvd25lclR5cGUgPSBzdGF0aWNfY2FzdDxTVkdQb2x5RWxlbWVu
dCo+KGNvbnRleHRFbGVtZW50KTsKKyAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9v
a3VwT3JDcmVhdGVXcmFwcGVyPFNWR1BvbHlFbGVtZW50LCBTVkdBbmltYXRlZExpc3RQcm9wZXJ0
eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiwgU1ZHUG9pbnRMaXN0LCB0cnVlPgorICAgICAgICAgICAo
b3duZXJUeXBlLCBwb2ludHNQcm9wZXJ0eUluZm8oKSwgb3duZXJUeXBlLT5tX3BvaW50cy52YWx1
ZSk7CiB9CiAKIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiogU1ZHUG9seUVs
ZW1lbnQ6OnBvaW50cygpCiB7Ci0gICAgaWYgKCFtX2FuaW1hdGFibGVQb2ludHNMaXN0KSB7Ci0g
ICAgICAgIG1fcG9pbnRzLnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKLSAgICAgICAgbV9hbmlt
YXRhYmxlUG9pbnRzTGlzdCA9IFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3Jh
cHBlcjxTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiAsIFNWR1Bv
aW50TGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLCBTVkdOYW1l
czo6cG9pbnRzQXR0ciwgU1ZHTmFtZXM6OnBvaW50c0F0dHIubG9jYWxOYW1lKCksIG1fcG9pbnRz
LnZhbHVlKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHTGlzdFByb3BlcnR5
VGVhck9mZjxTVkdQb2ludExpc3Q+Kj4obV9hbmltYXRhYmxlUG9pbnRzTGlzdC0+YmFzZVZhbCgp
KTsKKyAgICBtX3BvaW50cy5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0Pio+KHN0YXRpY19w
b2ludGVyX2Nhc3Q8U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4g
Pihsb29rdXBPckNyZWF0ZVBvaW50c1dyYXBwZXIodGhpcykpLT5iYXNlVmFsKCkpOwogfQogCiBT
VkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4qIFNWR1BvbHlFbGVtZW50Ojphbmlt
YXRlZFBvaW50cygpCiB7Ci0gICAgaWYgKCFtX2FuaW1hdGFibGVQb2ludHNMaXN0KSB7Ci0gICAg
ICAgIG1fcG9pbnRzLnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKLSAgICAgICAgbV9hbmltYXRh
YmxlUG9pbnRzTGlzdCA9IFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBl
cjxTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiAsIFNWR1BvaW50
TGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLCBTVkdOYW1lczo6
cG9pbnRzQXR0ciwgU1ZHTmFtZXM6OnBvaW50c0F0dHIubG9jYWxOYW1lKCksIG1fcG9pbnRzLnZh
bHVlKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHTGlzdFByb3BlcnR5VGVh
ck9mZjxTVkdQb2ludExpc3Q+Kj4obV9hbmltYXRhYmxlUG9pbnRzTGlzdC0+YW5pbVZhbCgpKTsK
KyAgICBtX3BvaW50cy5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0Pio+KHN0YXRpY19wb2lu
dGVyX2Nhc3Q8U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4gPihs
b29rdXBPckNyZWF0ZVBvaW50c1dyYXBwZXIodGhpcykpLT5hbmltVmFsKCkpOwogfQogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAkocmV2aXNpb24gOTA2MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEs
NiArNDEsOCBAQCBwdWJsaWM6CiAKICAgICBTVkdQb2ludExpc3QmIHBvaW50TGlzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fcG9pbnRzLnZhbHVlOyB9CiAKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVy
dHlJbmZvKiBwb2ludHNQcm9wZXJ0eUluZm8oKTsKKwogcHJvdGVjdGVkOgogICAgIFNWR1BvbHlF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCkBAIC01MSwyMCArNTMs
MjQgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7IAogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBR
dWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNYXJr
ZXJzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotCi0gICAgdm9pZCBzeW5jaHJv
bml6ZVBvaW50cygpOworICAgIC8vIEN1c3RvbSAncG9pbnRzJyBwcm9wZXJ0eQorICAgIHN0YXRp
YyB2b2lkIHN5bmNocm9uaXplUG9pbnRzKHZvaWQqIGNvbnRleHRFbGVtZW50KTsKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29rdXBPckNyZWF0ZVBvaW50c1dy
YXBwZXIodm9pZCogY29udGV4dEVsZW1lbnQpOworCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR1BvbHlFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JP
T0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0
cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rl
c3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0
aGlzKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSBTVkdTeW5jaHJvbml6YWJsZUFuaW1h
dGVkUHJvcGVydHk8U1ZHUG9pbnRMaXN0PiBtX3BvaW50czsKLSAgICBSZWZQdHI8U1ZHQW5pbWF0
ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4gPiBtX2FuaW1hdGFibGVQb2ludHNM
aXN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNjIyKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQwLDEyICs0MCwyMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8v
IEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmN4QXR0ciwgQ3gsIGN4KQotREVGSU5F
X0FOSU1BVEVEX0xFTkdUSChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpjeUF0
dHIsIEN5LCBjeSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50LCBTVkdOYW1lczo6ckF0dHIsIFIsIHIpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmZ4QXR0ciwgRngsIGZ4KQotREVGSU5FX0FO
SU1BVEVEX0xFTkdUSChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpmeUF0dHIs
IEZ5LCBmeSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FO
SU1BVEVEX0xFTkdUSChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjpjeEF0dHIs
IEN4LCBjeCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JhZGlhbEdyYWRpZW50RWxl
bWVudCwgU1ZHTmFtZXM6OmN5QXR0ciwgQ3ksIGN5KQorICAgIERFRklORV9BTklNQVRFRF9MRU5H
VEgoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdOYW1lczo6ckF0dHIsIFIsIHIpCisgICAg
REVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVz
OjpmeEF0dHIsIEZ4LCBmeCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmZ5QXR0ciwgRnksIGZ5KQorRU5EX0RFRklORV9BTklN
QVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKGN4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGN5KQorICAgIFJF
R0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHIpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoZngpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
ZnkpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHR3JhZGllbnRF
bGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudDo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0dyYWRpZW50
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTU3LDYgKzY3LDcgQEAgaW5saW5lIFNWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudDo6U1ZHUmFkaQogewogICAgIC8vIFNwZWM6IElmIHRoZSBjeC9j
eS9yIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFs
dWUgb2YgIjUwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OnJhZGlhbEdyYWRpZW50VGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNG
b3JTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQ+IFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTEyOSw2OSArMTQw
LDYgQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYgogICAgICAgICBv
YmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCi12b2lkIFNWR1JhZGlhbEdyYWRpZW50
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJv
bml6ZUN4KCk7Ci0gICAgICAgIHN5bmNocm9uaXplQ3koKTsKLSAgICAgICAgc3luY2hyb25pemVG
eCgpOwotICAgICAgICBzeW5jaHJvbml6ZUZ5KCk7Ci0gICAgICAgIHN5bmNocm9uaXplUigpOwot
ICAgICAgICBTVkdHcmFkaWVudEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHR3JhZGllbnRFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6Y3hBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplQ3goKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6Y3lB
dHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplQ3koKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZnhBdHRyKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplRngoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6ZnlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRnkoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ckF0dHIpIHsK
LSAgICAgICAgc3luY2hyb25pemVSKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR0dyYWRpZW50RWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmN4QXR0ciwgQW5pbWF0ZWRM
ZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Y3lB
dHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjpyQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZnhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpmeUF0dHIsIEFuaW1hdGVkTGVu
Z3RoKTsKLX0KLQogUmVuZGVyT2JqZWN0KiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVy
biBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50KHRoaXMpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAkocmV2
aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDIwICs0MiwxOCBAQCBwcml2YXRlOgogICAgIGJv
b2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZp
cnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFs
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5n
dGhzKCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeCwgY3gpCi0gICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEgoQ3ksIGN5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFIsIHIpCi0gICAgREVD
TEFSRV9BTklNQVRFRF9MRU5HVEgoRngsIGZ4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RI
KEZ5LCBmeSkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeCwgY3gp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN5LCBjeSkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoUiwgcikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgo
RngsIGZ4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChGeSwgZnkpCisgICAgRU5E
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDYy
MikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDE0ICszMiwyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1h
dGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RF
bGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNW
R1JlY3RFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCi1ERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0aCwgd2lkdGgpCi1E
RUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0
ciwgSGVpZ2h0LCBoZWlnaHQpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50
LCBTVkdOYW1lczo6cnhBdHRyLCBSeCwgcngpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1Jl
Y3RFbGVtZW50LCBTVkdOYW1lczo6cnlBdHRyLCBSeSwgcnkpCi1ERUZJTkVfQU5JTUFURURfQk9P
TEVBTihTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRB
dHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURf
TEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCisgICAgREVGSU5F
X0FOSU1BVEVEX0xFTkdUSChTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQor
ICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjp3aWR0
aEF0dHIsIFdpZHRoLCB3aWR0aCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RF
bGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQpCisgICAgREVGSU5F
X0FOSU1BVEVEX0xFTkdUSChTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnJ4QXR0ciwgUngsIHJ4
KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjpy
eUF0dHIsIFJ5LCByeSkKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdSZWN0RWxlbWVu
dCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorRU5EX0RFRklORV9BTklN
QVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZH
UmVjdEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeCkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5KQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKHdpZHRoKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKGhlaWdodCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShyeCkK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShyeSkKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJF
R0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3Rz
KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR1JlY3RFbGVt
ZW50OjpTVkdSZWN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKQEAgLTUxLDYgKzY0LDcgQEAgaW5saW5lIFNWR1JlY3RFbGVtZW50OjpTVkdS
ZWN0RWxlbWVudChjbwogICAgICwgbV9yeShMZW5ndGhNb2RlSGVpZ2h0KQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjpyZWN0VGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFBy
b3BlcnRpZXNGb3JTVkdSZWN0RWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR1JlY3RFbGVt
ZW50PiBTVkdSZWN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTE3MCw4OCArMTg0LDYgQEAgdm9pZCBTVkdSZWN0RWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
Ci12b2lkIFNWR1JlY3RFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAg
c3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAg
ICBzeW5jaHJvbml6ZVJ4KCk7Ci0gICAgICAgIHN5bmNocm9uaXplUnkoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpz
eW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJO
YW1lKSkgewotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25p
emVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5
QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUhlaWdo
dCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjpyeEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVSeCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpyeUF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVSeSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMs
IGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHUmVjdEVsZW1lbnQ6
OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZv
aWQgU1ZHUmVjdEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0g
ICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
ID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFu
aW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnJ4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cnlBdHRyLCBBbmltYXRlZExlbmd0
aCk7Ci19Ci0KIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnRvUGF0aERhdGEoUGF0aCYgcGF0aCkgY29u
c3QKIHsKICAgICBBU1NFUlQocGF0aC5pc0VtcHR5KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1JlY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1JlY3RFbGVtZW50LmgJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1JlY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDI0ICs0NywyNSBAQCBwcml2YXRl
OgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0g
ICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAg
ICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0Owog
CiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIAotICAg
IC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIKFgsIHgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKLSAgICBERUNM
QVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwgd2lkdGgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEgoSGVpZ2h0LCBoZWlnaHQpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUngsIHJ4
KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFJ5LCByeSkKLQotICAgIC8vIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJ
Tl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUmVjdEVsZW1lbnQpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVO
R1RIKFksIHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCisgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFJ4LCByeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9MRU5HVEgoUnksIHJ5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRf
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1
YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25p
emVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0
ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1
YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NW
R0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVt
ZW50LmNwcAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDE0ICs1NiwyNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKLURFRklO
RV9BTklNQVRFRF9MRU5HVEgoU1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBZLCB5KQot
REVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRy
LCBXaWR0aCwgd2lkdGgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1NWR0VsZW1lbnQsIFNW
R05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdodCkKLURFRklORV9BTklNQVRFRF9CT09M
RUFOKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0
ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkK
LURFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR1NWR0VsZW1lbnQsIFNWR05h
bWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2Vy
dmVBc3BlY3RSYXRpbykKLURFRklORV9BTklNQVRFRF9SRUNUKFNWR1NWR0VsZW1lbnQsIFNWR05h
bWVzOjp2aWV3Qm94QXR0ciwgVmlld0JveCwgdmlld0JveCkKK0JFR0lOX0RFRklORV9BTklNQVRF
RF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdTVkdFbGVtZW50LCBT
VkdOYW1lczo6eEF0dHIsIFgsIHgpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdTVkdF
bGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdU
SChTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBXaWR0aCwgd2lkdGgpCisgICAg
REVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0
ciwgSGVpZ2h0LCBoZWlnaHQpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHU1ZHRWxl
bWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIERFRklORV9B
TklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjpwcmVz
ZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RS
YXRpbykKKyAgICBERUZJTkVfQU5JTUFURURfUkVDVChTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6
dmlld0JveEF0dHIsIFZpZXdCb3gsIHZpZXdCb3gpCitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTVkdFbGVtZW50
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWSh3aWR0aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShoZWln
aHQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh2aWV3Qm94
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHByZXNlcnZlQXNwZWN0UmF0
aW8pCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkTG9j
YXRhYmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhT
VkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdT
VkdFbGVtZW50OjpTVkdTVkdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2MpCiAgICAgOiBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50KHRhZ05hbWUsIGRv
YykKQEAgLTc3LDYgKzkwLDcgQEAgaW5saW5lIFNWR1NWR0VsZW1lbnQ6OlNWR1NWR0VsZW1lbnQo
Y29ucwogICAgICwgbV9oYXNTZXRDb250YWluZXJTaXplKGZhbHNlKQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKFNWR05hbWVzOjpzdmdUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVy
dGllc0ZvclNWR1NWR0VsZW1lbnQoKTsKICAgICBkb2MtPnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3Rp
dmF0aW9uQ2FsbGJhY2tzKHRoaXMpOwogfQogCkBAIC0zNTUsNTUgKzM2OSw2IEBAIHZvaWQgU1ZH
U1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCgKICAgICBTVkdTdHlsZWRFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotdm9pZCBTVkdTVkdFbGVtZW50Ojpz
eW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAg
IGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwot
ICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAg
ICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHRml0VG9WaWV3Qm94OjpzeW5jaHJvbml6ZVBy
b3BlcnRpZXMoYXR0ck5hbWUpOwotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0
aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25p
emVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAg
ICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIHN5bmNocm9u
aXplWSgpOwotICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0g
ICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICBlbHNl
IGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0g
ICAgZWxzZSBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkg
Ci0gICAgICAgIFNWR0ZpdFRvVmlld0JveDo6c3luY2hyb25pemVQcm9wZXJ0aWVzKGF0dHJOYW1l
KTsKLSAgICBlbHNlIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCi0g
ICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwot
ICAgIGVsc2UKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShh
dHRyTmFtZSk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdTVkdFbGVtZW50
OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12
b2lkIFNWR1NWR0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0g
ICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
ID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0ZWRM
ZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6d2lk
dGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgQW5pbWF0ZWRSZWN0
KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZl
QXNwZWN0UmF0aW9BdHRyLCBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOwotfQotCiB1bnNp
Z25lZCBTVkdTVkdFbGVtZW50OjpzdXNwZW5kUmVkcmF3KHVuc2lnbmVkIC8qIG1heFdhaXRNaWxs
aXNlY29uZHMgKi8pCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBtZSAoc2VlIGJ1ZyAxMTI3
NSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAkocmV2aXNpb24gOTA2MjIpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDUsMjcgKzE0NSwyNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURv
Y3VtZW50KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNS
ZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIAogICAgIHZvaWQgaW5oZXJpdFZpZXdBdHRyaWJ1dGVz
KFNWR1ZpZXdFbGVtZW50Kik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlv
bnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQotICAgIERFQ0xBUkVfQU5JTUFU
RURfTEVOR1RIKFksIHkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRo
KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQotCi0gICAgLy8g
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVB
TihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQot
Ci0gICAgLy8gU1ZHRml0VG9WaWV3Qm94Ci0gICAgREVDTEFSRV9BTklNQVRFRF9SRUNUKFZpZXdC
b3gsIHZpZXdCb3gpCi0gICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFBy
ZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCi0gCisgICAgQkVHSU5fREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1NWR0VsZW1lbnQpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKFgsIHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFks
IHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1JFQ1QoVmlld0JveCwg
dmlld0JveCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFBy
ZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgRU5EX0RFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1
aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWly
ZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMo
dGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsg
U1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KKwogICAgIHZpcnR1
YWwgdm9pZCBkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBk
b2N1bWVudERpZEJlY29tZUFjdGl2ZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Nj
cmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMjEgKzI4LDI5IEBACiAj
aW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCIK
ICNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2UuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgog
I2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklO
RyhTVkdTY3JpcHRFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKLURF
RklORV9BTklNQVRFRF9CT09MRUFOKFNWR1NjcmlwdEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisg
ICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdTY3JpcHRFbGVtZW50LCBYTGlua05hbWVzOjpo
cmVmQXR0ciwgSHJlZiwgaHJlZikKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdTY3Jp
cHRFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVG
SU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdTY3JpcHRFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKGhyZWYpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlu
bGluZSBTVkdTY3JpcHRFbGVtZW50OjpTVkdTY3JpcHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCB3YXNJbnNlcnRlZEJ5UGFyc2Vy
LCBib29sIGFscmVhZHlTdGFydGVkKQogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkKICAgICAsIFNjcmlwdEVsZW1lbnQodGhpcywgd2FzSW5zZXJ0ZWRCeVBhcnNlciwgYWxyZWFk
eVN0YXJ0ZWQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnNjcmlwdFRhZykp
OworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHU2NyaXB0RWxlbWVudCgpOwog
fQogCiBQYXNzUmVmUHRyPFNWR1NjcmlwdEVsZW1lbnQ+IFNWR1NjcmlwdEVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wg
aW5zZXJ0ZWRCeVBhcnNlcikKQEAgLTEyMCw0NCArMTI4LDYgQEAgdm9pZCBTVkdTY3JpcHRFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12
b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAg
ICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHN5
bmNocm9uaXplSHJlZigpOwotICAgICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXpl
UHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfSAgIAotCi0gICAgaWYg
KFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1NjcmlwdEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJu
IHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHU2NyaXB0RWxlbWVu
dDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcp
OwotfQotCiB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsK
ICAgICBTVkdFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDkgKzUxLDYg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdl
ZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hh
bmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCB2b2lkIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogCkBAIC03NSwxMyArNzIsMTAgQEAg
cHJpdmF0ZToKIAogICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0
dHJpYnV0ZXNBbmRDaGlsZHJlbigpIGNvbnN0OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkg
ZGVjbGFyYXRpb25zCi0KLSAgICAvLyBTVkdVUklSZWZlcmVuY2UKLSAgICBERUNMQVJFX0FOSU1B
VEVEX1NUUklORyhIcmVmLCBocmVmKQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdTY3JpcHRFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBF
TkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICBTdHJpbmcgbV90eXBlOwogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2MjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMywxNCArMzMsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRl
ZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdTdG9wRWxl
bWVudCwgU1ZHTmFtZXM6Om9mZnNldEF0dHIsIE9mZnNldCwgb2Zmc2V0KQorQkVHSU5fREVGSU5F
X0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR1N0b3BF
bGVtZW50LCBTVkdOYW1lczo6b2Zmc2V0QXR0ciwgT2Zmc2V0LCBvZmZzZXQpCitFTkRfREVGSU5F
X0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdTdG9wRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShv
ZmZzZXQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVk
RWxlbWVudCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdT
dG9wRWxlbWVudDo6U1ZHU3RvcEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkKICAgICAsIG1fb2Zmc2V0KDApCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OnN0b3BUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1N0b3BF
bGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHU3RvcEVsZW1lbnQ+IFNWR1N0b3BFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQpAQCAtOTUsNDEgKzEwMiw2IEBAIHZvaWQgU1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdTdG9wRWxlbWVu
dDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsK
LSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZU9m
ZnNldCgpOwotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9u
aXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjpvZmZzZXRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
T2Zmc2V0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1N0b3BFbGVtZW50Ojph
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
KCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lk
IFNWR1N0b3BFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAg
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9
IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRFbGVt
ZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6b2Zmc2V0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotfQotCiBSZW5kZXJPYmplY3QqIFNWR1N0
b3BFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxl
KikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHR3JhZGllbnRTdG9wKHRoaXMp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgJKHJldmlzaW9uIDkwNjIyKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDE2ICszOSwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIGlz
R3JhZGllbnRTdG9wKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAot
ICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFU
RURfTlVNQkVSKE9mZnNldCwgb2Zmc2V0KQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVElFUyhTVkdTdG9wRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIo
T2Zmc2V0LCBvZmZzZXQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHls
ZWRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3R5bGVkRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDExICs0NCwxNyBAQAogI2lu
Y2x1ZGUgIlNWR1VzZUVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1E
RUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR1N0eWxlZEVsZW1lbnQsIEhUTUxOYW1lczo6Y2xhc3NB
dHRyLCBDbGFzc05hbWUsIGNsYXNzTmFtZSkKK0JFR0lOX0RFRklORV9BTklNQVRFRF9QUk9QRVJU
SUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdTdHlsZWRFbGVtZW50LCBIVE1MTmFt
ZXM6OmNsYXNzQXR0ciwgQ2xhc3NOYW1lLCBjbGFzc05hbWUpCitFTkRfREVGSU5FX0FOSU1BVEVE
X1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHls
ZWRFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGNsYXNzTmFt
ZSkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIHVzaW5nIG5hbWVzcGFjZSBT
VkdOYW1lczsKIApAQCAtNjIsNiArNjgsNyBAQCB2b2lkIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVy
dHkoSGFzaE1hcDxBCiBTVkdTdHlsZWRFbGVtZW50OjpTVkdTdHlsZWRFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0VsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNG
b3JTVkdTdHlsZWRFbGVtZW50KCk7CiB9CiAKIFNWR1N0eWxlZEVsZW1lbnQ6On5TVkdTdHlsZWRF
bGVtZW50KCkKQEAgLTIwNSwxMCArMjEyLDExIEBAIGludCBTVkdTdHlsZWRFbGVtZW50Ojpjc3NQ
cm9wZXJ0eUlkRm9yU1YKICAgICByZXR1cm4gcHJvcGVydHlOYW1lVG9JZE1hcC0+Z2V0KGF0dHJO
YW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKK3R5cGVkZWYgSGFzaE1hcDxRdWFsaWZpZWRO
YW1lLCBBbmltYXRlZFByb3BlcnR5VHlwZT4gQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7CiBz
dGF0aWMgaW5saW5lIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBjc3NQcm9wZXJ0eVRvVHlw
ZU1hcCgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCwgc19jc3NQcm9wZXJ0eU1hcCwgKCkpOwotICAgIAorCiAgICAgaWYgKCFzX2Nzc1Byb3Bl
cnR5TWFwLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHNfY3NzUHJvcGVydHlNYXA7CiAKQEAg
LTI2OSwxMiArMjc3LDE1IEBAIHN0YXRpYyBpbmxpbmUgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAKICAgICByZXR1cm4gc19jc3NQcm9wZXJ0eU1hcDsKIH0KIAotQW5pbWF0ZWRBdHRyaWJ1dGVU
eXBlIFNWR1N0eWxlZEVsZW1lbnQ6OmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQ1NTUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OmFu
aW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lLCBWZWN0b3I8QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+JiBwcm9wZXJ0eVR5cGVzKQogeworICAg
IFNWR0VsZW1lbnQ6OmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGF0dHJOYW1lLCBw
cm9wZXJ0eVR5cGVzKTsKKyAgICBpZiAoIXByb3BlcnR5VHlwZXMuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKICAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgY3NzUHJvcGVydHlU
eXBlTWFwID0gY3NzUHJvcGVydHlUb1R5cGVNYXAoKTsKICAgICBpZiAoY3NzUHJvcGVydHlUeXBl
TWFwLmNvbnRhaW5zKGF0dHJOYW1lKSkKLSAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5VHlwZU1h
cC5nZXQoYXR0ck5hbWUpOwotICAgIHJldHVybiBBbmltYXRlZFVua25vd247CisgICAgICAgIHBy
b3BlcnR5VHlwZXMuYXBwZW5kKGNzc1Byb3BlcnR5VHlwZU1hcC5nZXQoYXR0ck5hbWUpKTsKIH0K
IAogYm9vbCBTVkdTdHlsZWRFbGVtZW50Ojppc0FuaW1hdGFibGVDU1NQcm9wZXJ0eShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKQEAgLTI4MiwxMSArMjkzLDYgQEAgYm9vbCBTVkdTdHls
ZWRFbGVtZW50Ojppc0FuaW1hdGFibGVDU1NQcgogICAgIHJldHVybiBjc3NQcm9wZXJ0eVRvVHlw
ZU1hcCgpLmNvbnRhaW5zKGF0dHJOYW1lKTsKIH0KIAotdm9pZCBTVkdTdHlsZWRFbGVtZW50Ojpm
aWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKQotewotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChIVE1MTmFtZXM6OmNsYXNzQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwot
fQotCiBib29sIFNWR1N0eWxlZEVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0CiB7CiAgICAg
aWYgKFNWR1N0eWxlZEVsZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0
dHJOYW1lKSA+IDApIHsKQEAgLTM1MSwxMiArMzU3LDYgQEAgdm9pZCBTVkdTdHlsZWRFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZwogICAgIH0KIH0KIAotdm9pZCBTVkdTdHlsZWRFbGVtZW50Ojpz
eW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAg
IGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpIHx8IGF0dHJOYW1lID09IEhUTUxOYW1lczo6Y2xh
c3NBdHRyKQotICAgICAgICBzeW5jaHJvbml6ZUNsYXNzTmFtZSgpOwotfQotCiB2b2lkIFNWR1N0
eWxlZEVsZW1lbnQ6OmF0dGFjaCgpCiB7CiAgICAgU1ZHRWxlbWVudDo6YXR0YWNoKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgJKHJldmlzaW9uIDkwNjIyKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQZW5kaW5nUmVzb3VyY2VzKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRIYXNQZW5kaW5nUmVzb3VyY2VzKGJvb2wpOwogCi0gICAgQW5pbWF0
ZWRBdHRyaWJ1dGVUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQ1NTUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlZFByb3BlcnR5VHlwZUZv
ckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgVmVjdG9yPEFuaW1hdGVkUHJvcGVydHlU
eXBlPiYpOwogICAgIHN0YXRpYyBib29sIGlzQW5pbWF0YWJsZUNTU1Byb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKIAogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsQ29vcmRp
bmF0ZVNwYWNlVHJhbnNmb3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2NvcGUpIGNvbnN0OwpAQCAtNjIs
MTUgKzYyLDExIEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOiAKICAgICBTVkdTdHlsZWRFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotCiAgICAgdmlydHVhbCBib29sIHJl
bmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKIAogICAgIHZpcnR1
YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVF
bnRyeSYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwotCi0gICAgdm9pZCBmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKQEAg
LTk0LDggKzkwLDkgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hTZXQ8U1ZHU3R5bGVkRWxlbWVudCo+
IG1fZWxlbWVudHNXaXRoUmVsYXRpdmVMZW5ndGhzOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoQ2xhc3NOYW1lLCBj
bGFzc05hbWUpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxl
ZEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKENsYXNzTmFtZSwgY2xh
c3NOYW1lKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiwxMiArMzIsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBB
bmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1RSQU5TRk9STV9M
SVNUKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LCBTVkdOYW1lczo6dHJhbnNmb3JtQXR0
ciwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElF
UworICAgIERFRklORV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudCwgU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIsIFRyYW5zZm9ybSwgdHJhbnNmb3Jt
KQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkodHJhbnNmb3JtKQorICAgIFJFR0lTVEVSX1BBUkVO
VF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQpCitFTkRfUkVH
SVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dDo6U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0Zv
clNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KCk7CiB9CiAKIFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50Ojp+U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQoKQpAQCAtMTE5LDI3
ICsxMjYsNiBAQCB2b2lkIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzdmdBCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
Ci17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25p
emVUcmFuc2Zvcm0oKTsKLSAgICAgICAgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRM
b2NhdGFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dHJhbnNmb3Jt
QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVRyYW5zZm9ybSgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KIFNWR0VsZW1lbnQqIFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpuZWFyZXN0Vmlld3BvcnRFbGVtZW50KCkgY29u
c3QKIHsKICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtYWJsZTo6bmVhcmVzdFZpZXdwb3J0RWxlbWVu
dCh0aGlzKTsKQEAgLTE2MSwxMyArMTQ3LDYgQEAgUmVuZGVyT2JqZWN0KiBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbQogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdQYXRoKHRoaXMp
OwogfQogCi12b2lkIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsUGFzc2VkQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKQotewotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNz
ZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7
Ci0gICAgCi0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp0cmFu
c2Zvcm1BdHRyLCBBbmltYXRlZFRyYW5zZm9ybUxpc3QpOwotfQotCiB2b2lkIFNWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50Ojp0b0NsaXBQYXRoKFBhdGgmIHBhdGgpIGNvbnN0CiB7CiAgICAg
dG9QYXRoRGF0YShwYXRoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01OCwxMSArNTgsMTAgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZvaWQgZmlsbFBhc3NlZEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJik7CiAKLSAg
ICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVE
X1RSQU5TRk9STV9MSVNUKFRyYW5zZm9ybSwgdHJhbnNmb3JtKQorICAgIEJFR0lOX0RFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChUcmFuc2Zvcm0sIHRyYW5zZm9ybSkK
KyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIGlzU3R5bGVkVHJhbnNmb3JtYWJsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5jcHAJKHJldmlzaW9uIDkw
NjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCwxMyArMjgsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBB
bmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZH
U3dpdGNoRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorQkVH
SU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJTkVfQU5JTUFURURfQk9PTEVB
TihTVkdTd2l0Y2hFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0
dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQp
CitFTkRfREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdTd2l0Y2hFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1B
VEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFS
RU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisg
ICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVH
SVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiBpbmxpbmUgU1ZHU3dpdGNoRWxlbWVudDo6U1ZH
U3dpdGNoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6c3dpdGNoVGFnKSk7Cisg
ICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdTd2l0Y2hFbGVtZW50KCk7CiB9CiAK
IFBhc3NSZWZQdHI8U1ZHU3dpdGNoRWxlbWVudD4gU1ZHU3dpdGNoRWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTY1LDMz
ICs3Myw2IEBAIFJlbmRlck9iamVjdCogU1ZHU3dpdGNoRWxlbWVudDo6Y3JlYXRlUmUKICAgICBy
ZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcih0aGlzKTsK
IH0KIAotdm9pZCBTVkdTd2l0Y2hFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLQotICAgIGlmIChhdHRyTmFtZSA9
PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCgpOwotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKLSAgICAgICAgc3lu
Y2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgZWxzZSBpZiAoU1ZHVGVz
dHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAgICBTVkdUZXN0czo6c3luY2hy
b25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIFNWR1N3aXRjaEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkK
LXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBz
X2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHU3dpdGNoRWxlbWVudDo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCkpOwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCShyZXZpc2lvbiA5MDYyMikKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDE1ICs0NiwxNSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0
ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7Ci0gICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgICAKLSAgICB2
aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVh
bCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucworICAgIEJFR0lOX0RF
Q0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTd2l0Y2hFbGVtZW50KQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAK
LSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRF
RF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpCisgICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1
aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRo
aXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkg
eyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNo
cm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAJKHJldmlzaW9u
IDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSwxNSArMjksMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0v
LyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4o
U1ZHU3ltYm9sRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRy
LCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQot
REVGSU5FX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oU1ZHU3ltYm9sRWxlbWVudCwgU1ZH
TmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVz
ZXJ2ZUFzcGVjdFJhdGlvKSAKLURFRklORV9BTklNQVRFRF9SRUNUKFNWR1N5bWJvbEVsZW1lbnQs
IFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgVmlld0JveCwgdmlld0JveCkKK0JFR0lOX0RFRklORV9B
TklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHU3ltYm9s
RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIERFRklO
RV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR1N5bWJvbEVsZW1lbnQsIFNWR05hbWVz
OjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVB
c3BlY3RSYXRpbykgCisgICAgREVGSU5FX0FOSU1BVEVEX1JFQ1QoU1ZHU3ltYm9sRWxlbWVudCwg
U1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBWaWV3Qm94LCB2aWV3Qm94KQorQkVHSU5fREVGSU5FX0FO
SU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhT
VkdTeW1ib2xFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkodmlld0JveCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShwcmVz
ZXJ2ZUFzcGVjdFJhdGlvKSAKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdTdHlsZWRFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAog
aW5saW5lIFNWR1N5bWJvbEVsZW1lbnQ6OlNWR1N5bWJvbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6
c3ltYm9sVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdTeW1ib2xF
bGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHU3ltYm9sRWxlbWVudD4gU1ZHU3ltYm9sRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKQEAgLTg3LDQ4ICs5Niw2IEBAIHZvaWQgU1ZHU3ltYm9sRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmcKICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKIH0K
IAotdm9pZCBTVkdTeW1ib2xFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAg
ICBTVkdGaXRUb1ZpZXdCb3g6OnN5bmNocm9uaXplUHJvcGVydGllcyhhdHRyTmFtZSk7Ci0gICAg
ICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShh
dHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAg
c3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkgewotICAgICAgICBTVkdGaXRUb1ZpZXdCb3g6OnN5bmNocm9uaXplUHJvcGVydGllcyhh
dHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1N5bWJvbEVsZW1lbnQ6
OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZv
aWQgU1ZHU3ltYm9sRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsK
LSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHU3R5bGVk
RWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OnZpZXdCb3hBdHRyLCBBbmltYXRlZFJlY3QpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIEFuaW1hdGVk
UHJlc2VydmVBc3BlY3RSYXRpbyk7Ci19Ci0KIGJvb2wgU1ZHU3ltYm9sRWxlbWVudDo6c2VsZkhh
c1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShTVkdO
YW1lczo6dmlld0JveEF0dHIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVu
dC5oCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDIxICs0NywxNSBAQCBwcml2YXRlOgogICAgIGJv
b2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZp
cnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFs
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdD
b250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVs
YXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJh
dGlvbnMKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJF
X0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCkKLSAKLSAgICAvLyBTVkdGaXRUb1ZpZXdCb3gKLSAgICBERUNMQVJFX0FO
SU1BVEVEX1JFQ1QoVmlld0JveCwgdmlld0JveCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX1BSRVNF
UlZFQVNQRUNUUkFUSU8oUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykg
CisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N5bWJvbEVsZW1lbnQp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X1JFQ1QoVmlld0JveCwgdmlld0JveCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJW
RUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pIAor
ICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAkocmV2aXNp
b24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNywxMyArMzcsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0v
LyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1NUUklORyhT
VkdUUmVmRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCitCRUdJTl9E
RUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZH
VFJlZkVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQorRU5EX0RFRklO
RV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHVFJlZkVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
aHJlZikKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0UG9z
aXRpb25pbmdFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5s
aW5lIFNWR1RSZWZFbGVtZW50OjpTVkdUUmVmRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdUZXh0UG9zaXRpb25pbmdFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVz
Ojp0cmVmVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdUUmVmRWxl
bWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR1RSZWZFbGVtZW50PiBTVkdUUmVmRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
QEAgLTE2NCw0MSArMTcxLDYgQEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR1RSZWZFbGVtZW50
OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewot
ICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSHJl
ZigpOwotICAgICAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBw
b3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1RleHRQb3NpdGlvbmluZ0Vs
ZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFt
ZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIFNWR1RSZWZFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR1RSZWZFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7Ci0KLSAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRT
dHJpbmcpOwotfQotCiBSZW5kZXJPYmplY3QqIFNWR1RSZWZFbGVtZW50OjpjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChh
cmVuYSkgUmVuZGVyU1ZHSW5saW5lKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RSZWZFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZF
bGVtZW50LmgJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQyLDYgQEAgcHJpdmF0ZToKICAgICBi
b29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1
YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVh
bCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVu
ZGVyZXIoTm9kZSopIGNvbnN0OwpAQCAtNTYsMTAgKzUzLDkgQEAgcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgdm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZSgpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJv
cGVydHkgZGVjbGFyYXRpb25zCi0KLSAgICAvLyBTVkdVUklSZWZlcmVuY2UKLSAgICBERUNMQVJF
X0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdUUmVmRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJ
TkcoSHJlZiwgaHJlZikKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAg
ICBSZWZQdHI8U3VidHJlZU1vZGlmaWNhdGlvbkV2ZW50TGlzdGVuZXI+IG1fZXZlbnRMaXN0ZW5l
cjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcAkocmV2aXNp
b24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzQsMTkgKzc0LDYgQEAgYm9vbCBTVkdUU3BhbkVsZW1lbnQ6OnJlbmRl
cmVySXNOZWVkZWQoYwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIFNWR1RTcGFuRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQot
ewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNf
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdUU3BhbkVsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17ICAgICAgICAKLSAgICBTVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKSk7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCi0KLS8v
IHZpbTp0cz00Om5vZXQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmgJKHJl
dmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw5ICszNiw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAg
ICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRl
eHQmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGVzdHMuY3BwCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXN0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDQ5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorLy8gRGVmaW5lIGN1c3RvbSBub24tYW5pbWF0ZWQgcHJvcGVydHkg
J3JlcXVpcmVkRmVhdHVyZXMnLgorY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBTVkdUZXN0czo6cmVx
dWlyZWRGZWF0dXJlc1Byb3BlcnR5SW5mbygpCit7CisgICAgc3RhdGljIGNvbnN0IFNWR1Byb3Bl
cnR5SW5mbyogc19wcm9wZXJ0eUluZm8gPSAwOworICAgIGlmICghc19wcm9wZXJ0eUluZm8pIHsK
KyAgICAgICAgc19wcm9wZXJ0eUluZm8gPSBuZXcgU1ZHUHJvcGVydHlJbmZvKEFuaW1hdGVkVW5r
bm93biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05h
bWVzOjpyZXF1aXJlZEZlYXR1cmVzQXR0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNWR05hbWVzOjpyZXF1aXJlZEZlYXR1cmVzQXR0ci5sb2NhbE5hbWUo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTVkdFbGVt
ZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICB9CisgICAgcmV0dXJuIHNfcHJvcGVydHlJ
bmZvOworfQorCisKKy8vIERlZmluZSBjdXN0b20gbm9uLWFuaW1hdGVkIHByb3BlcnR5ICdyZXF1
aXJlZEV4dGVuc2lvbnMnLgorY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBTVkdUZXN0czo6cmVxdWly
ZWRFeHRlbnNpb25zUHJvcGVydHlJbmZvKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVy
dHlJbmZvKiBzX3Byb3BlcnR5SW5mbyA9IDA7CisgICAgaWYgKCFzX3Byb3BlcnR5SW5mbykgewor
ICAgICAgICBzX3Byb3BlcnR5SW5mbyA9IG5ldyBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRVbmtu
b3duLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFt
ZXM6OnJlcXVpcmVkRXh0ZW5zaW9uc0F0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTVkdOYW1lczo6cmVxdWlyZWRFeHRlbnNpb25zQXR0ci5sb2NhbE5h
bWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTVkdF
bGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgIH0KKyAgICByZXR1cm4gc19wcm9w
ZXJ0eUluZm87Cit9CisKKy8vIERlZmluZSBjdXN0b20gbm9uLWFuaW1hdGVkIHByb3BlcnR5ICdz
eXN0ZW1MYW5ndWFnZScuCitjb25zdCBTVkdQcm9wZXJ0eUluZm8qIFNWR1Rlc3RzOjpzeXN0ZW1M
YW5ndWFnZVByb3BlcnR5SW5mbygpCit7CisgICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5m
byogc19wcm9wZXJ0eUluZm8gPSAwOworICAgIGlmICghc19wcm9wZXJ0eUluZm8pIHsKKyAgICAg
ICAgc19wcm9wZXJ0eUluZm8gPSBuZXcgU1ZHUHJvcGVydHlJbmZvKEFuaW1hdGVkVW5rbm93biwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpz
eXN0ZW1MYW5ndWFnZUF0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTVkdOYW1lczo6c3lzdGVtTGFuZ3VhZ2VBdHRyLmxvY2FsTmFtZSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNWR0VsZW1lbnQ6OnN5bmNo
cm9uaXplU3lzdGVtTGFuZ3VhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwKTsKKyAgICB9CisgICAgcmV0dXJuIHNfcHJvcGVydHlJbmZvOworfQorCiBT
VkdUZXN0czo6U1ZHVGVzdHMoKQogICAgIDogbV9yZXF1aXJlZEZlYXR1cmVzKFNWR05hbWVzOjpy
ZXF1aXJlZEZlYXR1cmVzQXR0cikKICAgICAsIG1fcmVxdWlyZWRFeHRlbnNpb25zKFNWR05hbWVz
OjpyZXF1aXJlZEV4dGVuc2lvbnNBdHRyKQpAQCAtMzksNiArODIsMTcgQEAgU1ZHVGVzdHM6OlNW
R1Rlc3RzKCkKIHsKIH0KIAorU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgU1ZHVGVzdHM6OmF0
dHJpYnV0ZVRvUHJvcGVydHlNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU1ZHQXR0
cmlidXRlVG9Qcm9wZXJ0eU1hcCwgbWFwLCAoKSk7CisgICAgaWYgKCFtYXAuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gbWFwOworICAgIG1hcC5hZGRQcm9wZXJ0eShyZXF1aXJlZEZlYXR1cmVz
UHJvcGVydHlJbmZvKCkpOworICAgIG1hcC5hZGRQcm9wZXJ0eShyZXF1aXJlZEV4dGVuc2lvbnNQ
cm9wZXJ0eUluZm8oKSk7CisgICAgbWFwLmFkZFByb3BlcnR5KHN5c3RlbUxhbmd1YWdlUHJvcGVy
dHlJbmZvKCkpOworICAgIHJldHVybiBtYXA7Cit9CisKIGJvb2wgU1ZHVGVzdHM6Omhhc0V4dGVu
c2lvbihjb25zdCBTdHJpbmcmKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbWUh
CkBAIC0xMTUsNDUgKzE2OSwzMSBAQCB2b2lkIFNWR1Rlc3RzOjphZGRTdXBwb3J0ZWRBdHRyaWJ1
dGVzKEhhCiAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5hZGQoU1ZHTmFtZXM6OnN5c3RlbUxhbmd1
YWdlQXR0cik7CiB9CiAKLXZvaWQgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyhTVkdF
bGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17
Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVS
ZXF1aXJlZEZlYXR1cmVzKGNvbnRleHRFbGVtZW50KTsKLSAgICAgICAgc3luY2hyb25pemVSZXF1
aXJlZEV4dGVuc2lvbnMoY29udGV4dEVsZW1lbnQpOwotICAgICAgICBzeW5jaHJvbml6ZVN5c3Rl
bUxhbmd1YWdlKGNvbnRleHRFbGVtZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cmVxdWlyZWRGZWF0dXJlc0F0dHIpCi0gICAgICAg
IHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyhjb250ZXh0RWxlbWVudCk7Ci0gICAgZWxzZSBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJlcXVpcmVkRXh0ZW5zaW9uc0F0dHIpCi0gICAgICAg
IHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKGNvbnRleHRFbGVtZW50KTsKLSAgICBlbHNl
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3lzdGVtTGFuZ3VhZ2VBdHRyKQotICAgICAgICBz
eW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKGNvbnRleHRFbGVtZW50KTsKLX0KLQogdm9pZCBTVkdU
ZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50KQogeworICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7CiAgICAgaWYgKCFtX3JlcXVpcmVk
RmVhdHVyZXMuc2hvdWxkU3luY2hyb25pemUpCiAgICAgICAgIHJldHVybjsKICAgICBBdG9taWNT
dHJpbmcgdmFsdWUobV9yZXF1aXJlZEZlYXR1cmVzLnZhbHVlLnZhbHVlQXNTdHJpbmcoKSk7Ci0g
ICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUoY29u
dGV4dEVsZW1lbnQsIFNWR05hbWVzOjpyZXF1aXJlZEZlYXR1cmVzQXR0ciwgdmFsdWUpOworICAg
IFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5bmNocm9uaXplKGNvbnRl
eHRFbGVtZW50LCByZXF1aXJlZEZlYXR1cmVzUHJvcGVydHlJbmZvKCktPmF0dHJpYnV0ZU5hbWUs
IHZhbHVlKTsKIH0KIAogdm9pZCBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lv
bnMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiB7CisgICAgQVNTRVJUKGNvbnRleHRFbGVt
ZW50KTsKICAgICBpZiAoIW1fcmVxdWlyZWRFeHRlbnNpb25zLnNob3VsZFN5bmNocm9uaXplKQog
ICAgICAgICByZXR1cm47CiAgICAgQXRvbWljU3RyaW5nIHZhbHVlKG1fcmVxdWlyZWRFeHRlbnNp
b25zLnZhbHVlLnZhbHVlQXNTdHJpbmcoKSk7Ci0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNo
cm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUoY29udGV4dEVsZW1lbnQsIFNWR05hbWVzOjpyZXF1
aXJlZEV4dGVuc2lvbnNBdHRyLCB2YWx1ZSk7CisgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNo
cm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUoY29udGV4dEVsZW1lbnQsIHJlcXVpcmVkRXh0ZW5z
aW9uc1Byb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgU1ZH
VGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoU1ZHRWxlbWVudCogY29udGV4dEVsZW1l
bnQpCiB7CisgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKICAgICBpZiAoIW1fc3lzdGVtTGFu
Z3VhZ2Uuc2hvdWxkU3luY2hyb25pemUpCiAgICAgICAgIHJldHVybjsKICAgICBBdG9taWNTdHJp
bmcgdmFsdWUobV9zeXN0ZW1MYW5ndWFnZS52YWx1ZS52YWx1ZUFzU3RyaW5nKCkpOwotICAgIFNW
R0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5bmNocm9uaXplKGNvbnRleHRF
bGVtZW50LCBTVkdOYW1lczo6c3lzdGVtTGFuZ3VhZ2VBdHRyLCB2YWx1ZSk7CisgICAgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUoY29udGV4dEVsZW1l
bnQsIHN5c3RlbUxhbmd1YWdlUHJvcGVydHlJbmZvKCktPmF0dHJpYnV0ZU5hbWUsIHZhbHVlKTsK
IH0KIAogU1ZHU3RyaW5nTGlzdCYgU1ZHVGVzdHM6OnJlcXVpcmVkRmVhdHVyZXMoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1Rlc3RzLmgJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1Rlc3RzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZpbmUgU1ZH
VGVzdHNfaAogCiAjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5
LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oIgogI2luY2x1ZGUgIlNW
R1N0cmluZ0xpc3QuaCIKIApAQCAtNDUsMTggKzQ2LDI3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
YWRkU3VwcG9ydGVkQXR0cmlidXRlcyhIYXNoU2V0PFF1YWxpZmllZE5hbWU+Jik7CiAgICAgYm9v
bCBoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudCosIGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKLSAgICB2b2lkIHN5bmNocm9uaXplUHJvcGVydGllcyhTVkdFbGVtZW50KiwgY29u
c3QgUXVhbGlmaWVkTmFtZSYpOworCisgICAgc3RhdGljIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKTsKIAogcHJvdGVjdGVkOgogICAgIFNWR1Rlc3Rz
KCk7CiAKLXByaXZhdGU6Ci0gICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoU1ZH
RWxlbWVudCopOwotICAgIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoU1ZHRWxl
bWVudCopOwotICAgIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZShTVkdFbGVtZW50Kik7
CisgICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQpOworICAgIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoU1ZHRWxl
bWVudCogY29udGV4dEVsZW1lbnQpOworICAgIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFn
ZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7CiAKK3ByaXZhdGU6CisgICAgLy8gQ3VzdG9t
ICdyZXF1aXJlZEZlYXR1cmVzJyBwcm9wZXJ0eQorICAgIHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0
eUluZm8qIHJlcXVpcmVkRmVhdHVyZXNQcm9wZXJ0eUluZm8oKTsKICAgICBTVkdTeW5jaHJvbml6
YWJsZUFuaW1hdGVkUHJvcGVydHk8U1ZHU3RyaW5nTGlzdD4gbV9yZXF1aXJlZEZlYXR1cmVzOwor
CisgICAgLy8gQ3VzdG9tICdyZXF1aXJlZEV4dGVuc2lvbnMnIHByb3BlcnR5CisgICAgc3RhdGlj
IGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogcmVxdWlyZWRFeHRlbnNpb25zUHJvcGVydHlJbmZvKCk7
CiAgICAgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5PFNWR1N0cmluZ0xpc3Q+IG1f
cmVxdWlyZWRFeHRlbnNpb25zOworCisgICAgLy8gQ3VzdG9tICdzeXN0ZW1MYW5ndWFnZScgcHJv
cGVydHkKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBzeXN0ZW1MYW5ndWFnZVBy
b3BlcnR5SW5mbygpOwogICAgIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdT
dHJpbmdMaXN0PiBtX3N5c3RlbUxhbmd1YWdlOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNjIyKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDI1ICszNyw1OSBAQAogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklN
QVRFRF9FTlVNRVJBVElPTihTVkdUZXh0Q29udGVudEVsZW1lbnQsIFNWR05hbWVzOjpsZW5ndGhB
ZGp1c3RBdHRyLCBMZW5ndGhBZGp1c3QsIGxlbmd0aEFkanVzdCwgU1ZHTGVuZ3RoQWRqdXN0VHlw
ZSkKLURFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1RleHRDb250ZW50RWxlbWVudCwgU1ZHTmFt
ZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorIAorLy8gRGVmaW5lIGN1c3RvbSBhbmlt
YXRlZCBwcm9wZXJ0eSAndGV4dExlbmd0aCcuCitjb25zdCBTVkdQcm9wZXJ0eUluZm8qIFNWR1Rl
eHRDb250ZW50RWxlbWVudDo6dGV4dExlbmd0aFByb3BlcnR5SW5mbygpCit7CisgICAgc3RhdGlj
IGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogc19wcm9wZXJ0eUluZm8gPSAwOworICAgIGlmICghc19w
cm9wZXJ0eUluZm8pIHsKKyAgICAgICAgc19wcm9wZXJ0eUluZm8gPSBuZXcgU1ZHUHJvcGVydHlJ
bmZvKEFuaW1hdGVkTGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyLmxvY2FsTmFt
ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNWR1Rl
eHRDb250ZW50RWxlbWVudDo6c3luY2hyb25pemVUZXh0TGVuZ3RoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNWR1RleHRDb250ZW50RWxlbWVudDo6bG9v
a3VwT3JDcmVhdGVUZXh0TGVuZ3RoV3JhcHBlcik7CisgICAgfQorICAgIHJldHVybiBzX3Byb3Bl
cnR5SW5mbzsKK30KKworQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAgICBERUZJ
TkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHVGV4dENvbnRlbnRFbGVtZW50LCBTVkdOYW1lczo6
bGVuZ3RoQWRqdXN0QXR0ciwgTGVuZ3RoQWRqdXN0LCBsZW5ndGhBZGp1c3QsIFNWR0xlbmd0aEFk
anVzdFR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHVGV4dENvbnRlbnRFbGVt
ZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCitFTkRfREVGSU5FX0FO
SU1BVEVEX1BST1BFUlRJRVMKKworQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhT
VkdUZXh0Q29udGVudEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkodGV4dExlbmd0aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShsZW5n
dGhBZGp1c3QpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdTdHlsZWRFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogU1ZHVGV4
dENvbnRlbnRFbGVtZW50OjpTVkdUZXh0Q29udGVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkKLSAgICAsIG1fc3BlY2lmaWVkVGV4dExlbmd0aChMZW5ndGhNb2Rl
T3RoZXIpCiAgICAgLCBtX3RleHRMZW5ndGgoTGVuZ3RoTW9kZU90aGVyKQorICAgICwgbV9zcGVj
aWZpZWRUZXh0TGVuZ3RoKExlbmd0aE1vZGVPdGhlcikKICAgICAsIG1fbGVuZ3RoQWRqdXN0KFNW
R0xlbmd0aEFkanVzdFNwYWNpbmcpCiB7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNG
b3JTVkdUZXh0Q29udGVudEVsZW1lbnQoKTsKIH0KIAotdm9pZCBTVkdUZXh0Q29udGVudEVsZW1l
bnQ6OnN5bmNocm9uaXplVGV4dExlbmd0aCgpCit2b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6
c3luY2hyb25pemVUZXh0TGVuZ3RoKHZvaWQqIGNvbnRleHRFbGVtZW50KQogewotICAgIGlmICgh
bV90ZXh0TGVuZ3RoLnNob3VsZFN5bmNocm9uaXplKQorICAgIEFTU0VSVChjb250ZXh0RWxlbWVu
dCk7CisgICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50KiBvd25lclR5cGUgPSBzdGF0aWNfY2FzdDxT
VkdUZXh0Q29udGVudEVsZW1lbnQqPihjb250ZXh0RWxlbWVudCk7CisgICAgaWYgKCFvd25lclR5
cGUtPm1fdGV4dExlbmd0aC5zaG91bGRTeW5jaHJvbml6ZSkKICAgICAgICAgcmV0dXJuOwotICAg
IEF0b21pY1N0cmluZyB2YWx1ZShTVkdQcm9wZXJ0eVRyYWl0czxTVkdMZW5ndGg+Ojp0b1N0cmlu
ZyhtX3NwZWNpZmllZFRleHRMZW5ndGgpKTsKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hy
b25pemVyPHRydWU+OjpzeW5jaHJvbml6ZSh0aGlzLCBTVkdOYW1lczo6dGV4dExlbmd0aEF0dHIs
IHZhbHVlKTsKKyAgICBBdG9taWNTdHJpbmcgdmFsdWUoU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTGVu
Z3RoPjo6dG9TdHJpbmcob3duZXJUeXBlLT5tX3NwZWNpZmllZFRleHRMZW5ndGgpKTsKKyAgICBT
VkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPHRydWU+OjpzeW5jaHJvbml6ZShvd25lclR5
cGUsIHRleHRMZW5ndGhQcm9wZXJ0eUluZm8oKS0+YXR0cmlidXRlTmFtZSwgdmFsdWUpOworfQor
CitQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IFNWR1RleHRDb250ZW50RWxlbWVudDo6
bG9va3VwT3JDcmVhdGVUZXh0TGVuZ3RoV3JhcHBlcih2b2lkKiBjb250ZXh0RWxlbWVudCkKK3sK
KyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgIFNWR1RleHRDb250ZW50RWxlbWVudCog
b3duZXJUeXBlID0gc3RhdGljX2Nhc3Q8U1ZHVGV4dENvbnRlbnRFbGVtZW50Kj4oY29udGV4dEVs
ZW1lbnQpOworICAgIHJldHVybiBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBPckNyZWF0ZVdy
YXBwZXI8U1ZHVGV4dENvbnRlbnRFbGVtZW50LCBTVkdBbmltYXRlZExlbmd0aCwgU1ZHTGVuZ3Ro
LCB0cnVlPgorICAgICAgICAgICAob3duZXJUeXBlLCB0ZXh0TGVuZ3RoUHJvcGVydHlJbmZvKCks
IG93bmVyVHlwZS0+bV90ZXh0TGVuZ3RoLnZhbHVlKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdBbmlt
YXRlZExlbmd0aD4gU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojp0ZXh0TGVuZ3RoQW5pbWF0ZWQoKQpA
QCAtNjgsNyArMTAyLDggQEAgUGFzc1JlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gU1ZHVGV4dENv
bgogICAgIH0KIAogICAgIG1fdGV4dExlbmd0aC5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7Ci0g
ICAgcmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdB
bmltYXRlZExlbmd0aCwgU1ZHTGVuZ3RoPih0aGlzLCBTVkdOYW1lczo6dGV4dExlbmd0aEF0dHIs
IFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0ci5sb2NhbE5hbWUoKSwgbV90ZXh0TGVuZ3RoLnZhbHVl
KTsKKyAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxTVkdBbmltYXRlZExlbmd0aD4obG9v
a3VwT3JDcmVhdGVUZXh0TGVuZ3RoV3JhcHBlcih0aGlzKSk7CisKIH0KIAogdW5zaWduZWQgU1ZH
VGV4dENvbnRlbnRFbGVtZW50OjpnZXROdW1iZXJPZkNoYXJzKCkgY29uc3QKQEAgLTIzNiw0NSAr
MjcxLDYgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnBhcnNlTWFwcGVkQQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBp
ZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUxlbmd0aEFk
anVzdCgpOwotICAgICAgICBzeW5jaHJvbml6ZVRleHRMZW5ndGgoKTsKLSAgICAgICAgc3luY2hy
b25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5j
aHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAg
IFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpsZW5ndGhB
ZGp1c3RBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplTGVuZ3RoQWRqdXN0KCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRleHRMZW5n
dGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplVGV4dExlbmd0aCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25v
d25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rl
c3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3lu
Y2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCiB2b2lkIFNWR1RleHRDb250ZW50
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKIHsKICAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewpAQCAtMjk0
LDE0ICsyOTAsNiBAQCB2b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlCiAg
ICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJ
bnZhbGlkYXRpb24ocmVuZGVyZXIpOwogfQogCi12b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6
ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCkKLXsKLSAgICBTVkdTdHlsZWRFbGVt
ZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXApOwotCi0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp0ZXh0TGVuZ3RoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6bGVuZ3RoQWRqdXN0QXR0ciwgQW5pbWF0ZWRFbnVt
ZXJhdGlvbik7Ci19Ci0KIGJvb2wgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzZWxmSGFzUmVsYXRp
dmVMZW5ndGhzKCkgY29uc3QKIHsKICAgICAvLyBBbnkgZWxlbWVudCBvZiB0aGUgPHRleHQ+IHN1
YnRyZWUgaXMgYWR2ZXJ0aXplZCBhcyB1c2luZyByZWxhdGl2ZSBsZW5ndGhzLgpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAkocmV2aXNpb24gOTA2MjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTk1LDYgKzk1LDcgQEAgcHVibGljOgogICAgIC8vIGFzIGl0cyBnZXR0ZXIgbmVl
ZHMgc3BlY2lhbCBoYW5kbGluZyAocmV0dXJuIGdldENvbXB1dGVkVGV4dExlbmd0aCgpLCBpbnN0
ZWFkIG9mIG1fdGV4dExlbmd0aCkuCiAgICAgU1ZHTGVuZ3RoJiBzcGVjaWZpZWRUZXh0TGVuZ3Ro
KCkgeyByZXR1cm4gbV9zcGVjaWZpZWRUZXh0TGVuZ3RoOyB9CiAgICAgUGFzc1JlZlB0cjxTVkdB
bmltYXRlZExlbmd0aD4gdGV4dExlbmd0aEFuaW1hdGVkKCk7CisgICAgc3RhdGljIGNvbnN0IFNW
R1Byb3BlcnR5SW5mbyogdGV4dExlbmd0aFByb3BlcnR5SW5mbygpOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OwpAQCAtMTA0LDggKzEwNSw2IEBAIHByb3RlY3RlZDoKICAgICBib29sIGlzU3VwcG9ydGVkQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2b2lkIGZpbGxQYXNzZWRBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYpOwogCiAg
ICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5v
ZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291
bnREZWx0YSA9IDApOwpAQCAtMTEzLDE0ICsxMTIsMjEgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
IAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIHZvaWQgc3luY2hy
b25pemVUZXh0TGVuZ3RoKCk7Ci0gICAgU1ZHTGVuZ3RoIG1fc3BlY2lmaWVkVGV4dExlbmd0aDsK
KyAgICAvLyBDdXN0b20gJ3RleHRMZW5ndGgnIHByb3BlcnR5CisgICAgc3RhdGljIHZvaWQgc3lu
Y2hyb25pemVUZXh0TGVuZ3RoKHZvaWQqIGNvbnRleHRFbGVtZW50KTsKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29rdXBPckNyZWF0ZVRleHRMZW5ndGhXcmFw
cGVyKHZvaWQqIGNvbnRleHRFbGVtZW50KTsKICAgICBtdXRhYmxlIFNWR1N5bmNocm9uaXphYmxl
QW5pbWF0ZWRQcm9wZXJ0eTxTVkdMZW5ndGg+IG1fdGV4dExlbmd0aDsKLSAgICBERUNMQVJFX0FO
SU1BVEVEX0VOVU1FUkFUSU9OKExlbmd0aEFkanVzdCwgbGVuZ3RoQWRqdXN0LCBTVkdMZW5ndGhB
ZGp1c3RUeXBlKQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERF
Q0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKSAKKyAgICBTVkdMZW5ndGggbV9zcGVjaWZpZWRUZXh0TGVuZ3Ro
OworICAKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGV4dENvbnRl
bnRFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKExlbmd0aEFk
anVzdCwgbGVuZ3RoQWRqdXN0LCBTVkdMZW5ndGhBZGp1c3RUeXBlKQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCkgCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisg
ICAgLy8gU1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1
cmVzKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0
czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lz
dGVtTGFuZ3VhZ2UodGhpcyk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSwxMyArMzUsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9w
ZXJ0eSBkZWZpbml0aW9ucwotREVGSU5FX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFNWR1RleHRF
bGVtZW50LCBTVkdOYW1lczo6dHJhbnNmb3JtQXR0ciwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCitC
RUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9UUkFO
U0ZPUk1fTElTVChTVkdUZXh0RWxlbWVudCwgU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIsIFRyYW5z
Zm9ybSwgdHJhbnNmb3JtKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKworQkVH
SU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0RWxlbWVudCkKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh0cmFuc2Zvcm0pCisgICAgUkVHSVNURVJfUEFS
RU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCkKK0VORF9S
RUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdUZXh0RWxlbWVudDo6U1ZH
VGV4dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykK
ICAgICA6IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQodGFnTmFtZSwgZG9jKQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjp0ZXh0VGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRl
ZFByb3BlcnRpZXNGb3JTVkdUZXh0RWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR1RleHRF
bGVtZW50PiBTVkdUZXh0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTE2MCw0MSArMTY3LDYgQEAgdm9pZCBTVkdUZXh0
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQogCi12b2lkIFNWR1RleHRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplVHJhbnNmb3JtKCk7Ci0gICAgICAgIFNWR1RleHRQb3NpdGlv
bmluZ0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsK
LSAgICAgICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShh
dHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVUcmFuc2Zvcm0o
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
fQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHVGV4dEVsZW1lbnQ6OmF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0g
ICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHVGV4
dEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1RleHRQb3NpdGlvbmluZ0Vs
ZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp0cmFuc2Zvcm1BdHRyLCBBbmltYXRlZFRyYW5zZm9ybUxpc3QpOwotfQotCiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmgJ
KHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU2LDEyICs1NiwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKICAgICAgICAgICAg
IAogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlv
bnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFRyYW5zZm9ybSwgdHJhbnNm
b3JtKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0RWxlbWVu
dCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChUcmFuc2Zvcm0sIHRy
YW5zZm9ybSkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICAvLyBV
c2VkIGJ5IDxhbmltYXRlTW90aW9uPgogICAgIE93blB0cjxBZmZpbmVUcmFuc2Zvcm0+IG1fc3Vw
cGxlbWVudGFsVHJhbnNmb3JtOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRo
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRo
RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDExICszMSwyMCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1E
RUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1RleHRQYXRoRWxlbWVudCwgU1ZHTmFtZXM6OnN0YXJ0
T2Zmc2V0QXR0ciwgU3RhcnRPZmZzZXQsIHN0YXJ0T2Zmc2V0KQotREVGSU5FX0FOSU1BVEVEX0VO
VU1FUkFUSU9OKFNWR1RleHRQYXRoRWxlbWVudCwgU1ZHTmFtZXM6Om1ldGhvZEF0dHIsIE1ldGhv
ZCwgbWV0aG9kLCBTVkdUZXh0UGF0aE1ldGhvZFR5cGUpCi1ERUZJTkVfQU5JTUFURURfRU5VTUVS
QVRJT04oU1ZHVGV4dFBhdGhFbGVtZW50LCBTVkdOYW1lczo6c3BhY2luZ0F0dHIsIFNwYWNpbmcs
IHNwYWNpbmcsIFNWR1RleHRQYXRoU3BhY2luZ1R5cGUpCi1ERUZJTkVfQU5JTUFURURfU1RSSU5H
KFNWR1RleHRQYXRoRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCitC
RUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9MRU5H
VEgoU1ZHVGV4dFBhdGhFbGVtZW50LCBTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyLCBTdGFydE9m
ZnNldCwgc3RhcnRPZmZzZXQpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR1Rl
eHRQYXRoRWxlbWVudCwgU1ZHTmFtZXM6Om1ldGhvZEF0dHIsIE1ldGhvZCwgbWV0aG9kLCBTVkdU
ZXh0UGF0aE1ldGhvZFR5cGUpCisgICAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR1Rl
eHRQYXRoRWxlbWVudCwgU1ZHTmFtZXM6OnNwYWNpbmdBdHRyLCBTcGFjaW5nLCBzcGFjaW5nLCBT
VkdUZXh0UGF0aFNwYWNpbmdUeXBlKQorICAgIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHVGV4
dFBhdGhFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKK0VORF9ERUZJ
TkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR1RleHRQYXRoRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWShzdGFydE9mZnNldCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSht
ZXRob2QpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc3BhY2luZykKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShocmVmKQorICAgIFJFR0lTVEVSX1BB
UkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1RleHRDb250ZW50RWxlbWVudCkKK0VORF9SRUdJ
U1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIGlubGluZSBTVkdUZXh0UGF0aEVsZW1lbnQ6OlNW
R1RleHRQYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgOiBTVkdUZXh0Q29udGVudEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
CkBAIC00NCw2ICs1Myw3IEBAIGlubGluZSBTVkdUZXh0UGF0aEVsZW1lbnQ6OlNWR1RleHRQYXRo
RWwKICAgICAsIG1fc3BhY2luZyhTVkdUZXh0UGF0aFNwYWNpbmdFeGFjdCkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShTVkdOYW1lczo6dGV4dFBhdGhUYWcpKTsKKyAgICByZWdpc3RlckFuaW1h
dGVkUHJvcGVydGllc0ZvclNWR1RleHRQYXRoRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNW
R1RleHRQYXRoRWxlbWVudD4gU1ZHVGV4dFBhdGhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTEyLDYyICsxMjIsNiBA
QCB2b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhCiAgICAgICAgIFJlbmRl
clNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24o
b2JqZWN0KTsKIH0KIAotdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09
IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVTdGFydE9mZnNldCgpOwotICAgICAg
ICBzeW5jaHJvbml6ZU1ldGhvZCgpOwotICAgICAgICBzeW5jaHJvbml6ZVNwYWNpbmcoKTsKLSAg
ICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIFNWR1RleHRDb250ZW50RWxlbWVudDo6
c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdU
ZXh0Q29udGVudEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpzdGFydE9m
ZnNldEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVTdGFydE9mZnNldCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIAotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6bWV0aG9k
QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZU1ldGhvZCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIAotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3BhY2luZ0F0dHIpIHsK
LSAgICAgICAgc3luY2hyb25pemVTcGFjaW5nKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgCi0gICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIFNWR1RleHRQYXRoRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKLQotICAgIFNWR1RleHRDb250ZW50RWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0ciwgQW5p
bWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6bWV0aG9kQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpzcGFjaW5nQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlv
bik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZB
dHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0KIFJlbmRlck9iamVjdCogU1ZHVGV4dFBhdGhFbGVt
ZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsK
ICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHVGV4dFBhdGgodGhpcyk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCShyZXZpc2lvbiA5MDYyMikKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksNDggKzM5LDYgQEAgZW51bSBTVkdUZXh0UGF0aFNwYWNpbmdUeXBlIHsKICAgICBTVkdU
ZXh0UGF0aFNwYWNpbmdFeGFjdAogfTsKIAotY2xhc3MgU1ZHVGV4dFBhdGhFbGVtZW50IDogcHVi
bGljIFNWR1RleHRDb250ZW50RWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBTVkdVUklSZWZlcmVuY2UgewotcHVibGljOgotICAgIC8vIEZvcndhcmQgZGVjbGFyZSBl
bnVtZXJhdGlvbnMgaW4gdGhlIFczQyBuYW1pbmcgc2NoZW1lLCBmb3IgSURMIGdlbmVyYXRpb24u
Ci0gICAgZW51bSB7Ci0gICAgICAgIFRFWFRQQVRIX01FVEhPRFRZUEVfVU5LTk9XTiA9IFNWR1Rl
eHRQYXRoTWV0aG9kVW5rbm93biwKLSAgICAgICAgVEVYVFBBVEhfTUVUSE9EVFlQRV9BTElHTiA9
IFNWR1RleHRQYXRoTWV0aG9kQWxpZ24sCi0gICAgICAgIFRFWFRQQVRIX01FVEhPRFRZUEVfU1RS
RVRDSCA9IFNWR1RleHRQYXRoTWV0aG9kU3RyZXRjaCwKLSAgICAgICAgVEVYVFBBVEhfU1BBQ0lO
R1RZUEVfVU5LTk9XTiA9IFNWR1RleHRQYXRoU3BhY2luZ1Vua25vd24sCi0gICAgICAgIFRFWFRQ
QVRIX1NQQUNJTkdUWVBFX0FVVE8gPSBTVkdUZXh0UGF0aFNwYWNpbmdBdXRvLAotICAgICAgICBU
RVhUUEFUSF9TUEFDSU5HVFlQRV9FWEFDVCA9IFNWR1RleHRQYXRoU3BhY2luZ0V4YWN0Ci0gICAg
fTsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1RleHRQYXRoRWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotIAotcHJpdmF0ZToKLSAgICBTVkdUZXh0
UGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKLQotICAgIGJvb2wgaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9u
aXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUq
KTsKLSAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29u
c3Q7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmlu
Z0NvbnRleHQmKTsKLQotICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkg
Y29uc3Q7Ci0KLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNM
QVJFX0FOSU1BVEVEX0xFTkdUSChTdGFydE9mZnNldCwgc3RhcnRPZmZzZXQpCi0gICAgREVDTEFS
RV9BTklNQVRFRF9FTlVNRVJBVElPTihNZXRob2QsIG1ldGhvZCwgU1ZHVGV4dFBhdGhNZXRob2RU
eXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oU3BhY2luZywgc3BhY2luZywg
U1ZHVGV4dFBhdGhTcGFjaW5nVHlwZSkKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERF
Q0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCi19OwotCiB0ZW1wbGF0ZTw+CiBzdHJ1
Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVGV4dFBhdGhNZXRob2RUeXBlPiB7CiAgICAgc3RhdGlj
IFNWR1RleHRQYXRoTWV0aG9kVHlwZSBoaWdoZXN0RW51bVZhbHVlKCkgeyByZXR1cm4gU1ZHVGV4
dFBhdGhNZXRob2RTdHJldGNoOyB9CkBAIC0xMzksNiArOTcsNDQgQEAgc3RydWN0IFNWR1Byb3Bl
cnR5VHJhaXRzPFNWR1RleHRQYXRoU3BhYwogICAgIH0KIH07CiAKK2NsYXNzIFNWR1RleHRQYXRo
RWxlbWVudCA6IHB1YmxpYyBTVkdUZXh0Q29udGVudEVsZW1lbnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlIHsKK3B1YmxpYzoKKyAgICAvLyBGb3J3
YXJkIGRlY2xhcmUgZW51bWVyYXRpb25zIGluIHRoZSBXM0MgbmFtaW5nIHNjaGVtZSwgZm9yIElE
TCBnZW5lcmF0aW9uLgorICAgIGVudW0geworICAgICAgICBURVhUUEFUSF9NRVRIT0RUWVBFX1VO
S05PV04gPSBTVkdUZXh0UGF0aE1ldGhvZFVua25vd24sCisgICAgICAgIFRFWFRQQVRIX01FVEhP
RFRZUEVfQUxJR04gPSBTVkdUZXh0UGF0aE1ldGhvZEFsaWduLAorICAgICAgICBURVhUUEFUSF9N
RVRIT0RUWVBFX1NUUkVUQ0ggPSBTVkdUZXh0UGF0aE1ldGhvZFN0cmV0Y2gsCisgICAgICAgIFRF
WFRQQVRIX1NQQUNJTkdUWVBFX1VOS05PV04gPSBTVkdUZXh0UGF0aFNwYWNpbmdVbmtub3duLAor
ICAgICAgICBURVhUUEFUSF9TUEFDSU5HVFlQRV9BVVRPID0gU1ZHVGV4dFBhdGhTcGFjaW5nQXV0
bywKKyAgICAgICAgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfRVhBQ1QgPSBTVkdUZXh0UGF0aFNwYWNp
bmdFeGFjdAorICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdUZXh0UGF0aEVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAKK3ByaXZhdGU6
CisgICAgU1ZHVGV4dFBhdGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OworCisgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CisKKyAgICBib29s
IGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CisgICAgdmlydHVhbCB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworCisgICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUq
KTsKKyAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmlu
Z0NvbnRleHQmKTsKKworICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkg
Y29uc3Q7CisgCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1RleHRQ
YXRoRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoU3RhcnRPZmZzZXQs
IHN0YXJ0T2Zmc2V0KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKE1ldGhv
ZCwgbWV0aG9kLCBTVkdUZXh0UGF0aE1ldGhvZFR5cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfRU5VTUVSQVRJT04oU3BhY2luZywgc3BhY2luZywgU1ZHVGV4dFBhdGhTcGFjaW5nVHlwZSkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKKyAgICBFTkRfREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDE2ICszMywyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVk
IHByb3BlcnR5IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfTEVOR1RIX0xJU1QoU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQotREVGSU5FX0FOSU1B
VEVEX0xFTkdUSF9MSVNUKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR05hbWVzOjp5QXR0
ciwgWSwgeSkKLURFRklORV9BTklNQVRFRF9MRU5HVEhfTElTVChTVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50LCBTVkdOYW1lczo6ZHhBdHRyLCBEeCwgZHgpCi1ERUZJTkVfQU5JTUFURURfTEVOR1RI
X0xJU1QoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTmFtZXM6OmR5QXR0ciwgRHksIGR5
KQotREVGSU5FX0FOSU1BVEVEX05VTUJFUl9MSVNUKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQs
IFNWR05hbWVzOjpyb3RhdGVBdHRyLCBSb3RhdGUsIHJvdGF0ZSkKK0JFR0lOX0RFRklORV9BTklN
QVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSF9MSVNUKFNWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKKyAgICBERUZJTkVfQU5J
TUFURURfTEVOR1RIX0xJU1QoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTmFtZXM6OnlB
dHRyLCBZLCB5KQorICAgIERFRklORV9BTklNQVRFRF9MRU5HVEhfTElTVChTVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50LCBTVkdOYW1lczo6ZHhBdHRyLCBEeCwgZHgpCisgICAgREVGSU5FX0FOSU1B
VEVEX0xFTkdUSF9MSVNUKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR05hbWVzOjpkeUF0
dHIsIER5LCBkeSkKKyAgICBERUZJTkVfQU5JTUFURURfTlVNQkVSX0xJU1QoU1ZHVGV4dFBvc2l0
aW9uaW5nRWxlbWVudCwgU1ZHTmFtZXM6OnJvdGF0ZUF0dHIsIFJvdGF0ZSwgcm90YXRlKQorRU5E
X0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWSh4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZ
KHkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZHgpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZHkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkocm90YXRlKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR1RleHRDb250ZW50RWxlbWVudCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJU
SUVTCiAKIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAg
IDogU1ZHVGV4dENvbnRlbnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogeworICAgIHJlZ2lz
dGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCgpOwogfQog
CiBib29sIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpAQCAtMTM5LDYyICsxNTAsNiBAQCB2b2lkIFNW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN2Z0F0dHJpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKLXZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6c3luY2hyb25pemVQcm9w
ZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUg
PT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgc3luY2hy
b25pemVZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplRHgoKTsKLSAgICAgICAgc3luY2hyb25pemVE
eSgpOwotICAgICAgICBzeW5jaHJvbml6ZVJvdGF0ZSgpOwotICAgICAgICBTVkdUZXh0Q29udGVu
dEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAg
ICAgICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1l
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6eEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplWSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpkeEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVEeCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkeUF0dHIp
IHsKLSAgICAgICAgc3luY2hyb25pemVEeSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpyb3RhdGVBdHRyKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplUm90YXRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLX0KLQotdm9pZCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpmaWxsUGFz
c2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKQotewotICAgIFNWR1RleHRDb250ZW50RWxlbWVu
dDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKTsKLQotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoTGlzdCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGhMaXN0KTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmR4QXR0ciwgQW5pbWF0ZWRMZW5n
dGhMaXN0KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmR5
QXR0ciwgQW5pbWF0ZWRMZW5ndGhMaXN0KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OnJvdGF0ZUF0dHIsIEFuaW1hdGVkTnVtYmVyTGlzdCk7Ci19Ci0KIFNW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQqIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmVsZW1l
bnRGcm9tUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKICAgICBpZiAoIXJlbmRl
cmVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudC5oCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9z
aXRpb25pbmdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE1ICszOCwxNCBAQCBwcm90
ZWN0ZWQ6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwog
ICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdm9pZCBmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRl
Y2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIX0xJU1QoWCwgeCkKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX0xFTkdUSF9MSVNUKFksIHkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEhfTElTVChEeCwgZHgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEhfTElTVChEeSwg
ZHkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVJfTElTVChSb3RhdGUsIHJvdGF0ZSkKKyAg
ICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEhfTElTVChYLCB4KQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSF9MSVNUKFksIHkpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfTEVOR1RIX0xJU1QoRHgsIGR4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdU
SF9MSVNUKER5LCBkeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVJfTElTVChSb3Rh
dGUsIHJvdGF0ZSkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVt
ZW50LmNwcAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTggKzYwLDYgQEAgdm9pZCBTVkdUaXRs
ZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChibwogICAgICAgICBkb2N1bWVudCgpLT5zZXRUaXRs
ZUVsZW1lbnQoU3RyaW5nV2l0aERpcmVjdGlvbih0ZXh0Q29udGVudCgpLCBMVFIpLCB0aGlzKTsK
IH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1RpdGxlRWxlbWVudDo6YXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsK
LSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKIH0KIAotdm9pZCBTVkdU
aXRsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17ICAgICAgICAK
LSAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKSk7Ci19Ci0KLX0KLQotLy8gdmltOnRzPTQ6
bm9ldAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGl0bGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxl
RWxlbWVudC5oCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRs
ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsOSArNDAsNiBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxz
ZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hp
bGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChj
b25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNl
RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMyArNTUsMjUgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0vLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwotREVGSU5F
X0FOSU1BVEVEX0xFTkdUSChTVkdVc2VFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCi1E
RUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1VzZUVsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgWSwg
eSkKLURFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6OndpZHRo
QXR0ciwgV2lkdGgsIHdpZHRoKQotREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdVc2VFbGVtZW50
LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQpCi1ERUZJTkVfQU5JTUFURURf
U1RSSU5HKFNWR1VzZUVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQot
REVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKQorQkVHSU5fREVGSU5FX0FOSU1BVEVEX1BST1BFUlRJRVMKKyAg
ICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1VzZUVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwg
WCwgeCkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1VzZUVsZW1lbnQsIFNWR05hbWVz
Ojp5QXR0ciwgWSwgeSkKKyAgICBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1VzZUVsZW1lbnQs
IFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKKyAgICBERUZJTkVfQU5JTUFURURf
TEVOR1RIKFNWR1VzZUVsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdo
dCkKKyAgICBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR1VzZUVsZW1lbnQsIFhMaW5rTmFtZXM6
OmhyZWZBdHRyLCBIcmVmLCBocmVmKQorICAgIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1Vz
ZUVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9ERUZJ
TkVfQU5JTUFURURfUFJPUEVSVElFUworCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR1VzZUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
eCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5KQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHdpZHRoKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1B
VEVEX1BST1BFUlRZKGhlaWdodCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShocmVmKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElF
UwogCiBpbmxpbmUgU1ZHVXNlRWxlbWVudDo6U1ZHVXNlRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTczLDYgKzg1LDcgQEAgaW5saW5l
IFNWR1VzZUVsZW1lbnQ6OlNWR1VzZUVsZW1lbnQoY29ucwogICAgICwgbV9uZWVkc1NoYWRvd1Ry
ZWVSZWNyZWF0aW9uKGZhbHNlKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjp1
c2VUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1VzZUVsZW1lbnQo
KTsKIH0KIAogUGFzc1JlZlB0cjxTVkdVc2VFbGVtZW50PiBTVkdVc2VFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMjQz
LDgxICsyNTYsNiBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHVXNlRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAo
YXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAg
ICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAg
c3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICBTVkdUZXN0
czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNo
cm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVgo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6eUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgewotICAgICAg
ICBzeW5jaHJvbml6ZVdpZHRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVI
ZWlnaHQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBz
eW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAg
ICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1B
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHVXNlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1
cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdVc2VFbGVtZW50
OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OnhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBB
bmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5r
TmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0KIHN0YXRpYyB2b2lkIHVwZGF0
ZUNvbnRhaW5lclNpemUoU1ZHRWxlbWVudEluc3RhbmNlKiB0YXJnZXRJbnN0YW5jZSkKIHsKICAg
ICAvLyBEZXB0aC1maXJzdCB1c2VkIHRvIHdyaXRlIHRoZSBtZXRob2QgaW4gZWFybHkgZXhpdCBz
dHlsZSwgbm8gcGFydGljdWxhciBvdGhlciByZWFzb24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVXNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdV
c2VFbGVtZW50LmgJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsOSArNjMsNiBAQCBwcml2YXRlOgogICAg
IGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAg
IHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0
dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlID0gTm9DaGFu
Z2UpOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSosIFJlbmRlclN0eWxlKik7CkBAIC0xMDYsMTcgKzEwMywxOSBAQCBwcml2YXRlOgogICAgIHZv
aWQgdXBkYXRlQ29udGFpbmVyT2Zmc2V0cygpOwogICAgIHZvaWQgdXBkYXRlQ29udGFpbmVyU2l6
ZXMoKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xB
UkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwg
eSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwgd2lkdGgpCi0gICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCi0KLSAgICAvLyBTVkdVUklSZWZlcmVu
Y2UKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQotCi0gICAgLy8gU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAg
IEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdVc2VFbGVtZW50KQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X0xFTkdUSChZLCB5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwgd2lk
dGgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAg
ICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVy
ZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3Rz
OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0
ZW1MYW5ndWFnZSh0aGlzKTsgfQogCiAgICAgYm9vbCBtX3VwZGF0ZXNCbG9ja2VkOwogICAgIGJv
b2wgbV9uZWVkc1NoYWRvd1RyZWVSZWNyZWF0aW9uOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1ZpZXdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Vmlld0VsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdWaWV3RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE2ICszMSwyNSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCi1E
RUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdWaWV3RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKQotREVGSU5FX0FOSU1BVEVEX1JFQ1QoU1ZHVmlld0VsZW1lbnQs
IFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgVmlld0JveCwgdmlld0JveCkKLURFRklORV9BTklNQVRF
RF9QUkVTRVJWRUFTUEVDVFJBVElPKFNWR1ZpZXdFbGVtZW50LCBTVkdOYW1lczo6cHJlc2VydmVB
c3BlY3RSYXRpb0F0dHIsIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8p
CitCRUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworICAgIERFRklORV9BTklNQVRFRF9C
T09MRUFOKFNWR1ZpZXdFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCisgICAgREVGSU5FX0FOSU1BVEVEX1JFQ1QoU1ZHVmlld0VsZW1lbnQsIFNWR05hbWVzOjp2
aWV3Qm94QXR0ciwgVmlld0JveCwgdmlld0JveCkKKyAgICBERUZJTkVfQU5JTUFURURfUFJFU0VS
VkVBU1BFQ1RSQVRJTyhTVkdWaWV3RWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0
aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorRU5EX0RF
RklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHVmlld0VsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWSh2aWV3Qm94KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZ
KHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHU3R5bGVkRWxlbWVudCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVT
CiAKIGlubGluZSBTVkdWaWV3RWxlbWVudDo6U1ZHVmlld0VsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fdmlld1RhcmdldChTVkdOYW1lczo6dmlld1Rh
cmdldEF0dHIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnZpZXdUYWcpKTsK
KyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1ZpZXdFbGVtZW50KCk7CiB9CiAK
IFBhc3NSZWZQdHI8U1ZHVmlld0VsZW1lbnQ+IFNWR1ZpZXdFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtODIsNTEgKzkx
LDYgQEAgdm9pZCBTVkdWaWV3RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dAogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR1ZpZXdFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFt
ZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCgpOwotICAgICAgICBTVkdGaXRUb1ZpZXdCb3g6OnN5bmNocm9uaXplUHJvcGVydGll
cyhhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVy
dHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBv
cnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnZpZXdUYXJnZXRBdHRyKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRml0VG9WaWV3
Qm94Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaXRUb1ZpZXdC
b3g6OnN5bmNocm9uaXplUHJvcGVydGllcyhhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIFNWR1ZpZXdFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19h
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR1ZpZXdFbGVtZW50OjpmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dmlld0JveEF0dHIsIEFuaW1hdGVkUmVjdCk7
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwcmVzZXJ2ZUFz
cGVjdFJhdGlvQXR0ciwgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKLX0KLQogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5o
CShyZXZpc2lvbiA5MDYyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OCwyMCArNDgsMTQgQEAgcHJpdmF0ZToKICAgICAvLyBGSVhN
RTogc3ZnQXR0cmlidXRlQ2hhbmdlZCBtaXNzaW5nLgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9w
ZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wg
cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIHsgcmV0dXJuIGZh
bHNlOyB9CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLQotICAgIC8v
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xF
QU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkK
LSAKLSAgICAvLyBTVkdGaXRUb1ZpZXdCb3gKLSAgICBERUNMQVJFX0FOSU1BVEVEX1JFQ1QoVmll
d0JveCwgdmlld0JveCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8o
UHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICBCRUdJTl9ERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVmlld0VsZW1lbnQpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1JFQ1QoVmlld0JveCwgdmll
d0JveCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNl
cnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgRU5EX0RFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVElFUwogCiAgICAgU1ZHU3RyaW5nTGlzdCBtX3ZpZXdUYXJnZXQ7CiB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwCShyZXZpc2lvbiA5MDYyMikKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEz
ICszMCwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5
IGRlZmluaXRpb25zCi1ERUZJTkVfQU5JTUFURURfUkVDVChTVkdWaWV3U3BlYywgU1ZHTmFtZXM6
OnZpZXdCb3hBdHRyLCBWaWV3Qm94LCB2aWV3Qm94KQotREVGSU5FX0FOSU1BVEVEX1BSRVNFUlZF
QVNQRUNUUkFUSU8oU1ZHVmlld1NwZWMsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0
ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKK0JFR0lOX0RFRklO
RV9BTklNQVRFRF9QUk9QRVJUSUVTCisgICAgREVGSU5FX0FOSU1BVEVEX1JFQ1QoU1ZHVmlld1Nw
ZWMsIFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgVmlld0JveCwgdmlld0JveCkKKyAgICBERUZJTkVf
QU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhTVkdWaWV3U3BlYywgU1ZHTmFtZXM6OnByZXNl
cnZlQXNwZWN0UmF0aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJh
dGlvKQorRU5EX0RFRklORV9BTklNQVRFRF9QUk9QRVJUSUVTCisKK0JFR0lOX1JFR0lTVEVSX0FO
SU1BVEVEX1BST1BFUlRJRVMoU1ZHVmlld1NwZWMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkodmlld0JveCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMK
IAogU1ZHVmlld1NwZWM6OlNWR1ZpZXdTcGVjKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQog
ICAgIDogbV9jb250ZXh0RWxlbWVudChjb250ZXh0RWxlbWVudCkKIHsKKyAgICBBU1NFUlQobV9j
b250ZXh0RWxlbWVudCk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdWaWV3
U3BlYygpOwogfQogCiB2b2lkIFNWR1ZpZXdTcGVjOjpzZXRUcmFuc2Zvcm0oY29uc3QgU3RyaW5n
JiB0cmFuc2Zvcm0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuaAkocmV2aXNpb24gOTA2
MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuaAkod29ya2luZyBjb3B5KQpA
QCAtNTUsMTEgKzU1LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHRWxlbWVudCogbV9j
b250ZXh0RWxlbWVudDsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwot
Ci0gICAgLy8gU1ZHRml0VG9WaWV3Qm94Ci0gICAgREVDTEFSRV9BTklNQVRFRF9SRUNUKFZpZXdC
b3gsIHZpZXdCb3gpCi0gICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFBy
ZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgQkVHSU5fREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1ZpZXdTcGVjKQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX1JFQ1QoVmlld0JveCwgdmlld0JveCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUkVT
RVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8p
CisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogCiAgICAgU1ZHVHJhbnNmb3Jt
TGlzdCBtX3RyYW5zZm9ybTsKICAgICBTdHJpbmcgbV92aWV3VGFyZ2V0U3RyaW5nOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHkuaAkocmV2aXNpb24gOTA2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZFByb3BlcnR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDE1ICsyMSwxNCBAQAog
I2RlZmluZSBTVkdBbmltYXRlZFByb3BlcnR5X2gKIAogI2lmIEVOQUJMRShTVkcpCi0jaW5jbHVk
ZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlw
dGlvbi5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdQcm9wZXJ0eUlu
Zm8uaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFNWR0VsZW1lbnQ7Ci1jbGFzcyBTVkdQcm9wZXJ0eTsKIAogY2xhc3MgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eSA6IHB1YmxpYyBSZWZDb3VudGVkPFNWR0FuaW1hdGVkUHJvcGVydHk+IHsK
IHB1YmxpYzoKQEAgLTQ0LDYgKzQzLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwg
Ym9vbCBpc0FuaW1hdGVkTGlzdFRlYXJPZmYoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltVmFsKHZvaWQqKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiAKICAgICAvLyBDYWNoaW5nIGZhY2lsaXRpZXMuCiAgICAgdHlwZWRlZiBIYXNoTWFwPFNW
R0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbiwgUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+
LCBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb25IYXNoLCBTVkdBbmltYXRlZFByb3BlcnR5
RGVzY3JpcHRpb25IYXNoVHJhaXRzPiBDYWNoZTsKQEAgLTYxLDIzICs2MSw0NCBAQCBwdWJsaWM6
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUZWFyT2ZmVHlwZSwg
dHlwZW5hbWUgUHJvcGVydHlUeXBlLCBib29sIGlzRGVyaXZlZEZyb21TVkdFbGVtZW50PgorICAg
IHN0cnVjdCBIZWxwZXI7CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUZWFyT2ZmVHlwZSwgdHlw
ZW5hbWUgUHJvcGVydHlUeXBlPgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRlYXJPZmZUeXBlPiBs
b29rdXBPckNyZWF0ZVdyYXBwZXIoU1ZHRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVJZGVudGlm
aWVyLCBQcm9wZXJ0eVR5cGUmIHByb3BlcnR5KQotICAgIHsKLSAgICAgICAgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eURlc2NyaXB0aW9uIGtleShlbGVtZW50LCBhdHRyaWJ1dGVJZGVudGlmaWVyKTsKLSAg
ICAgICAgUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IHdyYXBwZXIgPSBhbmltYXRlZFByb3Bl
cnR5Q2FjaGUoKS0+Z2V0KGtleSk7Ci0gICAgICAgIGlmICghd3JhcHBlcikgewotICAgICAgICAg
ICAgd3JhcHBlciA9IFRlYXJPZmZUeXBlOjpjcmVhdGUoZWxlbWVudCwgYXR0cmlidXRlTmFtZSwg
cHJvcGVydHkpOwotICAgICAgICAgICAgYW5pbWF0ZWRQcm9wZXJ0eUNhY2hlKCktPnNldChrZXks
IHdyYXBwZXIpOworICAgIHN0cnVjdCBIZWxwZXI8VGVhck9mZlR5cGUsIFByb3BlcnR5VHlwZSwg
ZmFsc2U+IHsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGVhck9mZlR5cGU+IGxvb2t1cE9y
Q3JlYXRlV3JhcHBlcih2b2lkKiwgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiwgUHJvcGVydHlUeXBl
JikKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICByZXR1cm4gUGFzc1JlZlB0cjxUZWFyT2ZmVHlwZT4oKTsKICAgICAgICAgfQorICAgIH07
CiAKLSAgICAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8VGVhck9mZlR5cGU+KHdyYXBw
ZXIpLnJlbGVhc2UoKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUZWFyT2ZmVHlwZSwgdHlwZW5h
bWUgUHJvcGVydHlUeXBlPgorICAgIHN0cnVjdCBIZWxwZXI8VGVhck9mZlR5cGUsIFByb3BlcnR5
VHlwZSwgdHJ1ZT4geworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZWFyT2ZmVHlwZT4gbG9v
a3VwT3JDcmVhdGVXcmFwcGVyKFNWR0VsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFNWR1Byb3BlcnR5
SW5mbyogaW5mbywgUHJvcGVydHlUeXBlJiBwcm9wZXJ0eSkKKyAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUKGluZm8pOworICAgICAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0
aW9uIGtleShlbGVtZW50LCBpbmZvLT5wcm9wZXJ0eUlkZW50aWZpZXIpOworICAgICAgICAgICAg
UmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IHdyYXBwZXIgPSBhbmltYXRlZFByb3BlcnR5Q2Fj
aGUoKS0+Z2V0KGtleSk7CisgICAgICAgICAgICBpZiAoIXdyYXBwZXIpIHsKKyAgICAgICAgICAg
ICAgICB3cmFwcGVyID0gVGVhck9mZlR5cGU6OmNyZWF0ZShlbGVtZW50LCBpbmZvLT5hdHRyaWJ1
dGVOYW1lLCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgYW5pbWF0ZWRQcm9wZXJ0eUNhY2hl
KCktPnNldChrZXksIHdyYXBwZXIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19wb2ludGVyX2Nhc3Q8VGVhck9mZlR5cGU+KHdyYXBwZXIpLnJlbGVhc2UoKTsKKyAg
ICAgICAgfQorICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGUsIHR5cGVu
YW1lIFRlYXJPZmZUeXBlLCB0eXBlbmFtZSBQcm9wZXJ0eVR5cGUsIGJvb2wgaXNEZXJpdmVkRnJv
bVNWR0VsZW1lbnQ+CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGVhck9mZlR5cGU+IGxvb2t1cE9y
Q3JlYXRlV3JhcHBlcihPd25lclR5cGUqIGVsZW1lbnQsIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyog
aW5mbywgUHJvcGVydHlUeXBlJiBwcm9wZXJ0eSkKKyAgICB7CisgICAgICAgIHJldHVybiBIZWxw
ZXI8VGVhck9mZlR5cGUsIFByb3BlcnR5VHlwZSwgaXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ+Ojps
b29rdXBPckNyZWF0ZVdyYXBwZXIoZWxlbWVudCwgaW5mbywgcHJvcGVydHkpOwogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRlYXJPZmZUeXBlPgotICAgIHN0YXRpYyBUZWFyT2ZmVHlw
ZSogbG9va3VwV3JhcHBlcihTVkdFbGVtZW50KiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcm
IGF0dHJpYnV0ZUlkZW50aWZpZXIpCisgICAgc3RhdGljIFRlYXJPZmZUeXBlKiBsb29rdXBXcmFw
cGVyKFNWR0VsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogaW5mbykKICAg
ICB7Ci0gICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbiBrZXkoZWxlbWVudCwg
YXR0cmlidXRlSWRlbnRpZmllcik7CisgICAgICAgIEFTU0VSVChpbmZvKTsKKyAgICAgICAgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uIGtleShlbGVtZW50LCBpbmZvLT5wcm9wZXJ0eUlk
ZW50aWZpZXIpOwogICAgICAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxUZWFyT2ZmVHlw
ZT4oYW5pbWF0ZWRQcm9wZXJ0eUNhY2hlKCktPmdldChrZXkpKS5nZXQoKTsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlNYWNy
b3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5TWFjcm9zLmgJKHJldmlzaW9uIDkwNjIyKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLTIw
MTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDcgKzIz
LDcgQEAKICNkZWZpbmUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvc19oCiAKICNpZiBFTkFCTEUo
U1ZHKQotI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaCIKKyNpbmNs
dWRlICJTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlU
cmFpdHMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTQsMTQgKzU0LDI0IEBAIHN0cnVj
dCBHZXRPd25lckVsZW1lbnRGb3JUeXBlPE93bmVyVHlwZSwKIHRlbXBsYXRlPHR5cGVuYW1lIE93
bmVyVHlwZT4KIHN0cnVjdCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudCB7CiAgICAgc3RhdGljIGNv
bnN0IGJvb2wgdmFsdWUgPSB0cnVlOworICAgIHR5cGVkZWYgT3duZXJUeXBlIEZvcndhcmRlZE93
bmVyVHlwZTsKIH07CiAKIGNsYXNzIFNWR1ZpZXdTcGVjOwogdGVtcGxhdGU8Pgogc3RydWN0IElz
RGVyaXZlZEZyb21TVkdFbGVtZW50PFNWR1ZpZXdTcGVjPiB7CiAgICAgc3RhdGljIGNvbnN0IGJv
b2wgdmFsdWUgPSBmYWxzZTsKKyAgICB0eXBlZGVmIFNWR0VsZW1lbnQgRm9yd2FyZGVkT3duZXJU
eXBlOwogfTsKIAorY2xhc3MgU1ZHVGVzdHM7Cit0ZW1wbGF0ZTw+CitzdHJ1Y3QgSXNEZXJpdmVk
RnJvbVNWR0VsZW1lbnQ8U1ZHVGVzdHM+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9
IGZhbHNlOworICAgIHR5cGVkZWYgU1ZHRWxlbWVudCBGb3J3YXJkZWRPd25lclR5cGU7Cit9Owor
CisKIC8vIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eSBpbXBsZW1lbnRhdGlvbgog
dGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPgogc3RydWN0IFNWR1N5bmNocm9uaXphYmxl
QW5pbWF0ZWRQcm9wZXJ0eSB7CkBAIC04OSw2MCArOTksMTE2IEBAIHN0cnVjdCBTVkdTeW5jaHJv
bml6YWJsZUFuaW1hdGVkUHJvcGVydHkKICAgICBib29sIHNob3VsZFN5bmNocm9uaXplIDogMTsK
IH07CiAKLSNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0
cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBUZWFyT2ZmVHlwZSwgUHJvcGVydHlU
eXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCi12b2lkIE93bmVyVHlwZTo6c3lu
Y2hyb25pemUjI1VwcGVyUHJvcGVydHkoKSBcCisvLyBQcm9wZXJ0eSByZWdpc3RyYXRpb24gaGVs
cGVycworI2RlZmluZSBCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKE93bmVyVHlw
ZSkgXAorU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgT3duZXJUeXBlOjphdHRyaWJ1dGVUb1By
b3BlcnR5TWFwKCkgXAogeyBcCi0gICAgaWYgKCFtXyMjTG93ZXJQcm9wZXJ0eS5zaG91bGRTeW5j
aHJvbml6ZSkgXAotICAgICAgICAgcmV0dXJuOyBcCi0gICAgQXRvbWljU3RyaW5nIHZhbHVlKFNW
R1Byb3BlcnR5VHJhaXRzPFByb3BlcnR5VHlwZT46OnRvU3RyaW5nKExvd2VyUHJvcGVydHkjI0Jh
c2VWYWx1ZSgpKSk7IFwKLSAgICBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCA9IEdldE93bmVy
RWxlbWVudEZvclR5cGU8T3duZXJUeXBlLCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5
cGU+Ojp2YWx1ZT46Om93bmVyRWxlbWVudCh0aGlzKTsgXAotICAgIFNWR0FuaW1hdGVkUHJvcGVy
dHlTeW5jaHJvbml6ZXI8SXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8T3duZXJUeXBlPjo6dmFsdWU+
OjpzeW5jaHJvbml6ZShjb250ZXh0RWxlbWVudCwgRE9NQXR0cmlidXRlLCB2YWx1ZSk7IFwKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAsIHNfYXR0cmli
dXRlVG9Qcm9wZXJ0eU1hcCwgKCkpOyBcCisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0
eU1hcDsgXAogfSBcCiBcCi1QYXNzUmVmUHRyPFRlYXJPZmZUeXBlPiBPd25lclR5cGU6Okxvd2Vy
UHJvcGVydHkjI0FuaW1hdGVkKCkgXAorc3RhdGljIHZvaWQgcmVnaXN0ZXJBbmltYXRlZFByb3Bl
cnRpZXNGb3IjI093bmVyVHlwZSgpIFwKIHsgXAotICAgIG1fIyNMb3dlclByb3BlcnR5LnNob3Vs
ZFN5bmNocm9uaXplID0gdHJ1ZTsgXAotICAgIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50ID0g
R2V0T3duZXJFbGVtZW50Rm9yVHlwZTxPd25lclR5cGUsIElzRGVyaXZlZEZyb21TVkdFbGVtZW50
PE93bmVyVHlwZT46OnZhbHVlPjo6b3duZXJFbGVtZW50KHRoaXMpOyBcCi0gICAgcmV0dXJuIFNW
R0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxUZWFyT2ZmVHlwZSwgUHJv
cGVydHlUeXBlPihjb250ZXh0RWxlbWVudCwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJ
ZGVudGlmaWVyLCBtXyMjTG93ZXJQcm9wZXJ0eS52YWx1ZSk7IFwKLX0KKyAgICBTVkdBdHRyaWJ1
dGVUb1Byb3BlcnR5TWFwJiBtYXAgPSBPd25lclR5cGU6OmF0dHJpYnV0ZVRvUHJvcGVydHlNYXAo
KTsgXAorICAgIGlmICghbWFwLmlzRW1wdHkoKSkgXAorICAgICAgICByZXR1cm47IFwKKyAgICB0
eXBlZGVmIE93bmVyVHlwZSBVc2VPd25lclR5cGU7CisKKyNkZWZpbmUgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoTG93ZXJQcm9wZXJ0eSkgXAorICAgICBtYXAuYWRkUHJvcGVydHko
VXNlT3duZXJUeXBlOjpMb3dlclByb3BlcnR5IyNQcm9wZXJ0eUluZm8oKSk7CisKKyNkZWZpbmUg
UkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoQ2xhc3NOYW1lKSBcCisgICAgIG1h
cC5hZGRQcm9wZXJ0aWVzKENsYXNzTmFtZTo6YXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpKTsgXAor
CisjZGVmaW5lIEVORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTIH0KKworLy8gUHJvcGVy
dHkgZGVmaW5pdGlvbiBoZWxwZXJzICh1c2VkIGluIFNWRyouY3BwIGZpbGVzKQorI2RlZmluZSBC
RUdJTl9ERUZJTkVfQU5JTUFURURfUFJPUEVSVElFUworCisjZGVmaW5lIERFRklORV9BTklNQVRF
RF9QUk9QRVJUWShBbmltYXRlZFByb3BlcnR5VHlwZUVudW0sIE93bmVyVHlwZSwgRE9NQXR0cmli
dXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3Bl
cnR5KSBcCitjb25zdCBTVkdQcm9wZXJ0eUluZm8qIE93bmVyVHlwZTo6TG93ZXJQcm9wZXJ0eSMj
UHJvcGVydHlJbmZvKCkgeyBcCisgICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogc19w
cm9wZXJ0eUluZm8gPSAwOyBcCisgICAgaWYgKCFzX3Byb3BlcnR5SW5mbykgXAorICAgICAgICBz
X3Byb3BlcnR5SW5mbyA9IG5ldyBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRQcm9wZXJ0eVR5cGVF
bnVtLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBET01B
dHRyaWJ1dGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZPd25lclR5cGU6OnN5bmNocm9uaXplIyNVcHBlclByb3BlcnR5
LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmT3duZXJU
eXBlOjpsb29rdXBPckNyZWF0ZSMjVXBwZXJQcm9wZXJ0eSMjV3JhcHBlcik7IFwKKyAgICBcCisg
ICAgcmV0dXJuIHNfcHJvcGVydHlJbmZvOyBcCit9IAorCisjZGVmaW5lIEVORF9ERUZJTkVfQU5J
TUFURURfUFJPUEVSVElFUworCisvLyBQcm9wZXJ0eSBkZWNsYXJhdGlvbiBoZWxwZXJzICh1c2Vk
IGluIFNWRyouaCBmaWxlcykKKyNkZWZpbmUgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTKE93bmVyVHlwZSkgXAorcHVibGljOiBcCisgICAgc3RhdGljIFNWR0F0dHJpYnV0ZVRvUHJv
cGVydHlNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKTsgXAorICAgIHZpcnR1YWwgU1ZHQXR0
cmlidXRlVG9Qcm9wZXJ0eU1hcCYgbG9jYWxBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCkgXAorICAg
IHsgXAorICAgICAgICByZXR1cm4gYXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpOyBcCisgICAgfVwK
KyAgICB0eXBlZGVmIE93bmVyVHlwZSBVc2VPd25lclR5cGU7CiAKICNkZWZpbmUgREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUWShUZWFyT2ZmVHlwZSwgUHJvcGVydHlUeXBlLCBVcHBlclByb3BlcnR5
LCBMb3dlclByb3BlcnR5KSBcCiBwdWJsaWM6IFwKLVByb3BlcnR5VHlwZSYgTG93ZXJQcm9wZXJ0
eSgpIGNvbnN0IFwKLXsgXAotICAgIHJldHVybiBtXyMjTG93ZXJQcm9wZXJ0eS52YWx1ZTsgXAot
fSBcCi1cCi1Qcm9wZXJ0eVR5cGUmIExvd2VyUHJvcGVydHkjI0Jhc2VWYWx1ZSgpIGNvbnN0IFwK
LXsgXAotICAgIHJldHVybiBtXyMjTG93ZXJQcm9wZXJ0eS52YWx1ZTsgXAotfSBcCi1cCi12b2lk
IHNldCMjVXBwZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKGNvbnN0IFByb3BlcnR5VHlwZSYgdHlwZSkg
XAoteyBcCi0gICAgbV8jI0xvd2VyUHJvcGVydHkudmFsdWUgPSB0eXBlOyBcCi19IFwKLVwKLVBh
c3NSZWZQdHI8VGVhck9mZlR5cGU+IExvd2VyUHJvcGVydHkjI0FuaW1hdGVkKCk7IFwKLVwKKyAg
ICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBMb3dlclByb3BlcnR5IyNQcm9wZXJ0eUlu
Zm8oKTsgXAorICAgIFByb3BlcnR5VHlwZSYgTG93ZXJQcm9wZXJ0eSgpIGNvbnN0IFwKKyAgICB7
IFwKKyAgICAgICAgcmV0dXJuIG1fIyNMb3dlclByb3BlcnR5LnZhbHVlOyBcCisgICAgfSBcCisg
ICAgXAorICAgIFByb3BlcnR5VHlwZSYgTG93ZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKCkgY29uc3Qg
XAorICAgIHsgXAorICAgICAgICByZXR1cm4gbV8jI0xvd2VyUHJvcGVydHkudmFsdWU7IFwKKyAg
ICB9IFwKKyAgICBcCisgICAgdm9pZCBzZXQjI1VwcGVyUHJvcGVydHkjI0Jhc2VWYWx1ZShjb25z
dCBQcm9wZXJ0eVR5cGUmIHR5cGUpIFwKKyAgICB7IFwKKyAgICAgICAgbV8jI0xvd2VyUHJvcGVy
dHkudmFsdWUgPSB0eXBlOyBcCisgICAgfSBcCisgICAgXAorICAgIFBhc3NSZWZQdHI8VGVhck9m
ZlR5cGU+IExvd2VyUHJvcGVydHkjI0FuaW1hdGVkKCkgXAorICAgIHsgXAorICAgICAgICBtXyMj
TG93ZXJQcm9wZXJ0eS5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7IFwKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19wb2ludGVyX2Nhc3Q8VGVhck9mZlR5cGU+KGxvb2t1cE9yQ3JlYXRlIyNVcHBlclBy
b3BlcnR5IyNXcmFwcGVyKHRoaXMpKTsgXAorICAgIH0gXAorICAgIFwKIHByaXZhdGU6IFwKLSAg
ICB2b2lkIHN5bmNocm9uaXplIyNVcHBlclByb3BlcnR5KCk7IFwKLVwKKyAgICB2b2lkIHN5bmNo
cm9uaXplIyNVcHBlclByb3BlcnR5KCkgXAorICAgIHsgXAorICAgICAgICBpZiAoIW1fIyNMb3dl
clByb3BlcnR5LnNob3VsZFN5bmNocm9uaXplKSBcCisgICAgICAgICAgICByZXR1cm47IFwKKyAg
ICAgICAgQXRvbWljU3RyaW5nIHZhbHVlKFNWR1Byb3BlcnR5VHJhaXRzPFByb3BlcnR5VHlwZT46
OnRvU3RyaW5nKG1fIyNMb3dlclByb3BlcnR5LnZhbHVlKSk7IFwKKyAgICAgICAgU1ZHRWxlbWVu
dCogY29udGV4dEVsZW1lbnQgPSBHZXRPd25lckVsZW1lbnRGb3JUeXBlPFVzZU93bmVyVHlwZSwg
SXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8VXNlT3duZXJUeXBlPjo6dmFsdWU+Ojpvd25lckVsZW1l
bnQodGhpcyk7IFwKKyAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjxJc0Rl
cml2ZWRGcm9tU1ZHRWxlbWVudDxVc2VPd25lclR5cGU+Ojp2YWx1ZT46OnN5bmNocm9uaXplKGNv
bnRleHRFbGVtZW50LCBMb3dlclByb3BlcnR5IyNQcm9wZXJ0eUluZm8oKS0+YXR0cmlidXRlTmFt
ZSwgdmFsdWUpOyBcCisgICAgfSBcCisgICAgXAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0Fu
aW1hdGVkUHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlIyNVcHBlclByb3BlcnR5IyNXcmFwcGVyKHZv
aWQqIG1hc2tlZE93bmVyVHlwZSkgXAorICAgIHsgXAorICAgICAgICBBU1NFUlQobWFza2VkT3du
ZXJUeXBlKTsgXAorICAgICAgICBVc2VPd25lclR5cGUqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0
PFVzZU93bmVyVHlwZSo+KG1hc2tlZE93bmVyVHlwZSk7IFwKKyAgICAgICAgcmV0dXJuIFNWR0Fu
aW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxVc2VPd25lclR5cGUsIFRlYXJP
ZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIElzRGVyaXZlZEZyb21TVkdFbGVtZW50PFVzZU93bmVyVHlw
ZT46OnZhbHVlPihvd25lclR5cGUsIExvd2VyUHJvcGVydHkjI1Byb3BlcnR5SW5mbygpLCBvd25l
clR5cGUtPm1fIyNMb3dlclByb3BlcnR5LnZhbHVlKTsgXAorICAgIH0gXAorICAgIFwKKyAgICBz
dGF0aWMgdm9pZCBzeW5jaHJvbml6ZSMjVXBwZXJQcm9wZXJ0eSh2b2lkKiBtYXNrZWRPd25lclR5
cGUpIFwKKyAgICB7IFwKKyAgICAgICAgQVNTRVJUKG1hc2tlZE93bmVyVHlwZSk7IFwKKyAgICAg
ICAgVXNlT3duZXJUeXBlKiBvd25lclR5cGUgPSBzdGF0aWNfY2FzdDxVc2VPd25lclR5cGUqPiht
YXNrZWRPd25lclR5cGUpOyBcCisgICAgICAgIG93bmVyVHlwZS0+c3luY2hyb25pemUjI1VwcGVy
UHJvcGVydHkoKTsgXAorICAgIH0gXAorICAgIFwKICAgICBtdXRhYmxlIFNWR1N5bmNocm9uaXph
YmxlQW5pbWF0ZWRQcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IG1fIyNMb3dlclByb3BlcnR5OwogCisj
ZGVmaW5lIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMgCisKKy8vIExpc3Qgc3BlY2lm
aWMgZGVmaW5pdGlvbi9kZWNsYXJhdGlvbiBoZWxwZXJzCiAjZGVmaW5lIERFQ0xBUkVfQU5JTUFU
RURfTElTVF9QUk9QRVJUWShUZWFyT2ZmVHlwZSwgUHJvcGVydHlUeXBlLCBVcHBlclByb3BlcnR5
LCBMb3dlclByb3BlcnR5KSBcCiBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFRlYXJPZmZUeXBl
LCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLXZvaWQgZGV0
YWNoQW5pbWF0ZWQjI1VwcGVyUHJvcGVydHkjI0xpc3RXcmFwcGVycyh1bnNpZ25lZCBuZXdMaXN0
U2l6ZSk7Ci0KLSNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX0xJU1RfUFJPUEVSVFkoT3duZXJUeXBl
LCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFRlYXJPZmZUeXBlLCBQ
cm9wZXJ0eVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFRklORV9BTklN
QVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRl
bnRpZmllciwgVGVhck9mZlR5cGUsIFByb3BlcnR5VHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQ
cm9wZXJ0eSkgXAotdm9pZCBPd25lclR5cGU6OmRldGFjaEFuaW1hdGVkIyNVcHBlclByb3BlcnR5
IyNMaXN0V3JhcHBlcnModW5zaWduZWQgbmV3TGlzdFNpemUpIFwKK3ZvaWQgZGV0YWNoQW5pbWF0
ZWQjI1VwcGVyUHJvcGVydHkjI0xpc3RXcmFwcGVycyh1bnNpZ25lZCBuZXdMaXN0U2l6ZSkgXAog
eyBcCi0gICAgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQgPSBHZXRPd25lckVsZW1lbnRGb3JU
eXBlPE93bmVyVHlwZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8T3duZXJUeXBlPjo6dmFsdWU+
Ojpvd25lckVsZW1lbnQodGhpcyk7IFwKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5KiB3cmFwcGVy
ID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwV3JhcHBlcjxUZWFyT2ZmVHlwZT4oY29udGV4
dEVsZW1lbnQsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSk7IFwKLSAgICBpZiAoIXdyYXBwZXIp
IFwKLSAgICAgICAgcmV0dXJuOyBcCi0gICAgc3RhdGljX2Nhc3Q8VGVhck9mZlR5cGUqPih3cmFw
cGVyKS0+ZGV0YWNoTGlzdFdyYXBwZXJzKG5ld0xpc3RTaXplKTsgXAorICAgIGlmIChTVkdBbmlt
YXRlZFByb3BlcnR5KiB3cmFwcGVyID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwV3JhcHBl
cjxUZWFyT2ZmVHlwZT4odGhpcywgTG93ZXJQcm9wZXJ0eSMjUHJvcGVydHlJbmZvKCkpKSBcCisg
ICAgICAgIHN0YXRpY19jYXN0PFRlYXJPZmZUeXBlKj4od3JhcHBlciktPmRldGFjaExpc3RXcmFw
cGVycyhuZXdMaXN0U2l6ZSk7IFwKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1
dGVUb1Byb3BlcnR5TWFwLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNWRykKKyNpbmNs
dWRlICJTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmgiCisKKyNpbmNsdWRlICJTVkdBbmltYXRl
ZFByb3BlcnR5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBTVkdBdHRyaWJ1dGVU
b1Byb3BlcnR5TWFwOjphbmltYXRlZFByb3BlcnRpZXNGb3JBdHRyaWJ1dGUoU1ZHRWxlbWVudCog
b3duZXJUeXBlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBWZWN0b3I8UmVm
UHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+ID4mIHByb3BlcnRpZXMpCit7CisgICAgQVNTRVJUKG93
bmVyVHlwZSk7CisgICAgUHJvcGVydGllc1ZlY3RvciogdmVjdG9yID0gbV9tYXAuZ2V0KGF0dHJp
YnV0ZU5hbWUpOworICAgIGlmICghdmVjdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBQcm9w
ZXJ0aWVzVmVjdG9yOjppdGVyYXRvciB2ZWN0b3JFbmQgPSB2ZWN0b3ItPmVuZCgpOworICAgIGZv
ciAoUHJvcGVydGllc1ZlY3Rvcjo6aXRlcmF0b3IgdmVjdG9ySXQgPSB2ZWN0b3ItPmJlZ2luKCk7
IHZlY3Rvckl0ICE9IHZlY3RvckVuZDsgKyt2ZWN0b3JJdCkKKyAgICAgICAgcHJvcGVydGllcy5h
cHBlbmQoYW5pbWF0ZWRQcm9wZXJ0eShvd25lclR5cGUsIGF0dHJpYnV0ZU5hbWUsICp2ZWN0b3JJ
dCkpOworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVy
dHlNYXAuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpZm5kZWYgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcF9oCisjZGVmaW5lIFNWR0F0dHJpYnV0
ZVRvUHJvcGVydHlNYXBfaAorCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJRdWFsaWZpZWRO
YW1lLmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oIgorI2lu
Y2x1ZGUgIlNWR1Byb3BlcnR5SW5mby5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTsKK2NsYXNzIFNW
R0VsZW1lbnQ7CisKK2NsYXNzIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAgeworcHVibGljOgor
ICAgIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKSB7IH0KKyAgICB+U1ZHQXR0cmlidXRlVG9Q
cm9wZXJ0eU1hcCgpIHsgZGVsZXRlQWxsVmFsdWVzKG1fbWFwKTsgfQorCisgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gbV9tYXAuaXNFbXB0eSgpOyB9CisKKyAgICB2b2lkIGFkZFBy
b3BlcnRpZXMoU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgbWFwKQorICAgIHsKKyAgICAgICAg
QXR0cmlidXRlVG9Qcm9wZXJ0aWVzTWFwOjppdGVyYXRvciBlbmQgPSBtYXAubV9tYXAuZW5kKCk7
CisgICAgICAgIGZvciAoQXR0cmlidXRlVG9Qcm9wZXJ0aWVzTWFwOjppdGVyYXRvciBpdCA9IG1h
cC5tX21hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIFByb3BlcnRp
ZXNWZWN0b3IqIHZlY3RvciA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBBU1NFUlQodmVjdG9y
KTsKKworICAgICAgICAgICAgUHJvcGVydGllc1ZlY3Rvcjo6aXRlcmF0b3IgdmVjdG9yRW5kID0g
dmVjdG9yLT5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoUHJvcGVydGllc1ZlY3Rvcjo6aXRlcmF0
b3IgdmVjdG9ySXQgPSB2ZWN0b3ItPmJlZ2luKCk7IHZlY3Rvckl0ICE9IHZlY3RvckVuZDsgKyt2
ZWN0b3JJdCkKKyAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eSgqdmVjdG9ySXQpOworICAgICAg
ICB9CisgICAgfQorCisgICAgdm9pZCBhZGRQcm9wZXJ0eShjb25zdCBTVkdQcm9wZXJ0eUluZm8q
IGluZm8pCisgICAgeworICAgICAgICBBU1NFUlQoaW5mbyk7CisgICAgICAgIEFTU0VSVChpbmZv
LT5hdHRyaWJ1dGVOYW1lICE9IGFueVFOYW1lKCkpOworICAgICAgICBpZiAoUHJvcGVydGllc1Zl
Y3RvciogdmVjdG9yID0gbV9tYXAuZ2V0KGluZm8tPmF0dHJpYnV0ZU5hbWUpKSB7CisgICAgICAg
ICAgICB2ZWN0b3ItPmFwcGVuZChpbmZvKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBQcm9wZXJ0aWVzVmVjdG9yKiB2ZWN0b3IgPSBuZXcgUHJvcGVydGllc1ZlY3Rv
cjsKKyAgICAgICAgdmVjdG9yLT5hcHBlbmQoaW5mbyk7CisgICAgICAgIG1fbWFwLnNldChpbmZv
LT5hdHRyaWJ1dGVOYW1lLCB2ZWN0b3IpOworICAgIH0KKworICAgIHZvaWQgYW5pbWF0ZWRQcm9w
ZXJ0aWVzRm9yQXR0cmlidXRlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBWZWN0b3I8UmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVy
dHk+ID4mIHByb3BlcnRpZXMpOworCisgICAgdm9pZCBhbmltYXRlZFByb3BlcnR5VHlwZUZvckF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBWZWN0b3I8QW5pbWF0
ZWRQcm9wZXJ0eVR5cGU+JiBwcm9wZXJ0eVR5cGVzKQorICAgIHsKKyAgICAgICAgUHJvcGVydGll
c1ZlY3RvciogdmVjdG9yID0gbV9tYXAuZ2V0KGF0dHJpYnV0ZU5hbWUpOworICAgICAgICBpZiAo
IXZlY3RvcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBQcm9wZXJ0aWVzVmVjdG9y
OjppdGVyYXRvciB2ZWN0b3JFbmQgPSB2ZWN0b3ItPmVuZCgpOworICAgICAgICBmb3IgKFByb3Bl
cnRpZXNWZWN0b3I6Oml0ZXJhdG9yIHZlY3Rvckl0ID0gdmVjdG9yLT5iZWdpbigpOyB2ZWN0b3JJ
dCAhPSB2ZWN0b3JFbmQ7ICsrdmVjdG9ySXQpCisgICAgICAgICAgICBwcm9wZXJ0eVR5cGVzLmFw
cGVuZCgoKnZlY3Rvckl0KS0+YW5pbWF0ZWRQcm9wZXJ0eVR5cGUpOworICAgIH0KKworICAgIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0aWVzKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICAgICAgQXR0cmlidXRlVG9Q
cm9wZXJ0aWVzTWFwOjppdGVyYXRvciBlbmQgPSBtX21hcC5lbmQoKTsKKyAgICAgICAgZm9yIChB
dHRyaWJ1dGVUb1Byb3BlcnRpZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9tYXAuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBQcm9wZXJ0aWVzVmVjdG9yKiB2ZWN0b3IgPSBp
dC0+c2Vjb25kOworICAgICAgICAgICAgQVNTRVJUKHZlY3Rvcik7CisKKyAgICAgICAgICAgIFBy
b3BlcnRpZXNWZWN0b3I6Oml0ZXJhdG9yIHZlY3RvckVuZCA9IHZlY3Rvci0+ZW5kKCk7CisgICAg
ICAgICAgICBmb3IgKFByb3BlcnRpZXNWZWN0b3I6Oml0ZXJhdG9yIHZlY3Rvckl0ID0gdmVjdG9y
LT5iZWdpbigpOyB2ZWN0b3JJdCAhPSB2ZWN0b3JFbmQ7ICsrdmVjdG9ySXQpCisgICAgICAgICAg
ICAgICAgc3luY2hyb25pemVQcm9wZXJ0eShjb250ZXh0RWxlbWVudCwgaXQtPmZpcnN0LCAqdmVj
dG9ySXQpOworICAgICAgICB9IAorICAgIH0KKworICAgIGJvb2wgc3luY2hyb25pemVQcm9wZXJ0
eShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7CisgICAgICAg
IFByb3BlcnRpZXNWZWN0b3IqIHZlY3RvciA9IG1fbWFwLmdldChhdHRyaWJ1dGVOYW1lKTsKKyAg
ICAgICAgaWYgKCF2ZWN0b3IpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
UHJvcGVydGllc1ZlY3Rvcjo6aXRlcmF0b3IgdmVjdG9yRW5kID0gdmVjdG9yLT5lbmQoKTsKKyAg
ICAgICAgZm9yIChQcm9wZXJ0aWVzVmVjdG9yOjppdGVyYXRvciB2ZWN0b3JJdCA9IHZlY3Rvci0+
YmVnaW4oKTsgdmVjdG9ySXQgIT0gdmVjdG9yRW5kOyArK3ZlY3Rvckl0KQorICAgICAgICAgICAg
c3luY2hyb25pemVQcm9wZXJ0eShjb250ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgKnZlY3Rv
ckl0KTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9p
ZCBzeW5jaHJvbml6ZVByb3BlcnR5KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIGluZm8p
CisgICAgeworICAgICAgICBBU1NFUlQoaW5mbyk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoYXR0
cmlidXRlTmFtZSwgYXR0cmlidXRlTmFtZSA9PSBpbmZvLT5hdHRyaWJ1dGVOYW1lKTsKKyAgICAg
ICAgQVNTRVJUKGluZm8tPnN5bmNocm9uaXplUHJvcGVydHkpOworICAgICAgICAoKmluZm8tPnN5
bmNocm9uaXplUHJvcGVydHkpKGNvbnRleHRFbGVtZW50KTsKKyAgICB9CisKKyAgICBQYXNzUmVm
UHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IGFuaW1hdGVkUHJvcGVydHkoU1ZHRWxlbWVudCogY29u
dGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFNW
R1Byb3BlcnR5SW5mbyogaW5mbykKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmZvKTsKKyAgICAg
ICAgQVNTRVJUX1VOVVNFRChhdHRyaWJ1dGVOYW1lLCBhdHRyaWJ1dGVOYW1lID09IGluZm8tPmF0
dHJpYnV0ZU5hbWUpOworICAgICAgICBBU1NFUlQoaW5mby0+bG9va3VwT3JDcmVhdGVXcmFwcGVy
Rm9yQW5pbWF0ZWRQcm9wZXJ0eSk7CisgICAgICAgIHJldHVybiAoKmluZm8tPmxvb2t1cE9yQ3Jl
YXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVydHkpKGNvbnRleHRFbGVtZW50KTsKKyAgICB9CisK
KyAgICB0eXBlZGVmIFZlY3Rvcjxjb25zdCBTVkdQcm9wZXJ0eUluZm8qPiBQcm9wZXJ0aWVzVmVj
dG9yOworICAgIHR5cGVkZWYgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBQcm9wZXJ0aWVzVmVjdG9y
Kj4gQXR0cmlidXRlVG9Qcm9wZXJ0aWVzTWFwOworICAgIEF0dHJpYnV0ZVRvUHJvcGVydGllc01h
cCBtX21hcDsKK307CisKK30KKworI2VuZGlmCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5SW5mby5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgU1ZHUHJvcGVy
dHlJbmZvX2gKKyNkZWZpbmUgU1ZHUHJvcGVydHlJbmZvX2gKKworI2lmIEVOQUJMRShTVkcpCisj
aW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTsKKworZW51
bSBBbmltYXRlZFByb3BlcnR5VHlwZSB7CisgICAgQW5pbWF0ZWRBbmdsZSwKKyAgICBBbmltYXRl
ZEJvb2xlYW4sCisgICAgQW5pbWF0ZWRDb2xvciwKKyAgICBBbmltYXRlZEVudW1lcmF0aW9uLAor
ICAgIEFuaW1hdGVkSW50ZWdlciwKKyAgICBBbmltYXRlZExlbmd0aCwKKyAgICBBbmltYXRlZExl
bmd0aExpc3QsCisgICAgQW5pbWF0ZWROdW1iZXIsCisgICAgQW5pbWF0ZWROdW1iZXJMaXN0LAor
ICAgIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIsCisgICAgQW5pbWF0ZWRQYXRoLAorICAg
IEFuaW1hdGVkUG9pbnRzLAorICAgIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbywKKyAgICBB
bmltYXRlZFJlY3QsCisgICAgQW5pbWF0ZWRTdHJpbmcsCisgICAgQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0LAorICAgIEFuaW1hdGVkVW5rbm93bgorfTsKKworc3RydWN0IFNWR1Byb3BlcnR5SW5mbyB7
CisgICAgdHlwZWRlZiB2b2lkICgqU3luY2hyb25pemVQcm9wZXJ0eSkodm9pZCopOworICAgIHR5
cGVkZWYgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiAoKkxvb2t1cE9yQ3JlYXRlV3Jh
cHBlckZvckFuaW1hdGVkUHJvcGVydHkpKHZvaWQqKTsKKworICAgIFNWR1Byb3BlcnR5SW5mbyhB
bmltYXRlZFByb3BlcnR5VHlwZSBuZXdUeXBlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuZXdBdHRy
aWJ1dGVOYW1lLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1By
b3BlcnR5SWRlbnRpZmllciwgU3luY2hyb25pemVQcm9wZXJ0eSBuZXdTeW5jaHJvbml6ZVByb3Bl
cnR5LAorICAgICAgICAgICAgICAgICAgICBMb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JBbmltYXRl
ZFByb3BlcnR5IG5ld0xvb2t1cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVydHkpCisg
ICAgICAgIDogYW5pbWF0ZWRQcm9wZXJ0eVR5cGUobmV3VHlwZSkKKyAgICAgICAgLCBhdHRyaWJ1
dGVOYW1lKG5ld0F0dHJpYnV0ZU5hbWUpCisgICAgICAgICwgcHJvcGVydHlJZGVudGlmaWVyKG5l
d1Byb3BlcnR5SWRlbnRpZmllcikKKyAgICAgICAgLCBzeW5jaHJvbml6ZVByb3BlcnR5KG5ld1N5
bmNocm9uaXplUHJvcGVydHkpCisgICAgICAgICwgbG9va3VwT3JDcmVhdGVXcmFwcGVyRm9yQW5p
bWF0ZWRQcm9wZXJ0eShuZXdMb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JBbmltYXRlZFByb3BlcnR5
KQorICAgIHsKKyAgICB9CisKKyAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBhbmltYXRlZFByb3Bl
cnR5VHlwZTsKKyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lOworICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlJZGVudGlmaWVyOworICAgIFN5bmNocm9uaXplUHJv
cGVydHkgc3luY2hyb25pemVQcm9wZXJ0eTsKKyAgICBMb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JB
bmltYXRlZFByb3BlcnR5IGxvb2t1cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVydHk7
Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKQorI2VuZGlmIC8vIFNWR1Byb3BlcnR5
SW5mb19oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100180</attachid>
            <date>2011-07-08 16:11:40 -0700</date>
            <delta_ts>2011-07-08 21:41:19 -0700</delta_ts>
            <desc>Patch v7</desc>
            <filename>AnimValPrep-v7.diff</filename>
            <type>text/plain</type>
            <size>409780</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwNjcxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTA3IEBACisyMDExLTA3LTA5ICBOaWtvbGFz
IFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIEFkZCBhIHBvc3Np
YmlsaXR5IHRvIHJldHJpZXZlIHRoZSBhc3NvY2lhdGVkIFNWR0FuaW1hdGVkUHJvcGVydHkgb2Jq
ZWN0IGZvciBhIGNlcnRhaW4gWE1MIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM3OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbiBvcmRlciB0byBwcmVwYXJlIGFuaW1WYWwgc3VwcG9y
dCB3ZSBuZWVkIGEgd2F5IHRvIG1hcCBhIGdpdmVuIFNWRyBET00gYXR0cmlidXRlIHRvIGEgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eS4KKyAgICAgICAgZWcuIFNWR05hbWVzOjp4QXR0ciAtPiBTVkdSZWN0
RWxlbWVudDo6eEFuaW1hdGVkKCksIGV0Yy4gVGhpcyB3aWxsIGJlIG5lZWRlZCB0byB1cGRhdGUg
dGhlIGFuaW1WYWwgb2YgdGhlCisgICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHksIGlmIGFuIGFu
aW1hdGlvbiBpcyBydW5uaW5nLiBJdCB3b3VsZCByZXF1aXJlZCBhZGRpbmcgYSBuZXcgbWV0aG9k
IHRvIGFsbCBTVkcqIGNsYXNzZXMKKyAgICAgICAgdGhhdCBkZWZpbmUgYW5pbWF0ZWQgcHJvcGVy
dGllcy4gVW5mb3J0dW5hdGVseSB3ZSBhbHJlYWR5IGhhdmUgbG90cyBvZiByZXBlYXRlZCBjb2Rl
IGluIG1ldGhvZHMgbGlrZQorICAgICAgICBzeW5jaHJvbml6ZVByb3BlcnR5IC8gZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLiBMb29rIGF0IFNWR1JlY3RFbGVtZW50IGZvciBleGFtcGxl
OgorCisgICAgICAgIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChh
dHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7CisgICAgICAgICAgICAgICAgc3luY2hyb25pemVYKCk7
CisgICAgICAgICAgICAgICAgc3luY2hyb25pemVZKCk7CisgICAgICAgICAgICAgICAgIC4uLgor
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
eEF0dHIpIHsKKyAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZVgoKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6eUF0dHIpIHsKKyAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZVkoKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAuLi4KKyAgICAg
ICAgfQorCisgICAgICAgIG9yCisKKyAgICAgICAgdm9pZCBTVkdSZWN0RWxlbWVudDo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKKyAgICAgICAgeworICAgICAgICAgICAgQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAgICAgCisgICAgICAgICAgICBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKKyAgICAgICAgICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
KyAgICAgICAgICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICAgICAgICAgIC4uLgorICAgICAgICB9CisKKyAgICAg
ICAgVGhlc2UgbG9va3VwcyBhcmUgYWxsIHBlcmZvcm1lZCBkeW5hbWljYWxseS4gRWFjaCBzeW5j
aHJvbml6ZVByb3BlcnR5KCkgY2FsbCBkb2VzIGEgbG90IG9mIGNvbXBhcmlzb25zLgorICAgICAg
ICBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKSBpc24ndCB0aGF0IGJhZCBhcyB0aGUg
cmVzdWx0IGlzIGNhY2hlZCBpbiBhIHN0YXRpYyBIYXNoTWFwIHBlci1TVkdSZWN0RWxlbWVudC4K
KyAgICAgICAgVGhlcmUncyBubyByZWFzb24gdG8gZG8gdGhlc2UgdGhpbmdzIGR5bmFtaWNhbGx5
IQorCisgICAgICAgIEluc3BpcmVkIGJ5IEpTQywgSSdtIGFkZGluZyBhICJzdGF0aWMgY29uc3Qg
U1ZHUHJvcGVydHlJbmZvIHNfZm9vUHJvcGVydHlJbmZvIiBvYmplY3QgZm9yIGVhY2ggYW5pbWF0
ZWQgU1ZHIHByb3BlcnR5LgorICAgICAgICBGb3IgZXhhbXBsZSwgZm9yIFNWR1JlY3RFbGVtZW50
cyBTVkdBbmltYXRlZExlbmd0aCB4IHByb3BlcnR5IHdlJ3JlIHN0b3Jpbmc6CisgICAgICAgIC0g
IkFuaW1hdGVkUHJvcGVydHlUeXBlIHR5cGUiIChBbmltYXRlZExlbmd0aCAtLSBub3RlIHRoZSBl
bnVtIHdhcyBuYW1lZCBBbmltYXRlZEF0dHJpYnV0ZVR5cGUsIEkgcmVuYW1lZCBpdCB0byBBbmlt
YXRlZFByb3BlcnR5VHlwZSBmb3IgY2xhcml0eSkKKyAgICAgICAgLSAiY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSIgKFNWR05hbWVzOjp4QXR0cikKKyAgICAgICAgLSAiY29uc3Qg
QXRvbWljU3RyaW5nJiBwcm9wZXJ0eUlkZW50aWZpZXIiIChTVkdOYW1lczo6eEF0dHIubG9jYWxO
YW1lKCkgLS0gb25seSBkaWZmZXJlbnQgaWYgTi13cmFwcGVycyBtYXAgdG8gYSBzaW5nbGUgWE1M
IERPTSBhdHRyaWJ1dGUsIGVnLiBvcmllbnRBdHRyKQorICAgICAgICAtICJTeW5jaHJvbml6ZVBy
b3BlcnR5IHN5bmNocm9uaXplUHJvcGVydHkiIChjYWxsYmFjayB0byBTVkdSZWN0RWxlbWVudDo6
c3luY2hyb25pemVYKQorICAgICAgICAtICJMb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JBbmltYXRl
ZFByb3BlcnR5IGxvb2t1cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVydHkiIChjYWxs
YmFjayB0byBTVkdSZWN0RWxlbWVudDo6eEFuaW1hdGVkKQorCisgICAgICAgIFVzaW5nIHRoaXMg
aW5mb3JtYXRpb24sIHdlIGNhbiByZXBsYWNlIGFsbCB0aGUgdmFyaW91cyBzeW5jaHJvbml6ZVBy
b3BlcnR5L2ZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwIGltcGxlbWVudGF0aW9ucywgd2l0aCBh
IHNpbmdsZSBvbmUgaW4gU1ZHRWxlbWVudC4KKyAgICAgICAgQWxsIHRoZXNlIGFyZSBhdXRvLWdl
bmVyYXRlZCwgdXNpbmcgdGhlIHN0YW5kYXJkIG1hY3JvcyB1c2VkIHRvIGRlZmluZS9kZWNsYXJl
IFNWRyBhbmltYXRlZCBwcm9wZXJ0aWVzLiBUaGlzIHJlcXVpcmVkIHNldmVyYWwgY2hhbmdlcyB0
byB0aGUgbWFjcm9zLgorICAgICAgICBIZXJlJ3MgYSBzdW1tYXJ5OgorICAgIAorICAgICAgICAj
MSkgSW4gYWxsIGhlYWRlcnMsIHdyYXAgREVDTEFSRV9BTklNQVRFRF8qIGNhbGxzLCBpbiBCRUdJ
Tl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoQ2xhc3NOYW1lKSAvIEVORF9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMgYmxvY2tzLgorICAgICAgICAKKyAgICAgICAgICAgIFNhbXBsZSBj
aGFuZ2UgZm9yIFNWR1JlY3RFbGVtZW50OgorICAgICAgICAgICAgLSAgICBERUNMQVJFX0FOSU1B
VEVEX0xFTkdUSChYLCB4KQorICAgICAgICAgICAgLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdU
SChZLCB5KQorICAgICAgICAgICAgLSAgICAuLi4KKworICAgICAgICAgICAgKyAgICBCRUdJTl9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUmVjdEVsZW1lbnQpCisgICAgICAgICAgICAr
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQorICAgICAgICAgICAgKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKKyAgICAgICAgICAgICsgICAgICAgICAu
Li4KKyAgICAgICAgICAgICsgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisg
ICAgICAgICMyKSBJbiBhbGwgY3BwIGZpbGVzLCBhZGQgYSBuZXcgc2VjdGlvbiB3cmFwcGVkIGlu
IEJFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoQ2xhc3NOYW1lIC8gRU5EX1JFR0lT
VEVSX0FOSU1BVEVEX1BST1BFUlRJRVMgYmxvY2tzOgorCisgICAgICAgICAgICBTYW1wbGUgY2hh
bmdlIGZvciBTVkdSZWN0RWxlbWVudDoKKyAgICAgICAgICAgICtCRUdJTl9SRUdJU1RFUl9BTklN
QVRFRF9QUk9QRVJUSUVTKFNWR1JlY3RFbGVtZW50KQorICAgICAgICAgICAgKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh4KQorICAgICAgICAgICAgKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5KQorICAgICAgICAgICAgKyAgICAuLi4KKyAgICAgICAg
ICAgICsgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQpCisgICAgICAgICAgICArICAgIFJFR0lTVEVSX1BBUkVOVF9BTklN
QVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorICAgICAgICAgICAgK0VORF9SRUdJU1RFUl9BTklN
QVRFRF9QUk9QRVJUSUVTCisKKyAgICAgICAgICAgIFRoaXMgaXMgdGhlIG1haW4gcGllY2Ugb2Yg
dGhlIGxvZ2ljIHRoYXQgcmVwbGFjZXMgdGhlIG1hbnVhbCBzeW5jaHJvbml6ZVByb3BlcnR5L2Zp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwIGltcGxlbWVudGF0aW9uLiBJdCBleHBhbmRzIHRvIGZv
bGxvd2luZzoKKworICAgICAgICAgICAgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgU1ZHUmVj
dEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCwg
c19hdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLCAoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHUmVjdEVsZW1l
bnQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFNWR0F0dHJpYnV0ZVRvUHJvcGVy
dHlNYXAmIG1hcCA9IFNWR1JlY3RFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFtYXAuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAgICAgbWFwLmFkZFByb3BlcnR5KFNWR1JlY3RFbGVtZW50Ojp4
UHJvcGVydHlJbmZvKCkpOworICAgICAgICAgICAgICAgIG1hcC5hZGRQcm9wZXJ0eShTVkdSZWN0
RWxlbWVudDo6eVByb3BlcnR5SW5mbygpKTsKKyAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAg
ICAgICAgICBtYXAuYWRkUHJvcGVydGllcyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6
YXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpKTsKKyAgICAgICAgICAgICAgICBtYXAuYWRkUHJvcGVy
dGllcyhTVkdUZXN0czo6YXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgQSBzaW5nbGUtaW5zdGFuY2Ugb2YgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0
eU1hcCBpcyBjcmVhdGVkIGZvciBlYWNoIFNWRypFbGVtZW50LiBUaGUgY29uc3RydWN0b3Igb2Yg
U1ZHUmVjdEVsZW1lbnQgaXMgc3VwcG9zZWQgdG8gY2FsbAorICAgICAgICAgICAgcmVnaXN0ZXJB
bmltYXRlZFByb3BlcnRpZXNGb3JTVkdSZWN0RWxlbWVudCgpLCB3aGljaCBjb2xsZWN0cyBhbGwg
cHJvcGVydGllcyBvZiBTVkdSZWN0RWxlbWVudCBhbmQgYWxsIGl0cyBwYXJlbnQgY2xhc3NlcyBh
bmQgc3RvcmVzIHRoZW0KKyAgICAgICAgICAgIGluIGEgVmVjdG9yPGNvbnN0IFNWR1Byb3BlcnR5
SW5mbyo+LiBUaGlzIFZlY3RvciBpcyBzdG9yZWQgaW4gYSBIYXNoTWFwPFF1YWxpZmllZE5hbWUs
IFZlY3Rvcjxjb25zdCBTVkdQcm9wZXJ0eUluZm8qPiA+IHdoZXJlIHRoZSBrZXkKKyAgICAgICAg
ICAgIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSAoZWcuIFNWR05hbWVzOjp4QXR0ciAtPiBTVkdSZWN0
RWxlbWVudDo6eFByb3BlcnR5SW5mbykuIFRoaXMgaXMgb25seSBkb25lIF9vbmNlXyBwZXIgU1ZH
UmVjdEVsZW1lbnQuCisKKyAgICAgICAgICAgIFNWR0VsZW1lbnQgY29udGFpbnMgYSAidmlydHVh
bCBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBsb2NhbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAo
KSIgbWV0aG9kLCBhbmQgU1ZHUmVjdEVsZW1lbnQgb3ZlcnJpZGVzIGl0CisgICAgICAgICAgICBh
bmQgcmV0dXJucyBTVkdSZWN0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpICh3aGlj
aCBpcyBzdGF0aWMhKSAtLSB0aGlzIGlzIGhpZGRlbiBhZ2FpbiBpbiB0aGUgbWFjcm9zLCBubyBu
ZWVkIHRvIHdyaXRlIGFueSBjb2RlLgorCisgICAgICAgICAgICBTVkdBdHRyaWJ1dGVUb1Byb3Bl
cnR5TWFwIHByb3ZpZGVzIGZvbGxvd2luZyBBUEk6CisgICAgICAgICAgICAtIGJvb2wgc3luY2hy
b25pemVQcm9wZXJ0eShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICAgICAgICAgIC0gdm9pZCBzeW5jaHJvbml6ZVByb3Bl
cnRpZXMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCisgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBBIGdlbmVyaWMgd2F5IHRvIHN5bmNocm9uaXplIGEgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eSB3aXRoIGl0cyBYTUwgRE9NIGF0dHJpYnV0ZS4gQW55IFNWRyBET00gY2hhbmdlIHRvIGVnLiA8
cmVjdD5zIHggcHJvcGVydHkgd2lsbCBub3cgdHJpZ2dlcgorICAgICAgICAgICAgICAgIGNvbnRl
eHRFbGVtZW50LT5sb2NhbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKS5zeW5jaHJvbml6ZVByb3Bl
cnR5KHRoaXMsIFNWR05hbWVzOjp4QXR0cikKKyAgICAgICAgICAgICAgICBUaGUgU1ZHQXR0cmli
dXRlVG9Qcm9wZXJ0eU1hcCB3aWxsIGFzayBpdHMgSGFzaE1hcCBmb3IgdGhlIFZlY3RvciBjb250
YWluaW5nIHRoZSBwcm9wZXJ0aWVzIGZvciBTVkdOYW1lczo6eEF0dHIgKGluIHRoYXQgY2FzZSwg
anVzdCBvbmUgeEFuaW1hdGVkKCkpLgorCisgICAgICAgICAgICAtIHZvaWQgYW5pbWF0ZWRQcm9w
ZXJ0eVR5cGVGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwg
VmVjdG9yPEFuaW1hdGVkUHJvcGVydHlUeXBlPiYgcHJvcGVydHlUeXBlcykKKworICAgICAgICAg
ICAgICAgIFRoaXMgbWV0aG9kIHJlcGxhY2VzIHRoZSBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eU1h
cCBpbXBsZW1lbnRhdGlvbnMgZXZlcnl3aGVyZS4KKyAgICAgICAgCisgICAgICAgICAgICAtIHZv
aWQgYW5pbWF0ZWRQcm9wZXJ0aWVzRm9yQXR0cmlidXRlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBWZWN0b3I8UmVmUHRyPFNW
R0FuaW1hdGVkUHJvcGVydHk+ID4mIHByb3BlcnRpZXMpOworCisgICAgICAgICAgICAgICAgVGhp
cyBtZXRob2QgaXMgbm90IHVzZWQgeWV0LCBidXQgYWxsb3dzIHVzIHRvIGNvbGxlY3QgYWxsIFNW
R0FuaW1hdGVkUHJvcGVydGllcyBmb3IgYSBRdWFsaWZpZWROYW1lIC0tIHRoZSBpbml0aWFsIGdv
YWwgZm9yIHRoaXMgcGF0Y2guCisKKyAgICAgICAgIzMpIEluIGFsbCBjcHAgZmlsZXMsIGFkZCBh
IGNhbGwgdG8gInJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yQ2xhc3NOYW1lKCkiIGluIHRo
ZSBjb25zdHJ1Y3Rvci4gRm9yZ2V0dGluZyB0aGlzIHdpbGwgcmVzdWx0IGluIGEgY29tcGlsZSBl
cnJvci4KKworICAgICAgICBEb2Vzbid0IGFmZmVjdCBhbnkgdGVzdHMuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG06CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvck9iakMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9u
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAg
ICAgKEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcik6CisgICAgICAgICogc3ZnL1NWR0FFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FFbGVtZW50OjpTVkdBRWxlbWVudCk6CisgICAg
ICAgICogc3ZnL1NWR0FFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBRWxlbWVudDo6
c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FFbGVt
ZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NW
R0FsdEdseXBoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbHRHbHlwaEVsZW1l
bnQ6OlNWR0FsdEdseXBoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0FsdEdseXBoRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlRWxlbWVudDo6U1ZHQW5pbWF0ZUVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6Omhhc1ZhbGlkQXR0cmlidXRlVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmRldGVybWluZVByb3Bl
cnR5VmFsdWVUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2Fs
Y3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVu
dDo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZUVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVEaXN0YW5jZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlRWxlbWVudDo6ZW5zdXJlQW5pbWF0b3IpOgorICAgICAgICAqIHN2Zy9T
VkdBbmltYXRlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6
aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVUcmFu
c2Zvcm1FbGVtZW50OjpkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6cmVzZXRUb0Jhc2VWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6Y2FsY3VsYXRlQW5p
bWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVu
dDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlVHJhbnNm
b3JtRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEFuZ2xlLmg6CisgICAgICAg
ICogc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEVu
dW1lcmF0aW9uLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5oOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlZExlbmd0aC5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZExl
bmd0aExpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaDoKKyAgICAgICAg
KiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVk
UHJlc2VydmVBc3BlY3RSYXRpby5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFJlY3QuaDoK
KyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OlNWR0FuaW1hdGVkVHlwZSk6Cisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZWRUeXBlOjp0eXBlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yOjpTVkdBbmltYXRl
ZFR5cGVBbmltYXRvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6U1ZHQW5pbWF0aW9uRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpjdXJyZW50VmFsdWVz
Rm9yVmFsdWVzQW5pbWF0aW9uKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6c3luY2hyb25pemVSZXF1
aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OnN5
bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGlvbkVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9T
VkdBbmltYXRvckZhY3RvcnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdG9yRmFjdG9y
eTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjpTVkdDaXJjbGVFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHQ2lyY2xlRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxl
bWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0NpcmNsZUVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0NpcmNsZUVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgor
ICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQ2xpcFBhdGhFbGVtZW50OjpTVkdDbGlwUGF0aEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9T
VkdDbGlwUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVu
dDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Ns
aXBQYXRoRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToK
KyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OlNW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQ3Vyc29y
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JFbGVtZW50OjpTVkdDdXJz
b3JFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHQ3Vyc29yRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQ3Vyc29yRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0N1cnNvckVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRF
eHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0N1cnNvckVsZW1lbnQ6OnN5bmNocm9u
aXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdEZWZzRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdEZWZzRWxlbWVudDo6U1ZHRGVmc0VsZW1lbnQpOgorICAgICAg
ICAqIHN2Zy9TVkdEZWZzRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRGVmc0VsZW1l
bnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdE
ZWZzRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRGVmc0VsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAg
ICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmFu
aW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Vs
ZW1lbnQ6OnVwZGF0ZUFuaW1hdGVkU1ZHQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsZW1lbnQ6OmxvY2FsQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAg
ICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6c3luY2hy
b25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN5
bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1l
bnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdFbGxpcHNl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGxpcHNlRWxlbWVudDo6U1ZHRWxs
aXBzZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdFbGxpcHNlRWxlbWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJl
cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGxpcHNlRWxlbWVudDo6c3luY2hyb25pemVSZXF1
aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnN5
bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6U1ZHRkVCbGVuZEVs
ZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNv
bG9yTWF0cml4RWxlbWVudDo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQpOgorICAgICAgICAqIHN2
Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudDo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQpOgorICAgICAgICAq
IHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdG
RUNvbXBvc2l0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVF
bGVtZW50OjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBv
c2l0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OlNWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6U1ZHRkVE
aWZmdXNlTGlnaHRpbmdFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OlNWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OlNWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9v
ZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6U1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFSW1hZ2VFbGVtZW50OjpTVkdGRUltYWdlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NW
R0ZFSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTGlnaHRFbGVtZW50OjpTVkdGRUxpZ2h0RWxlbWVudCk6
CisgICAgICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZF
TWVyZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6U1ZHRkVNZXJnZU5vZGVFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhv
bG9neUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dDo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6U1ZHRkVPZmZzZXRFbGVtZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudDo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCk6CisgICAgICAg
ICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpT
VkdGRVRpbGVFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQpOgorICAgICAg
ICAqIHN2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZpbHRl
ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6U1ZHRmls
dGVyRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6U1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAgICogc3ZnL1NWR0ZpdFRvVmlld0Jv
eC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZpdFRvVmlld0JveC5oOgorICAgICAgICAqIHN2Zy9T
VkdGb250RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250RWxlbWVudDo6U1ZH
Rm9udEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGb250RWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRm9udEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIHN2
Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb3Jl
aWduT2JqZWN0RWxlbWVudDo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQpOgorICAgICAgICAqIHN2
Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVu
c2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnN5bmNo
cm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdHRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdHRWxlbWVudDo6U1ZHR0VsZW1lbnQpOgorICAgICAgICAqIHN2
Zy9TVkdHRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1lbnQ6OnN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHRWxlbWVudDo6c3lu
Y2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1l
bnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdHbHlwaEVs
ZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdHbHlwaEVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50
RWxlbWVudDo6U1ZHR3JhZGllbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRp
ZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0dyYWRp
ZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpTVkdJbWFnZUVsZW1lbnQpOgorICAgICAgICAq
IHN2Zy9TVkdJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVu
dDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAg
ICAgKiBzdmcvU1ZHTGluZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZUVs
ZW1lbnQ6OlNWR0xpbmVFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHTGluZUVsZW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVh
dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZUVsZW1lbnQ6OnN5bmNocm9uaXplUmVx
dWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVFbGVtZW50OjpzeW5j
aHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01QYXRoRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdNUGF0aEVsZW1lbnQ6OlNWR01QYXRoRWxlbWVudCk6CisgICAgICAgICog
c3ZnL1NWR01QYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6Om9yaWVudFR5cGVQcm9wZXJ0
eUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6U1ZHTWFya2VyRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnRUb0F1
dG8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50VG9Bbmds
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpzeW5jaHJvbml6ZU9yaWVu
dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6bG9va3VwT3JDcmVh
dGVPcmllbnRUeXBlV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50
OjpvcmllbnRUeXBlQW5pbWF0ZWQpOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR01hc2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R01hc2tFbGVtZW50OjpTVkdNYXNrRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR01hc2tFbGVt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6c3luY2hyb25pemVSZXF1
aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50OjpzeW5jaHJv
bml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVu
dDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR01pc3NpbmdH
bHlwaEVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BhdGhFbGVtZW50OjpkUHJvcGVydHlJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhF
bGVtZW50OjpTVkdQYXRoRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVu
dDo6bG9va3VwT3JDcmVhdGVEV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxl
bWVudDo6c3luY2hyb25pemVEKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50Ojpw
YXRoU2VnTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6YW5pbWF0ZWRQ
YXRoU2VnTGlzdCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6cGF0aEJ5dGVTdHJlYW0pOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFu
Z3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnV2l0aENvbnRleHQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdGhTZWdXaXRoQ29udGV4dDo6YW5pbWF0ZWRQcm9wZXJ0eSk6CisgICAg
ICAgICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dHRlcm5FbGVtZW50OjpTVkdQYXR0ZXJuRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1BhdHRl
cm5FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6c3luY2hy
b25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVt
ZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXR0ZXJuRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICog
c3ZnL1NWR1BvbHlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50
Ojpwb2ludHNQcm9wZXJ0eUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6
OlNWR1BvbHlFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6c3lu
Y2hyb25pemVQb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6Omxvb2t1
cE9yQ3JlYXRlUG9pbnRzV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVu
dDo6cG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50OjphbmltYXRlZFBv
aW50cyk6CisgICAgICAgICogc3ZnL1NWR1BvbHlFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQb2x5RWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5n
dWFnZSk6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OlNWR1JhZGlhbEdyYWRpZW50
RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0
RWxlbWVudDo6U1ZHUmVjdEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVjdEVsZW1lbnQ6OnN5bmNocm9uaXplUmVxdWlyZWRG
ZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6c3luY2hyb25pemVS
ZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVjdEVsZW1lbnQ6OnN5
bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OlNWR1NWR0VsZW1lbnQpOgorICAg
ICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVt
ZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
U1ZHRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU1ZHRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAg
ICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0
RWxlbWVudDo6U1ZHU2NyaXB0RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHU3RvcEVsZW1lbnQ6OlNWR1N0b3BFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHU3Rv
cEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50OjpTVkdTdHlsZWRFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OmNzc1Byb3BlcnR5VG9UeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0
eWxlZEVsZW1lbnQ6OmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKToKKyAgICAgICAg
KiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudDo6U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpOgorICAgICAgICAqIHN2
Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTd2l0
Y2hFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N3aXRjaEVsZW1lbnQ6OlNWR1N3
aXRjaEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdTd2l0Y2hFbGVtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTd2l0Y2hFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3dpdGNoRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJl
ZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3dpdGNoRWxlbWVudDo6c3luY2hy
b25pemVTeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3ltYm9sRWxlbWVudDo6U1ZHU3ltYm9sRWxlbWVudCk6
CisgICAgICAgICogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVFJl
ZkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZkVsZW1lbnQ6OlNWR1RSZWZF
bGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVFJlZkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHVFNwYW5FbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHVFNwYW5FbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR1Rlc3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpy
ZXF1aXJlZEZlYXR1cmVzUHJvcGVydHlJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3Rz
OjpyZXF1aXJlZEV4dGVuc2lvbnNQcm9wZXJ0eUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VGVzdHM6OnN5c3RlbUxhbmd1YWdlUHJvcGVydHlJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1Rlc3RzOjphdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
c3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZH
VGVzdHMuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6dGV4dExlbmd0aFByb3BlcnR5SW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OlNWR1RleHRDb250
ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN5
bmNocm9uaXplVGV4dExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlVGV4dExlbmd0aFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50Ojp0ZXh0TGVuZ3RoQW5pbWF0ZWQpOgorICAgICAgICAq
IHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRD
b250ZW50RWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzeW5jaHJvbml6
ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHVGV4dEVsZW1lbnQ6OlNWR1RleHRFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHVGV4dEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQYXRoRWxlbWVudDo6U1ZHVGV4dFBhdGhF
bGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCk6CisgICAg
ICAgICogc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
VGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHVGl0bGVFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdUaXRsZUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAg
ICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1l
bnQ6OlNWR1VzZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4
dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6c3luY2hyb25pemVT
eXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICogc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1ZpZXdFbGVtZW50OjpTVkdWaWV3RWxlbWVudCk6CisgICAgICAgICog
c3ZnL1NWR1ZpZXdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1ZpZXdTcGVjLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjpTVkdWaWV3U3BlYyk6CisgICAgICAgICogc3Zn
L1NWR1ZpZXdTcGVjLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JD
cmVhdGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHk6Omxv
b2t1cFdyYXBwZXIpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHlNYWNyb3MuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5
U3luY2hyb25pemVyLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Q
cm9wZXJ0eU1hcC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Q
cm9wZXJ0eU1hcDo6YWRkUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBdHRyaWJ1
dGVUb1Byb3BlcnR5TWFwOjphZGRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBdHRy
aWJ1dGVUb1Byb3BlcnR5TWFwOjphbmltYXRlZFByb3BlcnRpZXNGb3JBdHRyaWJ1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YW5pbWF0ZWRQcm9wZXJ0
eVR5cGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9w
ZXJ0eU1hcDo6c3luY2hyb25pemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0F0
dHJpYnV0ZVRvUHJvcGVydHlNYXA6OnN5bmNocm9uaXplUHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YW5pbWF0ZWRQcm9wZXJ0eSk6CisgICAg
ICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA6OlNWR0F0dHJpYnV0
ZVRvUHJvcGVydHlNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0
eU1hcDo6flNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6aXNFbXB0eSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRp
ZXMvU1ZHUHJvcGVydHlJbmZvLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVy
dHlJbmZvOjpTVkdQcm9wZXJ0eUluZm8pOgorCiAyMDExLTA3LTA4ICBBZGFtIEJhcnRoICA8YWJh
cnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjkwNjYy
LgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4MDksNiArMTgwOSw3IEBA
IElGIChFTkFCTEVfU1ZHKQogICAgICAgICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdl
LmNwcAogICAgICAgICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwCiAgICAgICAg
IHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCisgICAgICAgIHN2Zy9w
cm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwCiAgICAgICAgIHN2Zy9wcm9w
ZXJ0aWVzL1NWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmNwcAogICAgICkKIApJbmRleDog
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTMzOTUsNiArMzM5
NSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9MaW5lYXJHcmFkaWVudEF0dHJpYnV0
ZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1BhdHRlcm5BdHRyaWJ1dGVzLmggXAorCVNvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFw
LmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRW51bWVyYXRp
b25Qcm9wZXJ0eVRlYXJPZmYuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCBcCkBAIC0zNDEw
LDYgKzM0MTIsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCBcCiAJ
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHkuaCBcCisJU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmggXApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNzcsNiArMTA3Nyw3IEBACiAgICAgICAgICAgICAnc3ZnL1NW
R1RyYW5zZm9ybUxpc3QuaCcsCiAgICAgICAgICAgICAnc3ZnL2FuaW1hdGlvbi9TTUlMVGltZS5o
JywKICAgICAgICAgICAgICdzdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmgnLAorICAgICAg
ICAgICAgJ3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCcsCiAgICAg
ICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVh
ck9mZi5oJywKICAgICAgICAgICAgICdzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZExpc3RQcm9w
ZXJ0eVRlYXJPZmYuaCcsCiAgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eS5oJywKQEAgLTEwOTAsNiArMTA5MSw3IEBACiAgICAgICAgICAgICAnc3ZnL3Byb3Bl
cnRpZXMvU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oJywKICAgICAgICAgICAgICdzdmcvcHJvcGVy
dGllcy9TVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oJywKICAgICAgICAgICAgICdzdmcv
cHJvcGVydGllcy9TVkdQcm9wZXJ0eS5oJywKKyAgICAgICAgICAgICdzdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eUluZm8uaCcsCiAgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVy
dHlUZWFyT2ZmLmgnLAogICAgICAgICAgICAgJ3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJh
aXRzLmgnLAogICAgICAgICAgICAgJ3N2Zy9wcm9wZXJ0aWVzL1NWR1N0YXRpY0xpc3RQcm9wZXJ0
eVRlYXJPZmYuaCcsCkBAIC02MDAyLDYgKzYwMDQsNyBAQAogICAgICAgICAgICAgJ3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oJywKICAgICAgICAgICAgICdzdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcCcsCiAgICAgICAgICAgICAnc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oJywKKyAgICAgICAgICAgICdzdmcvcHJvcGVydGllcy9T
VkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcCcsCiAgICAgICAgICAgICAnc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oJywKICAgICAgICAgICAg
ICdzdmcvcHJvcGVydGllcy9TVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAnLAogICAg
ICAgICAgICAgJ3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcCcsCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnBybwkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
bwkod29ya2luZyBjb3B5KQpAQCAtMjMwMCw2ICsyMzAwLDcgQEAgSEVBREVSUyArPSBcCiAgICAg
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oIFwKICAgICBzdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGaWx0ZXIuaCBcCiAgICAgc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggXAor
ICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCBcCiAgICAgc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZi5oIFwKICAg
ICBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCBcCiAgICAg
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oIFwK
QEAgLTIzMTQsNiArMjMxNSw3IEBAIEhFQURFUlMgKz0gXAogICAgIHN2Zy9wcm9wZXJ0aWVzL1NW
R0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCBcCiAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHUGF0aFNlZ0xp
c3RQcm9wZXJ0eVRlYXJPZmYuaCBcCiAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHkuaCBc
CisgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmggXAogICAgIHN2Zy9wcm9wZXJ0
aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5oIFwKICAgICBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0
eVRyYWl0cy5oIFwKICAgICBzdmcvcHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFy
T2ZmLmggXApAQCAtMzI2Myw2ICszMjY1LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NW
Rz0xKSB7CiAgICAgICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAgXAogICAg
ICAgICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcCBcCiAgICAgICAg
IHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgXAorICAgICAgICBzdmcvcHJvcGVydGllcy9TVkdB
dHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcCBcCiAgICAgICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR1Bh
dGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmNwcAogCiAgICAgbGludXgtZysrKjpDT05GSUcoZGVi
dWcsIGRlYnVnfHJlbGVhc2UpOmlzRXF1YWwoUVRfQVJDSCxpMzg2KSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gOTA2NjYp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNjY0NzMsNiArNjY0NzMsMTQgQEAKIAkJCQlOYW1lPSJwcm9wZXJ0aWVzIgog
CQkJCT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xwcm9wZXJ0aWVzXFNW
R0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXHByb3BlcnRpZXNcU1ZHQXR0cmlidXRlVG9Q
cm9wZXJ0eU1hcC5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cc3ZnXHByb3BlcnRpZXNcU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5
VGVhck9mZi5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtNjY1MzMsNiArNjY1NDEsMTAgQEAK
IAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2
Z1xwcm9wZXJ0aWVzXFNWR1Byb3BlcnR5SW5mby5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJ
CTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXHByb3BlcnRpZXNcU1ZHUHJvcGVydHlU
ZWFyT2ZmLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA5MDY2NikKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtODgsNiArODgsNyBAQAogCQkwODE2NjhEQTEyNTYwM0Q1MDA2RjI1REUgLyog
U1ZHVGV4dExheW91dEVuZ2luZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDgxNjY4RDgxMjU2MDNENTAwNkYyNURFIC8qIFNWR1RleHRMYXlvdXRFbmdp
bmUuaCAqLzsgfTsKIAkJMDgxQUE4REExMTExMjM3RTAwMkFCMDZFIC8qIFNWR0VsZW1lbnRSYXJl
RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgx
QUE4RDkxMTExMjM3RTAwMkFCMDZFIC8qIFNWR0VsZW1lbnRSYXJlRGF0YS5oICovOyB9OwogCQkw
ODFDREZCRjEyNkVDRkU4MDBEMjE1Q0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXpl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxQ0RG
QkUxMjZFQ0ZFODAwRDIxNUNBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwODFERDQ5
QzEzQkExQTYwMDBEQzc2MjcgLyogU1ZHUHJvcGVydHlJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODFERDQ5QjEzQkExQTYwMDBEQzc2MjcgLyog
U1ZHUHJvcGVydHlJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMDgxRUJGM0EwRkQzNEY0MTAwREE3NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxRUJG
MzgwRkQzNEY0MTAwREE3NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIuY3BwICovOyB9OwogCQkwODFF
QkYzQjBGRDM0RjQxMDBEQTc1NTkgLyogU1ZHRmlsdGVyQnVpbGRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxRUJGMzkwRkQzNEY0MTAwREE3NTU5
IC8qIFNWR0ZpbHRlckJ1aWxkZXIuaCAqLzsgfTsKIAkJMDgyM0QxNTkxMjdBRDZBQzAwMEVCQzk1
IC8qIFNWR0FuaW1hdGVkSW50ZWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDgyM0QxNTgxMjdBRDZBQzAwMEVCQzk1IC8qIFNWR0FuaW1hdGVkSW50
ZWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xNzAsNiArMTcxLDggQEAKIAkJMDhGMEJGQzYxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRN
ZXRyaWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
OEYwQkZDMTEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dE1ldHJpY3MuaCAqLzsgfTsKIAkJMDhG
MkYwMDkxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMkYwMDcxMjEzRTYxNzAw
RENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwICovOyB9OwogCQkwOEYyRjAwQTEyMTNF
NjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJl
bmRlckltYWdlUmVzb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwOEZCMTdDMTEzQkM3RTkxMDAwNDAwODYgLyogU1ZHQXR0cmlidXRlVG9Q
cm9wZXJ0eU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwOEZCMTdDMDEzQkM3RTkxMDAwNDAwODYgLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1h
cC5jcHAgKi87IH07CisJCTA4RkIzRjg0MTNCQzc1NEMwMDk5RkMxOCAvKiBTVkdBdHRyaWJ1dGVU
b1Byb3BlcnR5TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwOEZCM0Y4MzEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1h
cC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4
RkUwQkM1MTI3RTJBQzEwMDBDNEZCNSAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RkUwQkM0
MTI3RTJBQzEwMDBDNEZCNSAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwOEZGMTAyMDEy
OTUwRjVBMDBGMDAyNzYgLyogU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGRjEwMUYxMjk1MEY1
OTAwRjAwMjc2IC8qIFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmNwcCAqLzsgfTsKIAkJ
MEE0ODQ0OTkwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRMaW5raW5nLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDgg
LyogU29mdExpbmtpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtNjQ1Nyw2ICs2NDYwLDcgQEAKIAkJMDgxNjY4RDgxMjU2MDNENTAwNkYyNURF
IC8qIFNWR1RleHRMYXlvdXRFbmdpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1ZHVGV4dExheW91dEVuZ2luZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
ODFBQThEOTExMTEyMzdFMDAyQUIwNkUgLyogU1ZHRWxlbWVudFJhcmVEYXRhLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0VsZW1lbnRSYXJlRGF0YS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwODFDREZCRTEyNkVDRkU4MDBEMjE1Q0EgLyogU1ZHQW5pbWF0
ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTA4MURENDlCMTNCQTFBNjAwMERDNzYyNyAvKiBTVkdQcm9wZXJ0eUluZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJvcGVydHlJbmZvLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MUVCRjM4MEZEMzRGNDEwMERBNzU1OSAvKiBTVkdG
aWx0ZXJCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNW
R0ZpbHRlckJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODFFQkYz
OTBGRDM0RjQxMDBEQTc1NTkgLyogU1ZHRmlsdGVyQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTVkdGaWx0ZXJCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA4MjNEMTU4MTI3QUQ2QUMwMDBFQkM5NSAvKiBTVkdBbmltYXRlZEludGVnZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRJbnRlZ2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NTUxLDYgKzY1NTUsOCBAQAogCQkwOEYw
QkZDMTEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dE1ldHJpY3MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHVGV4dE1ldHJpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDhGMkYwMDcxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVySW1hZ2VSZXNv
dXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RjJGMDA4MTIxM0U2MTcw
MERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbmRlckltYWdlUmVzb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDhGQjE3QzAxM0JDN0U5MTAwMDQwMDg2IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlN
YXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQXR0cmlidXRl
VG9Qcm9wZXJ0eU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4RkIzRjgz
MTNCQzc1NEMwMDk5RkMxOCAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGRTBCQzQxMjdFMkFDMTAwMEM0RkI1IC8qIFNW
R0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDhGRjEwMUYxMjk1MEY1OTAwRjAwMjc2IC8qIFNWR1BhdGhTZWdMaXN0
UHJvcGVydHlUZWFyT2ZmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEE0ODQ0OTgwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRMaW5raW5nLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvZnRMaW5raW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMjc1NCwxMSArMTI3NjAsMTQgQEAKIAkJCQkwODhBMERGRjEyNkVG
MURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJCQkwODUy
NUU2MjEyNzhDMDAxMDBBODQ3NzggLyogU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYu
aCAqLywKIAkJCQkwODVBMTU5MjEyODlBOEREMDAyNzEwRTMgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0UHJvcGVydHlUZWFyT2ZmLmggKi8sCisJCQkJMDhGQjE3QzAxM0JDN0U5MTAwMDQwMDg2
IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwICovLAorCQkJCTA4RkIzRjgzMTNCQzc1
NEMwMDk5RkMxOCAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmggKi8sCiAJCQkJMDgxMDc2
NDMxMjgyODU1NjAwN0M2M0JBIC8qIFNWR0xpc3RQcm9wZXJ0eS5oICovLAogCQkJCTA4OEEwRTAw
MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkJMDhG
RjEwMUYxMjk1MEY1OTAwRjAwMjc2IC8qIFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmNw
cCAqLywKIAkJCQkwODRBMDgyODEyOEQ3ODY3MDAyREIxRjEgLyogU1ZHUGF0aFNlZ0xpc3RQcm9w
ZXJ0eVRlYXJPZmYuaCAqLywKIAkJCQkwODhBMEUwMTEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJv
cGVydHkuaCAqLywKKwkJCQkwODFERDQ5QjEzQkExQTYwMDBEQzc2MjcgLyogU1ZHUHJvcGVydHlJ
bmZvLmggKi8sCiAJCQkJMDg4QTBFMDIxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VGVh
ck9mZi5oICovLAogCQkJCTA4OEEwRTAzMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRy
YWl0cy5oICovLAogCQkJCTA4ODBGNzBEMTI4MkI0NkQwMDk0ODUwNSAvKiBTVkdTdGF0aWNMaXN0
UHJvcGVydHlUZWFyT2ZmLmggKi8sCkBAIC0yMzEwMSw2ICsyMzExMCw4IEBACiAJCQkJMDg2Mzk1
MTYxM0I1RkU1NzAwQkIzNDREIC8qIFNWR0FuaW1hdGVkUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDMxQTJGOUMxM0I2RjJCMDAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxO
dW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QUJCNzg3MTNCOTA0QkMwMEYxOTdFMyAvKiBM
aW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBpbiBIZWFkZXJzICovLAorCQkJCTA4MURENDlDMTNC
QTFBNjAwMERDNzYyNyAvKiBTVkdQcm9wZXJ0eUluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTA4
RkIzRjg0MTNCQzc1NEMwMDk5RkMxOCAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4Mjg4OUI0RDEzQzYyMzkyMDA5QTYxNTYgLyogSW5zcGVjdG9yU3R5
bGVUZXh0RWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTI1ODY5LDYgKzI1ODgwLDcgQEAKIAkJCQk0MzFB
MkZENzEzQjc3MDdBMDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQzMUEzMDIxMTNCODlEQ0MwMDc3OTFFNCAvKiBTVkdBbmltYXRlZFByZXNl
cnZlQXNwZWN0UmF0aW8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDMxQTMwODgxM0I4Rjk3ODAw
Nzc5MUU0IC8qIFNWR0FuaW1hdGVkQm9vbGVhbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwOEZC
MTdDMTEzQkM3RTkxMDAwNDAwODYgLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0M0Y2RkQ5NjEzQkNEMEIxMDAyMjQwNTIgLyogU1ZHQW5pbWF0ZWRJ
bnRlZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgyODg5QjRDMTNDNjIzOTIwMDlBNjE1NiAv
KiBJbnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0JKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTI3MzcsOCArMjczNyw3IEBA
IHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICAgICAgICAgICAgICAkdmFsdWUgPSAiJHt0ZWFyT2Zm
VHlwZX06OmNyZWF0ZShpbXAsICR2YWx1ZSwgJHVwZGF0ZU1ldGhvZCkiOwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2lmICgkdGVhck9mZlR5cGUgPX4gL1NWR1N0YXRpY0xpc3RQcm9wZXJ0
eVRlYXJPZmYvKSB7Ci0gICAgICAgICAgICBteSAkZXh0cmFJbXAgPSAiR2V0T3duZXJFbGVtZW50
Rm9yVHlwZTwkaW1wbENsYXNzTmFtZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8JGltcGxDbGFz
c05hbWU+Ojp2YWx1ZT46Om93bmVyRWxlbWVudChpbXApLCAiOwotICAgICAgICAgICAgJHZhbHVl
ID0gIiR7dGVhck9mZlR5cGV9OjpjcmVhdGUoJGV4dHJhSW1wJHZhbHVlKSI7CisgICAgICAgICAg
ICAkdmFsdWUgPSAiJHt0ZWFyT2ZmVHlwZX06OmNyZWF0ZShpbXAsICR2YWx1ZSkiOwogICAgICAg
ICB9IGVsc2lmIChub3QgJHRlYXJPZmZUeXBlID1+IC9TVkcoUG9pbnR8UGF0aFNlZylMaXN0Lykg
ewogICAgICAgICAgICAgJHZhbHVlID0gIiR7dGVhck9mZlR5cGV9OjpjcmVhdGUoJHZhbHVlKSI7
CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvck9iakMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzE2LDggKzEzMTYsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gImtpdChXVEY6OmdldFB0cigk
Z2V0dGVyQ29udGVudEhlYWQiOwogICAgICAgICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRl
bnRUYWlsIC49ICIpKSI7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRpZGxUeXBlV2l0
aE5hbWVzcGFjZSA9fiAvU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi8pIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG15ICRleHRyYUltcCA9ICJXZWJDb3JlOjpHZXRPd25lckVsZW1lbnRG
b3JUeXBlPCRpbXBsQ2xhc3NOYW1lV2l0aE5hbWVzcGFjZSwgV2ViQ29yZTo6SXNEZXJpdmVkRnJv
bVNWR0VsZW1lbnQ8JGltcGxDbGFzc05hbWVXaXRoTmFtZXNwYWNlPjo6dmFsdWU+Ojpvd25lckVs
ZW1lbnQoSU1QTCksICI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhl
YWQgPSAia2l0KFdURjo6Z2V0UHRyKCR7aWRsVHlwZVdpdGhOYW1lc3BhY2V9OjpjcmVhdGUoJGV4
dHJhSW1wJGdldHRlckNvbnRlbnRIZWFkIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICRnZXR0
ZXJDb250ZW50SGVhZCA9ICJraXQoV1RGOjpnZXRQdHIoJHtpZGxUeXBlV2l0aE5hbWVzcGFjZX06
OmNyZWF0ZShJTVBMLCAkZ2V0dGVyQ29udGVudEhlYWQiOwogICAgICAgICAgICAgICAgICAgICAg
ICAgJGdldHRlckNvbnRlbnRUYWlsIC49ICIpKSkiOwogICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gImtpdChX
VEY6OmdldFB0cigke2lkbFR5cGVXaXRoTmFtZXNwYWNlfTo6Y3JlYXRlKCRnZXR0ZXJDb250ZW50
SGVhZCI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbQkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkod29ya2luZyBjb3B5KQpAQCAtOTAyLDgg
KzkwMiw3IEBAIEVORAogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIg
ICAgcmV0dXJuIHRvVjgoV1RGOjpnZXRQdHIoJHt0ZWFyT2ZmVHlwZX06OmNyZWF0ZShpbXAsICRy
ZXN1bHQsICR1cGRhdGVNZXRob2QpKSk7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNpZiAoJHRlYXJPZmZUeXBlID1+IC9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLykgewot
ICAgICAgICAgICAgbXkgJGV4dHJhSW1wID0gIkdldE93bmVyRWxlbWVudEZvclR5cGU8JGltcGxD
bGFzc05hbWUsIElzRGVyaXZlZEZyb21TVkdFbGVtZW50PCRpbXBsQ2xhc3NOYW1lPjo6dmFsdWU+
Ojpvd25lckVsZW1lbnQoaW1wKSwgIjsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVj
bHMsICIgICAgcmV0dXJuIHRvVjgoV1RGOjpnZXRQdHIoJHt0ZWFyT2ZmVHlwZX06OmNyZWF0ZSgk
ZXh0cmFJbXAkcmVzdWx0KSkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERl
Y2xzLCAiICAgIHJldHVybiB0b1Y4KFdURjo6Z2V0UHRyKCR7dGVhck9mZlR5cGV9OjpjcmVhdGUo
aW1wLCAkcmVzdWx0KSkpO1xuIik7CiAgICAgICAgIH0gZWxzaWYgKCR0ZWFyT2ZmVHlwZSA9fiAv
U1ZHKFBvaW50fFBhdGhTZWcpTGlzdC8pIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICIgICAgcmV0dXJuIHRvVjgoV1RGOjpnZXRQdHIoJHJlc3VsdCkpO1xuIik7CiAgICAg
ICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAJKHJldmlzaW9u
IDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTMsMTAgKzUzLDE5IEBAIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHQUVsZW1l
bnQsIFNWR04KIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHQUVsZW1lbnQsIFhMaW5rTmFtZXM6
OmhyZWZBdHRyLCBIcmVmLCBocmVmKQogREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHQUVsZW1l
bnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKIAorQkVHSU5fUkVHSVNU
RVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdBRWxlbWVudCkKKyAgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoc3ZnVGFyZ2V0KQorICAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShocmVmKQorICAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICAgUkVHSVNURVJf
UEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5JTUFU
RURfUFJPUEVSVElFUworCiBpbmxpbmUgU1ZHQUVsZW1lbnQ6OlNWR0FFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKFNWR05hbWVzOjphVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRp
ZXNGb3JTVkdBRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0FFbGVtZW50PiBTVkdBRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKQEAgLTEzMiw2MCArMTQxLDYgQEAgdm9pZCBTVkdBRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChjbwogICAgIH0KIH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0FF
bGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwot
fQotCi12b2lkIFNWR0FFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQot
ewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRhcmdldEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1h
dGVkU3RyaW5nKTsKLX0KLQotdm9pZCBTVkdBRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55
UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVNWR1RhcmdldCgpOwotICAgICAgICBzeW5j
aHJvbml6ZUhyZWYoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0
ck5hbWUpOwotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25p
emVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
IWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRhcmdldEF0
dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVTVkdUYXJnZXQoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQ
cm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCiBSZW5kZXJPYmplY3QqIFNWR0FFbGVtZW50Ojpj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICBp
ZiAoc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KHBhcmVudE5vZGUoKSktPmlzVGV4dENvbnRlbnQo
KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCShyZXZpc2lvbiA5MDY2NikKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMCAr
NTEsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwotCi0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCkBAIC02NywxNyAr
NjMsMTggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKE5vZGUqKSBjb25zdDsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0
aW9ucwotCi0gICAgLy8gVGhpcyBkZWNsYXJhdGlvbiB1c2VkIHRvIGRlZmluZSBhIG5vbi12aXJ0
dWFsICJTdHJpbmcmIHRhcmdldCgpIGNvbnN0IiBtZXRob2QsIHRoYXQgY2xhc2hlcyB3aXRoICJ2
aXJ0dWFsIFN0cmluZyBFbGVtZW50Ojp0YXJnZXQoKSBjb25zdCIuCi0gICAgLy8gVGhhdCdzIHdo
eSBpdCBoYXMgYmVlbiByZW5hbWVkIHRvICJzdmdUYXJnZXQiLCB0aGUgQ29kZUdlbmVyYXRvcnMg
dGFrZSBjYXJlIG9mIGNhbGxpbmcgc3ZnVGFyZ2V0QW5pbWF0ZWQoKSBpbnN0ZWFkIG9mIHRhcmdl
dEFuaW1hdGVkKCksIHNlZSBDb2RlR2VuZXJhdG9yLnBtLgotICAgIERFQ0xBUkVfQU5JTUFURURf
U1RSSU5HKFNWR1RhcmdldCwgc3ZnVGFyZ2V0KQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJ
Tl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQUVsZW1lbnQpCisgICAgICAgIC8vIFRo
aXMgZGVjbGFyYXRpb24gdXNlZCB0byBkZWZpbmUgYSBub24tdmlydHVhbCAiU3RyaW5nJiB0YXJn
ZXQoKSBjb25zdCIgbWV0aG9kLCB0aGF0IGNsYXNoZXMgd2l0aCAidmlydHVhbCBTdHJpbmcgRWxl
bWVudDo6dGFyZ2V0KCkgY29uc3QiLgorICAgICAgICAvLyBUaGF0J3Mgd2h5IGl0IGhhcyBiZWVu
IHJlbmFtZWQgdG8gInN2Z1RhcmdldCIsIHRoZSBDb2RlR2VuZXJhdG9ycyB0YWtlIGNhcmUgb2Yg
Y2FsbGluZyBzdmdUYXJnZXRBbmltYXRlZCgpIGluc3RlYWQgb2YgdGFyZ2V0QW5pbWF0ZWQoKSwg
c2VlIENvZGVHZW5lcmF0b3IucG0uCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKFNW
R1RhcmdldCwgc3ZnVGFyZ2V0KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVm
LCBocmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBz
eW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVp
cmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJl
ZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0
aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBT
VkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxl
bWVudC5jcHAJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEds
eXBoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEzICszMywxOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucworLy8g
QW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZH
QWx0R2x5cGhFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKIAorQkVH
SU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdBbHRHbHlwaEVsZW1lbnQpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAgICBSRUdJU1RFUl9QQVJF
TlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KQorRU5EX1JF
R0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKKwogaW5saW5lIFNWR0FsdEdseXBoRWxlbWVudDo6
U1ZHQWx0R2x5cGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKICAgICA6IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFsdEdseXBoVGFnKSk7
CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdBbHRHbHlwaEVsZW1lbnQoKTsK
IH0KIAogUGFzc1JlZlB0cjxTVkdBbHRHbHlwaEVsZW1lbnQ+IFNWR0FsdEdseXBoRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
QEAgLTQ3LDI4ICs1Myw2IEBAIFBhc3NSZWZQdHI8U1ZHQWx0R2x5cGhFbGVtZW50PiBTVkdBbHRH
bHkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0FsdEdseXBoRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkpOwogfQogCi12b2lkIFNWR0FsdEdseXBoRWxlbWVudDo6c3luY2hyb25pemVQcm9w
ZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBTVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLQotICAgIGlmIChh
dHRyTmFtZSA9PSBhbnlRTmFtZSgpIHx8IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpCi0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotfQotCi1BdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgU1ZHQWx0R2x5cGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBz
X2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0FsdEdseXBoRWxlbWVu
dDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6
ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6
aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQogdm9pZCBTVkdBbHRHbHlwaEVsZW1lbnQ6
OnNldEdseXBoUmVmKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIGVjID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE4ICs0
NSwxMiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0FsdEdseXBoRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCiAgICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUq
KTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29u
c3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLQotICAgIC8vIFNW
R1VSSVJlZmVyZW5jZQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCisg
ICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0FsdEdseXBoRWxlbWVudCkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKKyAgICBFTkRfREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAJKHJldmlzaW9uIDkw
NjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNWR0FuaW1h
dGVFbGVtZW50OjpTVkdBbmltYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdBbmltYXRpb25FbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KQotICAgICwgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUoQW5pbWF0ZWRTdHJpbmcp
CisgICAgLCBtX2FuaW1hdGVkUHJvcGVydHlUeXBlKEFuaW1hdGVkU3RyaW5nKQogICAgICwgbV9m
cm9tUHJvcGVydHlWYWx1ZVR5cGUoUmVndWxhclByb3BlcnR5VmFsdWUpCiAgICAgLCBtX3RvUHJv
cGVydHlWYWx1ZVR5cGUoUmVndWxhclByb3BlcnR5VmFsdWUpCiB7CkBAIC0xMDksMTQgKzEwOSwx
OSBAQCBib29sIFNWR0FuaW1hdGVFbGVtZW50OjpoYXNWYWxpZEF0dHJpYnV0CiAgICAgaWYgKCF0
YXJnZXRFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcmV0dXJuIGRl
dGVybWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZSh0YXJnZXRFbGVtZW50KSAhPSBBbmltYXRlZFVu
a25vd247CisgICAgcmV0dXJuIGRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKHRhcmdldEVs
ZW1lbnQpICE9IEFuaW1hdGVkVW5rbm93bjsKIH0KIAotQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIFNW
R0FuaW1hdGVFbGVtZW50OjpkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUoU1ZHRWxlbWVu
dCogdGFyZ2V0RWxlbWVudCkgY29uc3QKK0FuaW1hdGVkUHJvcGVydHlUeXBlIFNWR0FuaW1hdGVF
bGVtZW50OjpkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZShTVkdFbGVtZW50KiB0YXJnZXRF
bGVtZW50KSBjb25zdAogewogICAgIEFTU0VSVCh0YXJnZXRFbGVtZW50KTsKIAotICAgIEFuaW1h
dGVkQXR0cmlidXRlVHlwZSB0eXBlID0gdGFyZ2V0RWxlbWVudC0+YW5pbWF0ZWRQcm9wZXJ0eVR5
cGVGb3JBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSgpKTsKKyAgICBWZWN0b3I8QW5pbWF0ZWRQcm9w
ZXJ0eVR5cGU+IHByb3BlcnR5VHlwZXM7CisgICAgdGFyZ2V0RWxlbWVudC0+YW5pbWF0ZWRQcm9w
ZXJ0eVR5cGVGb3JBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSgpLCBwcm9wZXJ0eVR5cGVzKTsKKyAg
ICBpZiAocHJvcGVydHlUeXBlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBBbmltYXRlZFVu
a25vd247CisKKyAgICBBbmltYXRlZFByb3BlcnR5VHlwZSB0eXBlID0gcHJvcGVydHlUeXBlc1sw
XTsKICAgICBpZiAoaGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZUNvbG9yVGFnKSAmJiB0eXBl
ICE9IEFuaW1hdGVkQ29sb3IpCiAgICAgICAgIHJldHVybiBBbmltYXRlZFVua25vd247CiAKQEAg
LTE0Miw3ICsxNDcsNyBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpkZXRlcm1pbmVQcm9wZXJ0
CiAgICAgaWYgKGluaGVyaXRzRnJvbVByb3BlcnR5KHRhcmdldEVsZW1lbnQsIGF0dHJpYnV0ZU5h
bWUoKSwgdG8pKQogICAgICAgICBtX3RvUHJvcGVydHlWYWx1ZVR5cGUgPSBJbmhlcml0VmFsdWU7
CiAKLSAgICBpZiAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgIT0gQW5pbWF0ZWRDb2xvcikKKyAg
ICBpZiAobV9hbmltYXRlZFByb3BlcnR5VHlwZSAhPSBBbmltYXRlZENvbG9yKQogICAgICAgICBy
ZXR1cm47CiAgICAgCiAgICAgaWYgKGF0dHJpYnV0ZVZhbHVlSXNDdXJyZW50Q29sb3IoZnJvbSkp
CkBAIC0xNTUsMTYgKzE2MCwxNiBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVB
bmltYXRlCiB7CiAgICAgQVNTRVJUKHJlc3VsdEVsZW1lbnQpOwogICAgIEFTU0VSVChwZXJjZW50
YWdlID49IDAgJiYgcGVyY2VudGFnZSA8PSAxKTsKLSAgICBBU1NFUlQobV9hbmltYXRlZEF0dHJp
YnV0ZVR5cGUgIT0gQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgQVNTRVJUKG1fYW5pbWF0ZWRB
dHRyaWJ1dGVUeXBlICE9IEFuaW1hdGVkVHJhbnNmb3JtTGlzdCk7Ci0gICAgQVNTRVJUKG1fYW5p
bWF0ZWRBdHRyaWJ1dGVUeXBlICE9IEFuaW1hdGVkVW5rbm93bik7CisgICAgQVNTRVJUKG1fYW5p
bWF0ZWRQcm9wZXJ0eVR5cGUgIT0gQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAgQVNTRVJUKG1f
YW5pbWF0ZWRQcm9wZXJ0eVR5cGUgIT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KTsKKyAgICBBU1NF
UlQobV9hbmltYXRlZFByb3BlcnR5VHlwZSAhPSBBbmltYXRlZFVua25vd24pOwogICAgIEFTU0VS
VChtX2FuaW1hdG9yKTsKICAgICBBU1NFUlQobV9mcm9tVHlwZSk7CiAgICAgQVNTRVJUKG1fdG9U
eXBlKTsKIAogICAgIFNWR0FuaW1hdGVFbGVtZW50KiByZXN1bHRBbmltYXRpb25FbGVtZW50ID0g
c3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVsZW1lbnQqPihyZXN1bHRFbGVtZW50KTsKICAgICBBU1NF
UlQocmVzdWx0QW5pbWF0aW9uRWxlbWVudC0+bV9hbmltYXRlZFR5cGUpOwotICAgIEFTU0VSVChy
ZXN1bHRBbmltYXRpb25FbGVtZW50LT5tX2FuaW1hdGVkQXR0cmlidXRlVHlwZSA9PSBtX2FuaW1h
dGVkQXR0cmlidXRlVHlwZSk7CisgICAgQVNTRVJUKHJlc3VsdEFuaW1hdGlvbkVsZW1lbnQtPm1f
YW5pbWF0ZWRQcm9wZXJ0eVR5cGUgPT0gbV9hbmltYXRlZFByb3BlcnR5VHlwZSk7CiAgICAgQVNT
RVJUKHJlc3VsdEFuaW1hdGlvbkVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVU
YWcpCiAgICAgICAgIHx8IHJlc3VsdEFuaW1hdGlvbkVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OmFuaW1hdGVDb2xvclRhZykgCiAgICAgICAgIHx8IHJlc3VsdEFuaW1hdGlvbkVsZW1lbnQt
Pmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnNldFRhZykpOwpAQCAtMTg3LDcgKzE5Miw3IEBAIGJvb2wg
U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmQKICAgICBpZiAoIXRhcmdldEVsZW1l
bnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBl
ID0gZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKHRhcmdldEVsZW1lbnQpOworICAgIG1f
YW5pbWF0ZWRQcm9wZXJ0eVR5cGUgPSBkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0YXJn
ZXRFbGVtZW50KTsKIAogICAgIGVuc3VyZUFuaW1hdG9yKCktPmNhbGN1bGF0ZUZyb21BbmRUb1Zh
bHVlcyhtX2Zyb21UeXBlLCBtX3RvVHlwZSwgZnJvbVN0cmluZywgdG9TdHJpbmcpOwogICAgIHJl
dHVybiB0cnVlOwpAQCAtMjAwLDcgKzIwNSw3IEBAIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNh
bGN1bGF0ZUZyb21BbmQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQVNTRVJUKCFoYXNU
YWdOYW1lKFNWR05hbWVzOjpzZXRUYWcpKTsKLSAgICBtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSA9
IGRldGVybWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZSh0YXJnZXRFbGVtZW50KTsKKyAgICBtX2Fu
aW1hdGVkUHJvcGVydHlUeXBlID0gZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUodGFyZ2V0
RWxlbWVudCk7CiAKICAgICBlbnN1cmVBbmltYXRvcigpLT5jYWxjdWxhdGVGcm9tQW5kQnlWYWx1
ZXMobV9mcm9tVHlwZSwgbV90b1R5cGUsIGZyb21TdHJpbmcsIGJ5U3RyaW5nKTsKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTIxMCw3ICsyMTUsNyBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpyZXNl
dFRvQmFzZVZhbHVlCiB7CiAgICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRh
cmdldEVsZW1lbnQoKTsKICAgICBBU1NFUlQodGFyZ2V0RWxlbWVudCk7Ci0gICAgbV9hbmltYXRl
ZEF0dHJpYnV0ZVR5cGUgPSBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0RWxl
bWVudCk7CisgICAgbV9hbmltYXRlZFByb3BlcnR5VHlwZSA9IGRldGVybWluZUFuaW1hdGVkUHJv
cGVydHlUeXBlKHRhcmdldEVsZW1lbnQpOwogCiAgICAgaWYgKCFtX2FuaW1hdGVkVHlwZSkKICAg
ICAgICAgbV9hbmltYXRlZFR5cGUgPSBlbnN1cmVBbmltYXRvcigpLT5jb25zdHJ1Y3RGcm9tU3Ry
aW5nKGJhc2VTdHJpbmcpOwpAQCAtMjIwLDkgKzIyNSw5IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1l
bnQ6OnJlc2V0VG9CYXNlVmFsdWUKICAgICAKIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmFwcGx5
UmVzdWx0c1RvVGFyZ2V0KCkKIHsKLSAgICBBU1NFUlQobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUg
IT0gQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgQVNTRVJUKG1fYW5pbWF0ZWRBdHRyaWJ1dGVU
eXBlICE9IEFuaW1hdGVkVHJhbnNmb3JtTGlzdCk7Ci0gICAgQVNTRVJUKG1fYW5pbWF0ZWRBdHRy
aWJ1dGVUeXBlICE9IEFuaW1hdGVkVW5rbm93bik7CisgICAgQVNTRVJUKG1fYW5pbWF0ZWRQcm9w
ZXJ0eVR5cGUgIT0gQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAgQVNTRVJUKG1fYW5pbWF0ZWRQ
cm9wZXJ0eVR5cGUgIT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KTsKKyAgICBBU1NFUlQobV9hbmlt
YXRlZFByb3BlcnR5VHlwZSAhPSBBbmltYXRlZFVua25vd24pOwogICAgIEFTU0VSVChtX2FuaW1h
dGVkVHlwZSk7CiAKICAgICBzZXRUYXJnZXRBdHRyaWJ1dGVBbmltYXRlZFZhbHVlKG1fYW5pbWF0
ZWRUeXBlLT52YWx1ZUFzU3RyaW5nKCkpOwpAQCAtMjM0LDcgKzIzOSw3IEBAIGZsb2F0IFNWR0Fu
aW1hdGVFbGVtZW50OjpjYWxjdWxhdGVEaXN0YW4KICAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVt
ZW50ID0gdGhpcy0+dGFyZ2V0RWxlbWVudCgpOwogICAgIGlmICghdGFyZ2V0RWxlbWVudCkKICAg
ICAgICAgcmV0dXJuIC0xOwotICAgIG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlID0gZGV0ZXJtaW5l
QW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKHRhcmdldEVsZW1lbnQpOworICAgIG1fYW5pbWF0ZWRQcm9w
ZXJ0eVR5cGUgPSBkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZSh0YXJnZXRFbGVtZW50KTsK
ICAgICAKICAgICByZXR1cm4gZW5zdXJlQW5pbWF0b3IoKS0+Y2FsY3VsYXRlRGlzdGFuY2UoZnJv
bVN0cmluZywgdG9TdHJpbmcpOwogfQpAQCAtMjQyLDcgKzI0Nyw3IEBAIGZsb2F0IFNWR0FuaW1h
dGVFbGVtZW50OjpjYWxjdWxhdGVEaXN0YW4KIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yKiBTVkdB
bmltYXRlRWxlbWVudDo6ZW5zdXJlQW5pbWF0b3IoKQogewogICAgIGlmICghbV9hbmltYXRvcikK
LSAgICAgICAgbV9hbmltYXRvciA9IFNWR0FuaW1hdG9yRmFjdG9yeTo6Y3JlYXRlKHRoaXMsIHRh
cmdldEVsZW1lbnQoKSwgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUpOworICAgICAgICBtX2FuaW1h
dG9yID0gU1ZHQW5pbWF0b3JGYWN0b3J5OjpjcmVhdGUodGhpcywgdGFyZ2V0RWxlbWVudCgpLCBt
X2FuaW1hdGVkUHJvcGVydHlUeXBlKTsKICAgICByZXR1cm4gbV9hbmltYXRvci5nZXQoKTsKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgJKHJldmlzaW9uIDkw
NjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGFkanVzdEZv
ckN1cnJlbnRDb2xvcihTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBDb2xvciYpOwogICAgIHZv
aWQgYWRqdXN0Rm9ySW5oZXJpdGFuY2UoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIFN0cmluZyYgdmFsdWUpOwogICAgIAotICAgIEFuaW1hdGVkQXR0cmli
dXRlVHlwZSBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUoU1ZHRWxlbWVudCopIGNvbnN0
OworICAgIEFuaW1hdGVkUHJvcGVydHlUeXBlIGRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBl
KFNWR0VsZW1lbnQqKSBjb25zdDsKICAgICB2b2lkIGRldGVybWluZVByb3BlcnR5VmFsdWVUeXBl
cyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKICAgICAKICAgICBBbmltYXRlZFByb3Bl
cnR5VmFsdWVUeXBlIGZyb21Qcm9wZXJ0eVZhbHVlVHlwZSgpIHsgcmV0dXJuIG1fZnJvbVByb3Bl
cnR5VmFsdWVUeXBlOyB9CkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgU1ZHQW5pbWF0
ZWRUeXBlQW5pbWF0b3IqIGVuc3VyZUFuaW1hdG9yKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29s
IGhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpIGNvbnN0OwotICAgIEFuaW1hdGVkQXR0cmlidXRlVHlw
ZSBtX2FuaW1hdGVkQXR0cmlidXRlVHlwZTsKKyAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBtX2Fu
aW1hdGVkUHJvcGVydHlUeXBlOwogCiAgICAgQW5pbWF0ZWRQcm9wZXJ0eVZhbHVlVHlwZSBtX2Zy
b21Qcm9wZXJ0eVZhbHVlVHlwZTsKICAgICBBbmltYXRlZFByb3BlcnR5VmFsdWVUeXBlIG1fdG9Q
cm9wZXJ0eVZhbHVlVHlwZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJh
bnNmb3JtRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NiwxOCArNjYsMjEgQEAgYm9vbCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aGFzVmFs
aQogICAgIGlmICghdGFyZ2V0RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAot
ICAgIHJldHVybiBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVudCkg
PT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0OworICAgIHJldHVybiBkZXRlcm1pbmVBbmltYXRlZFBy
b3BlcnR5VHlwZSh0YXJnZXRFbGVtZW50KSA9PSBBbmltYXRlZFRyYW5zZm9ybUxpc3Q7CiB9CiAK
LUFuaW1hdGVkQXR0cmlidXRlVHlwZSBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6ZGV0ZXJt
aW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIGNvbnN0
CitBbmltYXRlZFByb3BlcnR5VHlwZSBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6ZGV0ZXJt
aW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgY29uc3QK
IHsKICAgICBBU1NFUlQodGFyZ2V0RWxlbWVudCk7CiAgICAgCiAgICAgLy8gSnVzdCB0cmFuc2Zv
cm0gbGlzdHMgY2FuIGJlIGFuaW1hdGVkIHdpdGggPGFuaW1hdGVUcmFuc2Zvcm0+CiAgICAgLy8g
aHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2FuaW1hdGUuaHRtbCNBbmltYXRpb25BdHRyaWJ1dGVz
QW5kUHJvcGVydGllcwotICAgIGlmICh0YXJnZXRFbGVtZW50LT5hbmltYXRlZFByb3BlcnR5VHlw
ZUZvckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKCkpICE9IEFuaW1hdGVkVHJhbnNmb3JtTGlzdCkK
KyAgICBWZWN0b3I8QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+IHByb3BlcnR5VHlwZXM7CisgICAgdGFy
Z2V0RWxlbWVudC0+YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUoYXR0cmlidXRlTmFt
ZSgpLCBwcm9wZXJ0eVR5cGVzKTsKKyAgICBpZiAocHJvcGVydHlUeXBlcy5pc0VtcHR5KCkgfHwg
cHJvcGVydHlUeXBlc1swXSAhPSBBbmltYXRlZFRyYW5zZm9ybUxpc3QpCiAgICAgICAgIHJldHVy
biBBbmltYXRlZFVua25vd247CiAKKyAgICBBU1NFUlQocHJvcGVydHlUeXBlcy5zaXplKCkgPT0g
MSk7CiAgICAgcmV0dXJuIEFuaW1hdGVkVHJhbnNmb3JtTGlzdDsKIH0KIApAQCAtMTMxLDcgKzEz
NCw3IEBAIHN0YXRpYyBTVkdUcmFuc2Zvcm1MaXN0KiB0cmFuc2Zvcm1MaXN0Rm8KIHZvaWQgU1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUoY29uc3QgU3RyaW5nJiBi
YXNlVmFsdWUpCiB7CiAgICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdl
dEVsZW1lbnQoKTsKLSAgICBpZiAoIXRhcmdldEVsZW1lbnQgfHwgZGV0ZXJtaW5lQW5pbWF0ZWRB
dHRyaWJ1dGVUeXBlKHRhcmdldEVsZW1lbnQpID09IEFuaW1hdGVkVW5rbm93bikKKyAgICBpZiAo
IXRhcmdldEVsZW1lbnQgfHwgZGV0ZXJtaW5lQW5pbWF0ZWRQcm9wZXJ0eVR5cGUodGFyZ2V0RWxl
bWVudCkgPT0gQW5pbWF0ZWRVbmtub3duKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhN
RTogVGhpcyBtaWdodCBub3QgYmUgY29ycmVjdCBmb3IgYWNjdW11bGF0ZWQgc3VtLiBOZWVkcyBj
aGVja2luZy4KQEAgLTE1NCw3ICsxNTcsNyBAQCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVt
ZW50OjpyZXNldFRvCiB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpjYWxjdWxhdGVB
bmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdCwgU1ZHU01JTEVs
ZW1lbnQqKQogewogICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJnZXRF
bGVtZW50KCk7Ci0gICAgaWYgKCF0YXJnZXRFbGVtZW50IHx8IGRldGVybWluZUFuaW1hdGVkQXR0
cmlidXRlVHlwZSh0YXJnZXRFbGVtZW50KSA9PSBBbmltYXRlZFVua25vd24pCisgICAgaWYgKCF0
YXJnZXRFbGVtZW50IHx8IGRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKHRhcmdldEVsZW1l
bnQpID09IEFuaW1hdGVkVW5rbm93bikKICAgICAgICAgcmV0dXJuOwogICAgIFNWR1RyYW5zZm9y
bUxpc3QqIHRyYW5zZm9ybUxpc3QgPSB0cmFuc2Zvcm1MaXN0Rm9yKHRhcmdldEVsZW1lbnQpOwog
ICAgIEFTU0VSVCh0cmFuc2Zvcm1MaXN0KTsKQEAgLTIwMyw3ICsyMDYsNyBAQCBTVkdUcmFuc2Zv
cm0gU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6CiB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1F
bGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCgpCiB7CiAgICAgU1ZHRWxlbWVudCogdGFyZ2V0
RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKLSAgICBpZiAoIXRhcmdldEVsZW1lbnQg
fHwgZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKHRhcmdldEVsZW1lbnQpID09IEFuaW1h
dGVkVW5rbm93bikKKyAgICBpZiAoIXRhcmdldEVsZW1lbnQgfHwgZGV0ZXJtaW5lQW5pbWF0ZWRQ
cm9wZXJ0eVR5cGUodGFyZ2V0RWxlbWVudCkgPT0gQW5pbWF0ZWRVbmtub3duKQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBXZSBhY2N1bXVsYXRlIHRvIHRoZSB0YXJnZXQgZWxlbWVudCB0cmFu
c2Zvcm0gbGlzdCBzbyB0aGVyZSBpcyBub3QgbXVjaCB0byBkbyBoZXJlLgpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgJKHJldmlzaW9u
IDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdBbmlt
YXRlVHJhbnNmb3JtRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAg
ICAKICAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsaWRBdHRyaWJ1dGVUeXBlKCkgY29uc3Q7Ci0gICAg
QW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIGRldGVybWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZShTVkdF
bGVtZW50KikgY29uc3Q7CisgICAgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgZGV0ZXJtaW5lQW5pbWF0
ZWRQcm9wZXJ0eVR5cGUoU1ZHRWxlbWVudCopIGNvbnN0OwogCiAgICAgYm9vbCBpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkQW5nbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRBbmdsZS5oCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZEFuZ2xlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgdHlwZWRlZiBT
VkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxTVkdBbgogREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
WShTVkdBbmltYXRlZEFuZ2xlLCBTVkdBbmdsZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0
eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfQU5HTEVfTVVMVElQTEVfV1JBUFBFUlMoT3du
ZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFVwcGVyUHJv
cGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5
cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgU1ZHQW5pbWF0ZWRB
bmdsZSwgU1ZHQW5nbGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCitERUZJTkVfQU5J
TUFURURfUFJPUEVSVFkoQW5pbWF0ZWRBbmdsZSwgT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNW
R0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAK
ICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5oCShyZXZpc2lvbiA5MDY2
NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsOSArMzMsOCBAQCB0eXBlZGVmIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlU
ZWFyT2ZmCiBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkQm9vbGVhbiwgYm9v
bCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFU
RURfQk9PTEVBTihPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQ
cm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmli
dXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVkQm9vbGVhbiwgYm9vbCwg
VXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShB
bmltYXRlZEJvb2xlYW4sIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9j
YWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKLSAgICAKICNpZiBFTkFC
TEUoU1ZHX0FOSU1BVElPTikKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uaAkocmV2aXNpb24gOTA2
NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMywxMCArMzMsNyBAQCB0eXBlZGVmIFNWR0FuaW1hdGVkU3RhdGljUHJv
cGVydHlUZWFyT2ZmCiBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkRW51bWVy
YXRpb25Qcm9wZXJ0eVRlYXJPZmY8RW51bVR5cGU+LCBFbnVtVHlwZSwgVXBwZXJQcm9wZXJ0eSwg
TG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oT3du
ZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHksIEVudW1U
eXBlKSBcCi1ERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUs
IERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5
VGVhck9mZjxFbnVtVHlwZT4sIEVudW1UeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5
KQotCi0jZGVmaW5lIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTl9NVUxUSVBMRV9XUkFQUEVS
UyhPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgVXBw
ZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSwgRW51bVR5cGUpIFwKLURFRklORV9BTklNQVRFRF9Q
Uk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmll
ciwgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZjxFbnVtVHlwZT4sIEVudW1U
eXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRZKEFuaW1hdGVkRW51bWVyYXRpb24sIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRy
aWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
SW50ZWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZElu
dGVnZXIuaAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRJbnRlZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICszNCwxMSBAQCB0eXBlZGVmIFNW
R0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmCiBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZ
KFNWR0FuaW1hdGVkSW50ZWdlciwgbG9uZywgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkK
IAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfSU5URUdFUihPd25lclR5cGUsIERPTUF0dHJpYnV0
ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNW
R0FuaW1hdGVkSW50ZWdlciwgbG9uZywgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RF
RklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZEludGVnZXIsIE93bmVyVHlwZSwgRE9NQXR0
cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJv
cGVydHkpCiAKKy8vIEZJWE1FOiBUaGlzIGN1cnJlbnRseSBhbmltYXRlcyBhcyBudW1iZXItb3B0
aW9uYWwtbnVtYmVyLCBpbnN0ZWFkIG9mIGludGVnZXItb3B0aW9uYWwtaW50ZWdlciwgd2hpY2gg
aXMgbWlzc2luZy4KICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX0lOVEVHRVJfTVVMVElQTEVfV1JB
UFBFUlMoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIs
IFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJU
WShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgU1ZH
QW5pbWF0ZWRJbnRlZ2VyLCBsb25nLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorREVG
SU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIsIE93bmVy
VHlwZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBVcHBlclByb3Bl
cnR5LCBMb3dlclByb3BlcnR5KQogCiAjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCiBjbGFzcyBT
VkdBbmltYXRpb25FbGVtZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
TGVuZ3RoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVu
Z3RoLmgJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
TGVuZ3RoLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgdHlwZWRlZiBTVkdBbmlt
YXRlZFByb3BlcnR5VGVhck9mZjxTVkdMZQogREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdB
bmltYXRlZExlbmd0aCwgU1ZHTGVuZ3RoLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQog
CiAjZGVmaW5lIERFRklORV9BTklNQVRFRF9MRU5HVEgoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUs
IFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJU
WShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBTVkdB
bmltYXRlZExlbmd0aCwgU1ZHTGVuZ3RoLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQor
REVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkTGVuZ3RoLCBPd25lclR5cGUsIERPTUF0
dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBVcHBlclByb3BlcnR5LCBMb3dlclBy
b3BlcnR5KQogCiAjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCiBjbGFzcyBTVkdBbmltYXRpb25F
bGVtZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3Qu
aAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5n
dGhMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDggQEAgdHlwZWRlZiBTVkdBbmlt
YXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8UwogREVDTEFSRV9BTklNQVRFRF9MSVNUX1BST1BFUlRZ
KFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCwgU1ZHTGVuZ3RoTGlzdCwgVXBwZXJQcm9wZXJ0eSwgTG93
ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfTEVOR1RIX0xJU1QoT3duZXJU
eXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFRklO
RV9BTklNQVRFRF9MSVNUX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRy
aWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCwgU1ZHTGVuZ3RoTGlzdCwg
VXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKLSAgICAKK0RFRklORV9BTklNQVRFRF9QUk9Q
RVJUWShBbmltYXRlZExlbmd0aExpc3QsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRy
aWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCisKICNpZiBF
TkFCTEUoU1ZHX0FOSU1BVElPTikKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oCShyZXZpc2lvbiA5MDY2NikKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCwxMCArMzQsMTAgQEAgdHlwZWRlZiBTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9m
ZgogREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdBbmltYXRlZE51bWJlciwgZmxvYXQsIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX05V
TUJFUihPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0
eSkgXAotREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBE
T01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVkTnVtYmVyLCBmbG9hdCwgVXBwZXJQ
cm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRl
ZE51bWJlciwgT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUo
KSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFU
RURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBTVkdE
T01BdHRyaWJ1dGVJZGVudGlmaWVyLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCi1E
RUZJTkVfQU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0
dHJpYnV0ZUlkZW50aWZpZXIsIFNWR0FuaW1hdGVkTnVtYmVyLCBmbG9hdCwgVXBwZXJQcm9wZXJ0
eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZE51bWJl
ck9wdGlvbmFsTnVtYmVyLCBPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRl
SWRlbnRpZmllciwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogI2lmIEVOQUJMRShT
VkdfQU5JTUFUSU9OKQogY2xhc3MgU1ZHQW5pbWF0aW9uRWxlbWVudDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgJKHJldmlzaW9uIDkwNjY2KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw4ICszNCw4IEBAIHR5cGVkZWYgU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2Zm
PFMKIERFQ0xBUkVfQU5JTUFURURfTElTVF9QUk9QRVJUWShTVkdBbmltYXRlZE51bWJlckxpc3Qs
IFNWR051bWJlckxpc3QsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNkZWZpbmUg
REVGSU5FX0FOSU1BVEVEX05VTUJFUl9MSVNUKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBVcHBl
clByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCi1ERUZJTkVfQU5JTUFURURfTElTVF9QUk9QRVJU
WShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBTVkdB
bmltYXRlZE51bWJlckxpc3QsIFNWR051bWJlckxpc3QsIFVwcGVyUHJvcGVydHksIExvd2VyUHJv
cGVydHkpCi0gICAgCitERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWROdW1iZXJMaXN0
LCBPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBVcHBl
clByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorCiAjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCiBj
bGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oCShyZXZpc2lvbiA5MDY2NikK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaAko
d29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsOCBAQCB0eXBlZGVmIFNWR0FuaW1hdGVkUHJvcGVy
dHlUZWFyT2ZmPFNWR1ByCiBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkUHJl
c2VydmVBc3BlY3RSYXRpbywgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbywgVXBwZXJQcm9wZXJ0eSwg
TG93ZXJQcm9wZXJ0eSkKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RS
QVRJTyhPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0
eSkgXAotREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBE
T01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbywg
U1ZHUHJlc2VydmVBc3BlY3RSYXRpbywgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RF
RklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8sIE93bmVy
VHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVy
dHksIExvd2VyUHJvcGVydHkpCiAKLSAgICAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIGNs
YXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZFJlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRSZWN0LmgJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkUmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHR5cGVkZWYgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVRlYXJPZmY8RmxvYXQKIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZH
QW5pbWF0ZWRSZWN0LCBGbG9hdFJlY3QsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAK
ICNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX1JFQ1QoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShP
d25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBTVkdBbmlt
YXRlZFJlY3QsIEZsb2F0UmVjdCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKK0RFRklO
RV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZFJlY3QsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRl
LCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkp
CiAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAkocmV2aXNpb24gOTA2
NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAkod29ya2luZyBj
b3B5KQpAQCAtMzQsNyArMzQsNyBAQCB0eXBlZGVmIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlU
ZWFyT2ZmCiBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkU3RyaW5nLCBTdHJp
bmcsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNkZWZpbmUgREVGSU5FX0FOSU1B
VEVEX1NUUklORyhPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQ
cm9wZXJ0eSkgXAotREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmli
dXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVkU3RyaW5nLCBTdHJpbmcs
IFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCitERUZJTkVfQU5JTUFURURfUFJPUEVSVFko
QW5pbWF0ZWRTdHJpbmcsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9j
YWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNpZiBFTkFCTEUoU1ZH
X0FOSU1BVElPTikKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oCShyZXZpc2lvbiA5MDY2NikK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCB0eXBlZGVmIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dFByb3BlcnR5CiBERUNMQVJFX0FOSU1BVEVEX0xJU1RfUFJPUEVSVFkoU1ZHQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0LCBTVkdUcmFuc2Zvcm1MaXN0LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5
KQogCiAjZGVmaW5lIERFRklORV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChPd25lclR5cGUsIERP
TUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotREVGSU5FX0FOSU1B
VEVEX0xJU1RfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5s
b2NhbE5hbWUoKSwgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LCBTVkdUcmFuc2Zvcm1MaXN0LCBV
cHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFu
aW1hdGVkVHJhbnNmb3JtTGlzdCwgT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIERPTUF0dHJpYnV0
ZS5sb2NhbE5hbWUoKSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNw
cAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0FuaW1hdGVkVHlwZTo6U1ZHQW5pbWF0ZWRU
eXBlKEFuaW1hdGVkQXR0cmlidXRlVHlwZSB0eXBlKQorU1ZHQW5pbWF0ZWRUeXBlOjpTVkdBbmlt
YXRlZFR5cGUoQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSkKICAgICA6IG1fdHlwZSh0eXBlKQog
ewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAkocmV2aXNpb24gOTA2
NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4gY3JlYXRlUmVjdChGbG9hdFJlY3QqKTsKICAgICBzdGF0aWMgUGFzc093blB0
cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVN0cmluZyhTdHJpbmcqKTsKIAotICAgIEFuaW1hdGVk
QXR0cmlidXRlVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgQW5pbWF0
ZWRQcm9wZXJ0eVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAgICAgU1ZH
QW5nbGUmIGFuZ2xlKCk7CiAgICAgYm9vbCYgYm9vbGVhbigpOwpAQCAtNzksOSArNzksOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRQcmVzZXJ2ZUFzcGVjdFJhdGlvQmFzZVZhbHVlKGNvbnN0IFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW8mKTsKIAogcHJpdmF0ZToKLSAgICBTVkdBbmltYXRlZFR5cGUo
QW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKTsKKyAgICBTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWRQcm9w
ZXJ0eVR5cGUpOwogCi0gICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIG1fdHlwZTsKKyAgICBBbmlt
YXRlZFByb3BlcnR5VHlwZSBtX3R5cGU7CiAKICAgICB1bmlvbiBEYXRhVW5pb24gewogICAgICAg
ICBEYXRhVW5pb24oKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFu
aW1hdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlw
ZUFuaW1hdG9yLmgJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkVHlwZUFuaW1hdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDE0ICs0MywxNCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZXh0RWxlbWVudChTVkdFbGVtZW50KiBjb250ZXh0RWxl
bWVudCkgeyBtX2NvbnRleHRFbGVtZW50ID0gY29udGV4dEVsZW1lbnQ7IH0KICAgICAKIHByb3Rl
Y3RlZDoKLSAgICBTVkdBbmltYXRlZFR5cGVBbmltYXRvcihBbmltYXRlZEF0dHJpYnV0ZVR5cGUg
dHlwZSwgU1ZHQW5pbWF0aW9uRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCog
Y29udGV4dEVsZW1lbnQpCisgICAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRQcm9w
ZXJ0eVR5cGUgdHlwZSwgU1ZHQW5pbWF0aW9uRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwgU1ZH
RWxlbWVudCogY29udGV4dEVsZW1lbnQpCiAgICAgICAgIDogbV90eXBlKHR5cGUpCiAgICAgICAg
ICwgbV9hbmltYXRpb25FbGVtZW50KGFuaW1hdGlvbkVsZW1lbnQpCiAgICAgICAgICwgbV9jb250
ZXh0RWxlbWVudChjb250ZXh0RWxlbWVudCkKICAgICB7CiAgICAgfQogCi0gICAgQW5pbWF0ZWRB
dHRyaWJ1dGVUeXBlIG1fdHlwZTsKKyAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBtX3R5cGU7CiAg
ICAgU1ZHQW5pbWF0aW9uRWxlbWVudCogbV9hbmltYXRpb25FbGVtZW50OwogICAgIFNWR0VsZW1l
bnQqIG1fY29udGV4dEVsZW1lbnQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRpb25FbGVtZW50LmNwcAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEwICs1NSwx
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9u
cwogREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHQW5pbWF0aW9uRWxlbWVudCwgU1ZHTmFtZXM6
OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR0FuaW1hdGlvbkVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJF
TlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9Q
Uk9QRVJUSUVTCisKIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OlNWR0FuaW1hdGlvbkVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZH
U01JTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX2FuaW1hdGlvblZhbGlkKGZh
bHNlKQogeworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQW5pbWF0aW9uRWxl
bWVudCgpOwogfQogCiBzdGF0aWMgdm9pZCBwYXJzZUtleVRpbWVzKGNvbnN0IFN0cmluZyYgcGFy
c2UsIFZlY3RvcjxmbG9hdD4mIHJlc3VsdCwgYm9vbCB2ZXJpZnlPcmRlcikKQEAgLTIwMywyMiAr
MjA5LDYgQEAgdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjphdHRyaWJ1dGVDaGFuZwogICAgIFNW
R1NNSUxFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGF0dHIsIHByZXNlcnZlRGVjbHMpOwogfQog
Ci12b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgU1ZHU01JTEVsZW1lbnQ6OnN5bmNocm9uaXpl
UHJvcGVydHkoYXR0ck5hbWUpOwotCi0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsK
LSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAg
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICBlbHNlIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXMo
dGhpcywgYXR0ck5hbWUpOwotfQotCiBmbG9hdCBTVkdBbmltYXRpb25FbGVtZW50OjpnZXRTdGFy
dFRpbWUoKSBjb25zdAogewogICAgIHJldHVybiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGludGVy
dmFsQmVnaW4oKS52YWx1ZSgpKTsKQEAgLTQ4Niw3ICs0NzYsNyBAQCB2b2lkIFNWR0FuaW1hdGlv
bkVsZW1lbnQ6OmN1cnJlbnRWYWx1ZXNGCiAgICAgQ2FsY01vZGUgY2FsY01vZGUgPSB0aGlzLT5j
YWxjTW9kZSgpOwogICAgIGlmIChoYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlVGFnKSB8fCBo
YXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlQ29sb3JUYWcpKSB7CiAgICAgICAgIGNvbnN0IFNW
R0FuaW1hdGVFbGVtZW50KiBhbmltYXRlRWxlbWVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFNWR0Fu
aW1hdGVFbGVtZW50Kj4odGhpcyk7Ci0gICAgICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBhdHRy
aWJ1dGVUeXBlID0gYW5pbWF0ZUVsZW1lbnQtPmRldGVybWluZUFuaW1hdGVkQXR0cmlidXRlVHlw
ZSh0YXJnZXRFbGVtZW50KCkpOworICAgICAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBhdHRyaWJ1
dGVUeXBlID0gYW5pbWF0ZUVsZW1lbnQtPmRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKHRh
cmdldEVsZW1lbnQoKSk7CiAgICAgICAgIC8vIEZhbGwgYmFjayB0byBkaXNjcmV0ZSBhbmltYXRp
b25zIGZvciBTdHJpbmdzLgogICAgICAgICBpZiAoYXR0cmlidXRlVHlwZSA9PSBBbmltYXRlZEJv
b2xlYW4KICAgICAgICAgICAgIHx8IGF0dHJpYnV0ZVR5cGUgPT0gQW5pbWF0ZWRFbnVtZXJhdGlv
bgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCShyZXZpc2lv
biA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwOCw3ICsxMDgsNiBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVzZXJ2
ZURlY2xzKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVz
KGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoY29uc3QgU3RyaW5nJiBm
cm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKSA9IDA7CkBAIC0xMjMsMTAgKzEyMiwx
NCBAQCBwcml2YXRlOgogICAgIGZsb2F0IGNhbGN1bGF0ZVBlcmNlbnRGb3JTcGxpbmUoZmxvYXQg
cGVyY2VudCwgdW5zaWduZWQgc3BsaW5lSW5kZXgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGNhbGN1
bGF0ZUtleVRpbWVzSW5kZXgoZmxvYXQgcGVyY2VudCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRl
ZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHQW5pbWF0aW9uRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8g
U1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkg
eyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3lu
Y2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFu
Z3VhZ2UodGhpcyk7IH0KIAogICAgIGJvb2wgbV9hbmltYXRpb25WYWxpZDsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaAkocmV2aXNpb24gOTA2NjYpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDcgKzQyLDcgQEAgY2xhc3MgU1ZHQW5pbWF0aW9uRWxlbWVudDsKIAogY2xhc3MgU1ZHQW5p
bWF0b3JGYWN0b3J5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRl
ZFR5cGVBbmltYXRvcj4gY3JlYXRlKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1l
bnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgYXR0
cmlidXRlVHlwZSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGVBbmltYXRv
cj4gY3JlYXRlKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1l
bnQqIGNvbnRleHRFbGVtZW50LCBBbmltYXRlZFByb3BlcnR5VHlwZSBhdHRyaWJ1dGVUeXBlKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGFuaW1hdGlvbkVsZW1lbnQpOwogICAgICAgICBBU1NFUlQo
Y29udGV4dEVsZW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50
LmNwcAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDE1IEBAIERFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHQ2lyY2xlRWxlbWVudCwKIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHQ2ly
Y2xlRWxlbWVudCwgU1ZHTmFtZXM6OnJBdHRyLCBSLCByKQogREVGSU5FX0FOSU1BVEVEX0JPT0xF
QU4oU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRB
dHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQogCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0NpcmNsZUVsZW1lbnQp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoY3gpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkoY3kpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkocikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BF
UlRJRVMKKwogaW5saW5lIFNWR0NpcmNsZUVsZW1lbnQ6OlNWR0NpcmNsZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX2N4KExl
bmd0aE1vZGVXaWR0aCkKQEAgLTQ2LDYgKzU1LDcgQEAgaW5saW5lIFNWR0NpcmNsZUVsZW1lbnQ6
OlNWR0NpcmNsZUVsZW1lbgogICAgICwgbV9yKExlbmd0aE1vZGVPdGhlcikKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShTVkdOYW1lczo6Y2lyY2xlVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRl
ZFByb3BlcnRpZXNGb3JTVkdDaXJjbGVFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHQ2ly
Y2xlRWxlbWVudD4gU1ZHQ2lyY2xlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTEzOCw2NyArMTQ4LDYgQEAgdm9pZCBT
VkdDaXJjbGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZwogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCi12b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFO
YW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVDeCgpOwotICAgICAgICBzeW5jaHJvbml6ZUN5
KCk7Ci0gICAgICAgIHN5bmNocm9uaXplUigpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVy
dGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgIAotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAg
ICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6Y3hBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplQ3goKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6Y3lBdHRyKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplQ3koKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ckF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVSKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25p
emVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAg
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdDaXJjbGVFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVy
biBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0NpcmNsZUVsZW1l
bnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6Y3hBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjpjeUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnJBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci19
Ci0KIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6dG9QYXRoRGF0YShQYXRoJiBwYXRoKSBjb25zdAog
ewogICAgIEFTU0VSVChwYXRoLmlzRW1wdHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQ2lyY2xlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdD
aXJjbGVFbGVtZW50LmgJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0NpcmNsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMjIgKzQ3LDIyIEBAIHByaXZh
dGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAg
IHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgdm9pZCB0b1BhdGhEYXRhKFBhdGgmKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAK
LSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1B
VEVEX0xFTkdUSChDeCwgY3gpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3ksIGN5KQot
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFIsIHIpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgQkVHSU5fREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0NpcmNsZUVsZW1lbnQpCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfTEVOR1RIKEN4LCBjeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoQ3ksIGN5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSLCByKQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVp
cmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhp
cyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hy
b25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJKHJldmlz
aW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDExICszOCwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBE
RUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHQ2xpcFBhdGhFbGVtZW50LCBTVkdOYW1lczo6
Y2xpcFBhdGhVbml0c0F0dHIsIENsaXBQYXRoVW5pdHMsIGNsaXBQYXRoVW5pdHMsIFNWR1VuaXRU
eXBlczo6U1ZHVW5pdFR5cGUpCiBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdDbGlwUGF0aEVs
ZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKIAorQkVHSU5fUkVH
SVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdDbGlwUGF0aEVsZW1lbnQpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoY2xpcFBhdGhVbml0cykKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJF
R0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3Rz
KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKKwogaW5saW5lIFNWR0NsaXBQYXRo
RWxlbWVudDo6U1ZHQ2xpcFBhdGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9jbGlwUGF0aFVuaXRzKFNWR1VuaXRUeXBlczo6
U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShT
VkdOYW1lczo6Y2xpcFBhdGhUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0Zv
clNWR0NsaXBQYXRoRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0NsaXBQYXRoRWxlbWVu
dD4gU1ZHQ2xpcFBhdGhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtOTksNTMgKzEwNyw2IEBAIHZvaWQgU1ZHQ2xpcFBh
dGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGEKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91
dCh0cnVlKTsKIH0KIAotdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09
IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVDbGlwUGF0aFVuaXRzKCk7Ci0gICAg
ICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBTVkdU
ZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5
bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0cikgewotICAgICAg
ICBzeW5jaHJvbml6ZUNsaXBQYXRoVW5pdHMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVy
dGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0Ns
aXBQYXRoRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcDsKLX0KLQotdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
LQotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Y2xpcFBhdGhVbml0c0F0dHIsIEFu
aW1hdGVkRW51bWVyYXRpb24pOwotfQotCiB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUq
IGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVD
aGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDE4ICs1
MCwxOSBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5n
ZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwg
Tm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVD
TEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihDbGlwUGF0aFVuaXRzLCBjbGlwUGF0aFVuaXRzLCBT
VkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVElFUyhTVkdDbGlwUGF0aEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5V
TUVSQVRJT04oQ2xpcFBhdGhVbml0cywgY2xpcFBhdGhVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdV
bml0VHlwZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVElFUwogCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRl
bnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3Vh
Z2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiB9Owog
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzksNiArMzksMTYgQEAgREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdD
b21wb25lbnRUcmFucwogREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uRWxlbWVudCwgU1ZHTmFtZXM6OmV4cG9uZW50QXR0ciwgRXhwb25lbnQsIGV4cG9u
ZW50KQogREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
RWxlbWVudCwgU1ZHTmFtZXM6Om9mZnNldEF0dHIsIE9mZnNldCwgb2Zmc2V0KQogCitCRUdJTl9S
RUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25F
bGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHR5cGUpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkodGFibGVWYWx1ZXMpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc2xvcGUpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoaW50ZXJjZXB0KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKGFtcGxpdHVkZSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShl
eHBvbmVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShvZmZzZXQpCitF
TkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUworCiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudDo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fdHlwZShGRUNPTVBPTkVOVFRSQU5TRkVS
X1RZUEVfSURFTlRJVFkpCkBAIC00Niw2ICs1Niw3IEBAIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb25FbGVtZW50OjpTVkcKICAgICAsIG1fYW1wbGl0dWRlKDEpCiAgICAgLCBtX2V4cG9uZW50
KDEpCiB7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVudCgpOwogfQogCiBib29sIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb25FbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKQEAgLTExNCw4MSArMTI1LDYgQEAgdm9pZCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFt
ZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplVHlwZSgpOwotICAgICAgICBzeW5jaHJvbml6ZVRh
YmxlVmFsdWVzKCk7Ci0gICAgICAgIHN5bmNocm9uaXplU2xvcGUoKTsKLSAgICAgICAgc3luY2hy
b25pemVJbnRlcmNlcHQoKTsKLSAgICAgICAgc3luY2hyb25pemVBbXBsaXR1ZGUoKTsKLSAgICAg
ICAgc3luY2hyb25pemVFeHBvbmVudCgpOwotICAgICAgICBzeW5jaHJvbml6ZU9mZnNldCgpOwot
ICAgICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7Ci0gICAgICAgIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
Ojp0eXBlQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVR5cGUoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dGFibGVWYWx1ZXNBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplVGFibGVWYWx1ZXMoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c2xvcGVBdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplU2xvcGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW50ZXJjZXB0QXR0cikgewotICAgICAgICBzeW5jaHJv
bml6ZUludGVyY2VwdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjphbXBsaXR1ZGVBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplQW1w
bGl0dWRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmV4cG9uZW50QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUV4cG9uZW50KCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
Om9mZnNldEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVPZmZzZXQoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAo
KSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQg
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnR5cGVBdHRyLCBB
bmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OnRhYmxlVmFsdWVzQXR0ciwgQW5pbWF0ZWROdW1iZXJMaXN0KTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNsb3BlQXR0ciwgQW5pbWF0ZWRO
dW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW50
ZXJjZXB0QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6YW1wbGl0dWRlQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZXhwb25lbnRBdHRyLCBBbmlt
YXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjpvZmZzZXRBdHRyLCBBbmltYXRlZE51bWJlcik7Ci19Ci0KIENvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb24gU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnRyYW5zZmVyRnVuY3Rp
b24oKSBjb25zdAogewogICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gZnVuYzsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudC5oCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04
MCwxOSArODAsMTcgQEAgcHJvdGVjdGVkOgogICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFu
Z2VkIG1pc3NpbmcuCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0
ZSopOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKICAgICAKIHByaXZhdGU6Ci0gICAgLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihUeXBlLCB0
eXBlLCBDb21wb25lbnRUcmFuc2ZlclR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVJf
TElTVChUYWJsZVZhbHVlcywgdGFibGVWYWx1ZXMpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1C
RVIoU2xvcGUsIHNsb3BlKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEludGVyY2VwdCwg
aW50ZXJjZXB0KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEFtcGxpdHVkZSwgYW1wbGl0
dWRlKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEV4cG9uZW50LCBleHBvbmVudCkKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihPZmZzZXQsIG9mZnNldCkKKyAgICBCRUdJTl9ERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1l
bnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oVHlwZSwgdHlwZSwgQ29t
cG9uZW50VHJhbnNmZXJUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUl9MSVNU
KFRhYmxlVmFsdWVzLCB0YWJsZVZhbHVlcykKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1C
RVIoU2xvcGUsIHNsb3BlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihJbnRlcmNl
cHQsIGludGVyY2VwdCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQW1wbGl0dWRl
LCBhbXBsaXR1ZGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEV4cG9uZW50LCBl
eHBvbmVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoT2Zmc2V0LCBvZmZzZXQp
CisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAko
cmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEyICszNiwyMSBAQCBERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR0N1cnNvckVsZW1lbnQsCiBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0N1cnNvckVs
ZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQogREVGSU5FX0FOSU1BVEVE
X0JPT0xFQU4oU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQogCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0N1cnNvckVs
ZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeCkKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1B
VEVEX1BST1BFUlRZKGhyZWYpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFko
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCisK
IGlubGluZSBTVkdDdXJzb3JFbGVtZW50OjpTVkdDdXJzb3JFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0VsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3goTGVuZ3RoTW9kZVdpZHRoKQogICAgICwgbV95KExl
bmd0aE1vZGVIZWlnaHQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmN1cnNv
clRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHQ3Vyc29yRWxlbWVu
dCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0N1cnNvckVsZW1lbnQ+IFNWR0N1cnNvckVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQp
CkBAIC05NiwyMCArMTA1LDYgQEAgdm9pZCBTVkdDdXJzb3JFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1BdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgU1ZHQ3Vyc29yRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQot
ewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNf
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdDdXJzb3JFbGVtZW50OjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4
QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0K
LQogdm9pZCBTVkdDdXJzb3JFbGVtZW50OjphZGRDbGllbnQoU1ZHRWxlbWVudCogZWxlbWVudCkK
IHsKICAgICBtX2NsaWVudHMuYWRkKGVsZW1lbnQpOwpAQCAtMTQ3LDUxICsxNDIsNiBAQCB2b2lk
IFNWR0N1cnNvckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nCiAgICAgICAgICgqaXQpLT5zZXRO
ZWVkc1N0eWxlUmVjYWxjKCk7CiB9CiAKLXZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6c3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0
ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAg
c3luY2hyb25pemVZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5
bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIFNWR0VsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZH
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplWCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjp5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNW
R1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6
c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCiB2b2lkIFNWR0N1cnNvckVs
ZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJs
cykgY29uc3QKIHsKICAgICBTVkdFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMo
dXJscyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgJKHJldmlzaW9u
IDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTMsMjEgKzUzLDIwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+Jikg
Y29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNM
QVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFks
IHkpCi0KLSAgICAvLyBTVkdVUklSZWZlcmVuY2UKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklO
RyhIcmVmLCBocmVmKQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAg
IERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdDdXJzb3JFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChY
LCB4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdU
ZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNW
R1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFn
ZSh0aGlzKTsgfQogCiAgICAgSGFzaFNldDxTVkdFbGVtZW50Kj4gbV9jbGllbnRzOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2NjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSwxMCArMzEsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVmaW5pdGlvbnMKIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0RlZnNFbGVtZW50LCBT
VkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAKK0JFR0lOX1JFR0lTVEVSX0FO
SU1BVEVEX1BST1BFUlRJRVMoU1ZHRGVmc0VsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9Q
QVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkK
KyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9S
RUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCisKIGlubGluZSBTVkdEZWZzRWxlbWVudDo6U1ZH
RGVmc0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmRlZnNUYWcpKTsKKyAgICBy
ZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0RlZnNFbGVtZW50KCk7CiB9CiAKIFBhc3NS
ZWZQdHI8U1ZHRGVmc0VsZW1lbnQ+IFNWR0RlZnNFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNTIsMjIgKzU5LDYgQEAg
UmVuZGVyT2JqZWN0KiBTVkdEZWZzRWxlbWVudDo6Y3JlYXRlUmVuZAogICAgIHJldHVybiBuZXcg
KGFyZW5hKSBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIodGhpcyk7CiB9CiAKLXZvaWQgU1ZHRGVm
c0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCi17Ci0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoYXR0ck5hbWUpOwotCi0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAg
ICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNW
R1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQoKTsKLSAgICBlbHNlIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpCi0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhp
cywgYXR0ck5hbWUpOwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmgJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEyICs0Mywx
NSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAKICAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucworICAg
IEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdEZWZzRWxlbWVudCkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVS
VElFUwogCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVf
QU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKQorICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0
dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5z
aW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKHRoaXMpOyB9
CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSB7IFNWR1Rlc3Rz
OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDY2
NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjg1LDIzICsyODUsOSBAQCB2b2lkIFNWR0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0CiAgICAgICAgIFN0eWxlZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwog
fQogCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRWxlbWVudDo6YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQordm9pZCBTVkdFbGVtZW50OjphbmltYXRlZFByb3BlcnR5VHlwZUZv
ckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBWZWN0b3I8QW5p
bWF0ZWRQcm9wZXJ0eVR5cGU+JiBwcm9wZXJ0eVR5cGVzKQogewotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0K
LQotQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIFNWR0VsZW1lbnQ6OmFuaW1hdGVkUHJvcGVydHlUeXBl
Rm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhbmltYXRlZEF0dHJpYnV0ZU1hcCA9IGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgaWYgKGFuaW1hdGVkQXR0cmlidXRlTWFwLmlzRW1wdHko
KSkKLSAgICAgICAgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgaWYgKGFu
aW1hdGVkQXR0cmlidXRlTWFwLmNvbnRhaW5zKGF0dHJOYW1lKSkKLSAgICAgICAgcmV0dXJuIGFu
aW1hdGVkQXR0cmlidXRlTWFwLmdldChhdHRyTmFtZSk7Ci0gICAgaWYgKGlzU3R5bGVkKCkpCi0g
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4odGhpcyktPmFuaW1h
dGVkUHJvcGVydHlUeXBlRm9yQ1NTUHJvcGVydHkoYXR0ck5hbWUpOwotCi0gICAgcmV0dXJuIEFu
aW1hdGVkVW5rbm93bjsKKyAgICBsb2NhbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKS5hbmltYXRl
ZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBwcm9wZXJ0eVR5cGVzKTsK
IH0KIAogYm9vbCBTVkdFbGVtZW50OjpoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKQpAQCAt
MzkyLDEzICszNzgsNDIgQEAgdm9pZCBTVkdFbGVtZW50Ojp1cGRhdGVBbmltYXRlZFNWR0F0dHJp
YgogCiAgICAgc2V0SXNTeW5jaHJvbml6aW5nU1ZHQXR0cmlidXRlcygpOwogCi0gICAgY29uc3Rf
Y2FzdDxTVkdFbGVtZW50Kj4odGhpcyktPnN5bmNocm9uaXplUHJvcGVydHkobmFtZSk7Ci0gICAg
aWYgKG5hbWUgPT0gYW55UU5hbWUoKSkKKyAgICBTVkdFbGVtZW50KiBub25Db25zdFRoaXMgPSBj
b25zdF9jYXN0PFNWR0VsZW1lbnQqPih0aGlzKTsKKyAgICBpZiAobmFtZSA9PSBhbnlRTmFtZSgp
KSB7CisgICAgICAgIG5vbkNvbnN0VGhpcy0+bG9jYWxBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCku
c3luY2hyb25pemVQcm9wZXJ0aWVzKG5vbkNvbnN0VGhpcyk7CiAgICAgICAgIHNldEFyZVNWR0F0
dHJpYnV0ZXNWYWxpZCgpOworICAgIH0gZWxzZQorICAgICAgICBub25Db25zdFRoaXMtPmxvY2Fs
QXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpLnN5bmNocm9uaXplUHJvcGVydHkobm9uQ29uc3RUaGlz
LCBuYW1lKTsKIAogICAgIGNsZWFySXNTeW5jaHJvbml6aW5nU1ZHQXR0cmlidXRlcygpOwogfQog
CitTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBTVkdFbGVtZW50Ojpsb2NhbEF0dHJpYnV0ZVRv
UHJvcGVydHlNYXAoKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLCBkdW1teU1hcCwgKCkpOwor
ICAgIHJldHVybiBkdW1teU1hcDsKK30KKwordm9pZCBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVJl
cXVpcmVkRmVhdHVyZXModm9pZCogY29udGV4dEVsZW1lbnQpCit7CisgICAgQVNTRVJUKGNvbnRl
eHRFbGVtZW50KTsKKyAgICBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4oY29udGV4dEVsZW1lbnQp
LT5zeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKTsKK30KKwordm9pZCBTVkdFbGVtZW50Ojpz
eW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh2b2lkKiBjb250ZXh0RWxlbWVudCkKK3sKKyAg
ICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgIHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihj
b250ZXh0RWxlbWVudCktPnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCk7Cit9CisKK3Zv
aWQgU1ZHRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh2b2lkKiBjb250ZXh0RWxl
bWVudCkKK3sKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgIHN0YXRpY19jYXN0PFNW
R0VsZW1lbnQqPihjb250ZXh0RWxlbWVudCktPnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKTsK
K30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuaAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw0NyArMjQsMjcgQEAKIAogI2lmIEVOQUJMRShTVkcpCiAj
aW5jbHVkZSAiU1ZHTG9jYXRhYmxlLmgiCisjaW5jbHVkZSAiU1ZHUHJvcGVydHlJbmZvLmgiCiAj
aW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgewotICAgIEFu
aW1hdGVkQW5nbGUsCi0gICAgQW5pbWF0ZWRCb29sZWFuLAotICAgIEFuaW1hdGVkQ29sb3IsCi0g
ICAgQW5pbWF0ZWRFbnVtZXJhdGlvbiwKLSAgICBBbmltYXRlZEludGVnZXIsCi0gICAgQW5pbWF0
ZWRMZW5ndGgsCi0gICAgQW5pbWF0ZWRMZW5ndGhMaXN0LAotICAgIEFuaW1hdGVkTnVtYmVyLAot
ICAgIEFuaW1hdGVkTnVtYmVyTGlzdCwKLSAgICBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVy
LAotICAgIEFuaW1hdGVkUGF0aCwKLSAgICBBbmltYXRlZFBvaW50cywKLSAgICBBbmltYXRlZFBy
ZXNlcnZlQXNwZWN0UmF0aW8sCi0gICAgQW5pbWF0ZWRSZWN0LAotICAgIEFuaW1hdGVkU3RyaW5n
LAotICAgIEFuaW1hdGVkVHJhbnNmb3JtTGlzdCwKLSAgICBBbmltYXRlZFVua25vd24KLX07Ci0K
IGVudW0gU1ZHUGFyc2luZ0Vycm9yIHsKICAgICBOb0Vycm9yLAogICAgIFBhcnNpbmdBdHRyaWJ1
dGVGYWlsZWRFcnJvciwKICAgICBOZWdhdGl2ZVZhbHVlRm9yYmlkZGVuRXJyb3IKIH07CiAKLXR5
cGVkZWYgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+IEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotCitjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBD
U1NDdXJzb3JJbWFnZVZhbHVlOwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBTVkdBdHRyaWJ1dGVU
b1Byb3BlcnR5TWFwOwogY2xhc3MgU1ZHQ3Vyc29yRWxlbWVudDsKIGNsYXNzIFNWR0RvY3VtZW50
RXh0ZW5zaW9uczsKIGNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZTsKIGNsYXNzIFNWR0VsZW1lbnRS
YXJlRGF0YTsKIGNsYXNzIFNWR1NWR0VsZW1lbnQ7Ci1jbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAK
IGNsYXNzIFNWR0VsZW1lbnQgOiBwdWJsaWMgU3R5bGVkRWxlbWVudCB7CiBwdWJsaWM6CkBAIC05
MSwxMiArNzEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpIHsgfQotCi0gICAgdmlydHVhbCBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICBBbmlt
YXRlZEF0dHJpYnV0ZVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogCi0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlZFByb3BlcnR5VHlwZUZv
ckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgVmVjdG9yPEFuaW1hdGVkUHJvcGVydHlU
eXBlPiYpOwogCiAgICAgdm9pZCBzZW5kU1ZHTG9hZEV2ZW50SWZQb3NzaWJsZShib29sIHNlbmRQ
YXJlbnRMb2FkRXZlbnRzID0gZmFsc2UpOwogCkBAIC0xMTUsNiArOTEsMTYgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGVkU1ZHQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBjb25zdDsKIAorICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRG
ZWF0dXJlcyh2b2lkKiBjb250ZXh0RWxlbWVudCk7CisgICAgc3RhdGljIHZvaWQgc3luY2hyb25p
emVSZXF1aXJlZEV4dGVuc2lvbnModm9pZCogY29udGV4dEVsZW1lbnQpOworICAgIHN0YXRpYyB2
b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2Uodm9pZCogY29udGV4dEVsZW1lbnQpOworCisg
ICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyB9CisKKyAgICB2aXJ0dWFsIFNW
R0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAmIGxvY2FsQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpOwor
CiBwcm90ZWN0ZWQ6CiAgICAgU1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDE2IEBAIERFRklORV9BTklNQVRFRF9MRU5H
VEgoU1ZHRWxsaXBzZUVsZW1lbnQKIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRWxsaXBzZUVs
ZW1lbnQsIFNWR05hbWVzOjpyeUF0dHIsIFJ5LCByeSkKIERFRklORV9BTklNQVRFRF9CT09MRUFO
KFNWR0VsbGlwc2VFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0
dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQp
CiAKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRWxsaXBzZUVsZW1lbnQp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoY3gpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkoY3kpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkocngpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocnkpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCisKIGlubGlu
ZSBTVkdFbGxpcHNlRWxlbWVudDo6U1ZHRWxsaXBzZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX2N4KExlbmd0aE1vZGVXaWR0
aCkKQEAgLTQ4LDYgKzU4LDcgQEAgaW5saW5lIFNWR0VsbGlwc2VFbGVtZW50OjpTVkdFbGxpcHNl
RWxlbQogICAgICwgbV9yeShMZW5ndGhNb2RlSGVpZ2h0KQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKFNWR05hbWVzOjplbGxpcHNlVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRp
ZXNGb3JTVkdFbGxpcHNlRWxlbWVudCgpOwogfSAgICAKIAogUGFzc1JlZlB0cjxTVkdFbGxpcHNl
RWxlbWVudD4gU1ZHRWxsaXBzZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xNDksNzQgKzE2MCw2IEBAIHZvaWQgU1ZH
RWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIAotdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5h
bWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUN4KCk7Ci0gICAgICAgIHN5bmNocm9uaXplQ3ko
KTsKLSAgICAgICAgc3luY2hyb25pemVSeCgpOwotICAgICAgICBzeW5jaHJvbml6ZVJ5KCk7Ci0g
ICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBT
VkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAg
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5h
bWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpjeEF0dHIpIHsKLSAgICAgICAgc3luY2hy
b25pemVDeCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjpjeUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVDeSgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpyeEF0dHIpIHsK
LSAgICAgICAgc3luY2hyb25pemVSeCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpyeUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVS
eSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAg
ICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1B
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRWxsaXBzZUVsZW1lbnQ6OmF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAg
cmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRWxsaXBz
ZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXApOyAgICAKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OmN4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Y3lBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyeEF0dHIsIEFuaW1hdGVk
TGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnJ5
QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotfQotCiB2b2lkIFNWR0VsbGlwc2VFbGVtZW50Ojp0b1Bh
dGhEYXRhKFBhdGgmIHBhdGgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHBhdGguaXNFbXB0eSgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCShyZXZpc2lvbiA5MDY2
NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NywyMiArNDcsMjMgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwg
dm9pZCB0b1BhdGhEYXRhKFBhdGgmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFz
UmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNs
YXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeCwgY3gpCi0gICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoQ3ksIGN5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFJ4
LCByeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSeSwgcnkpCi0KLSAgICAvLyBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAg
QkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0VsbGlwc2VFbGVtZW50KQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeCwgY3gpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfTEVOR1RIKEN5LCBjeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUngs
IHJ4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSeSwgcnkpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMK
KworICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRG
ZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZH
VGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKHRoaXMpOyB9CisgICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAJKHJldmlzaW9uIDkw
NjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsMTEgKzM2LDE5IEBAIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVC
bGVuZEVsZW1lbnQKIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVCbGVuZEVsZW1lbnQsIFNW
R05hbWVzOjppbjJBdHRyLCBJbjIsIGluMikKIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihT
VkdGRUJsZW5kRWxlbWVudCwgU1ZHTmFtZXM6Om1vZGVBdHRyLCBNb2RlLCBtb2RlLCBCbGVuZE1v
ZGVUeXBlKQogCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFQmxlbmRF
bGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGluMSkKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjIpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkobW9kZSkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJP
UEVSVElFUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCitFTkRfUkVHSVNU
RVJfQU5JTUFURURfUFJPUEVSVElFUworCiBpbmxpbmUgU1ZHRkVCbGVuZEVsZW1lbnQ6OlNWR0ZF
QmxlbmRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1l
LCBkb2N1bWVudCkKICAgICAsIG1fbW9kZShGRUJMRU5EX01PREVfTk9STUFMKQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUJsZW5kVGFnKSk7CisgICAgcmVnaXN0ZXJBbmlt
YXRlZFByb3BlcnRpZXNGb3JTVkdGRUJsZW5kRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNW
R0ZFQmxlbmRFbGVtZW50PiBTVkdGRUJsZW5kRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTExOSw1NSArMTI3LDYgQEAg
dm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbgogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0ZFQmxlbmRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9
PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplTW9kZSgpOwotICAgICAgICBzeW5j
aHJvbml6ZUluMSgpOwotICAgICAgICBzeW5jaHJvbml6ZUluMigpOwotICAgICAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5h
bWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6bW9kZUF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVNb2RlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
OjppbjJBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4yKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIFNWR0ZFQmxlbmRFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0ZFQmxlbmRFbGVtZW50OjpmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCk7ICAgIAotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjppbjJBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjptb2RlQXR0ciwgQW5pbWF0ZWRFbnVt
ZXJhdGlvbik7Ci19Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUJsZW5kRWxlbWVu
dDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIp
CiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RC
eUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCShy
ZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC04MCwxNSArODAsMTMgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCBib29s
IHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKLSAgICAv
LyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NU
UklORyhJbjEsIGluMSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjIsIGluMikKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKE1vZGUsIG1vZGUsIEJsZW5kTW9kZVR5cGUp
CisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFQmxlbmRFbGVtZW50
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9TVFJJTkcoSW4yLCBpbjIpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
RU5VTUVSQVRJT04oTW9kZSwgbW9kZSwgQmxlbmRNb2RlVHlwZSkKKyAgICBFTkRfREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHJldmlz
aW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTEgKzM2LDE5IEBAIERFRklORV9BTklNQVRFRF9T
VFJJTkcoU1ZHRkVDb2xvck1hdHJpeEUKIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdG
RUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OnR5cGVBdHRyLCBUeXBlLCB0eXBlLCBDb2xv
ck1hdHJpeFR5cGUpCiBERUZJTkVfQU5JTUFURURfTlVNQkVSX0xJU1QoU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQsIFNWR05hbWVzOjp2YWx1ZXNBdHRyLCBWYWx1ZXMsIHZhbHVlcykKIAorQkVHSU5f
UkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRUNvbG9yTWF0cml4RWxlbWVudCkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjEpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkodHlwZSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWSh2YWx1ZXMpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1B
VEVEX1BST1BFUlRJRVMKKwogaW5saW5lIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpTVkdGRUNv
bG9yTWF0cml4RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFn
TmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3R5cGUoRkVDT0xPUk1BVFJJWF9UWVBFX1VOS05PV04p
CiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlQ29sb3JNYXRyaXhUYWcpKTsK
KyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ+IFNWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQpAQCAtMTI0LDU1ICsxMzIsNiBAQCB2b2lkIFNWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50OjpzdmdBdHRyaWJ1CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQg
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsK
LSAgICAgICAgc3luY2hyb25pemVUeXBlKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0g
ICAgICAgIHN5bmNocm9uaXplVmFsdWVzKCk7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1l
KSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNo
cm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0eXBlQXR0cikgewotICAgICAgICBzeW5jaHJvbml6
ZVR5cGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnZhbHVlc0F0dHIp
IHsKLSAgICAgICAgc3luY2hyb25pemVWYWx1ZXMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6
OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlczo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChTVkdOYW1lczo6dHlwZUF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dmFsdWVzQXR0ciwgQW5p
bWF0ZWROdW1iZXJMaXN0KTsKLX0KLQogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29s
b3JNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBG
aWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxk
ZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDE1
ICs3NywxMyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRl
KEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1
YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqLCBGaWx0ZXIqKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwot
ICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFU
RURfRU5VTUVSQVRJT04oVHlwZSwgdHlwZSwgQ29sb3JNYXRyaXhUeXBlKQotICAgIERFQ0xBUkVf
QU5JTUFURURfTlVNQkVSX0xJU1QoVmFsdWVzLCB2YWx1ZXMpCisgICAgQkVHSU5fREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9F
TlVNRVJBVElPTihUeXBlLCB0eXBlLCBDb2xvck1hdHJpeFR5cGUpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfTlVNQkVSX0xJU1QoVmFsdWVzLCB2YWx1ZXMpCisgICAgRU5EX0RFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEzICszNCwxOSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9u
cworLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKIERFRklORV9BTklNQVRFRF9TVFJJ
TkcoU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQsIFNWR05hbWVzOjppbkF0dHIsIEluMSwg
aW4xKQogCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGlu
MSkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElF
UworCiBpbmxpbmUgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OlNWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCkKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdO
YW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVDb21w
b25lbnRUcmFuc2ZlclRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZH
RkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRUNvbXBv
bmVudFRyYW5zZmVyRWxlbWVudD4gU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC03
Miw0MSArNzgsNiBAQCB2b2lkIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpwYXJzCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVDb21wb25lbnRUcmFuc2Zl
ckVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hy
b25pemVJbjEoKTsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShh
dHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmluQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsK
LSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdG
RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7
Ci19Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxl
bWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0
ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZl
Y3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNywxMyArMzcsMTEgQEAgcHJpdmF0ZToKICAgICAvLyBGSVhNRTogc3ZnQXR0cmlidXRlQ2hh
bmdlZCBtaXNzaW5nLgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4g
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJv
cGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEp
CisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFQ29tcG9uZW50VHJh
bnNmZXJFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkK
KyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVt
ZW50LmNwcAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b3NpdGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTEgKzQwLDIzIEBAIERFRklO
RV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVDb21wb3NpdGVFbGUKIERFRklORV9BTklNQVRFRF9OVU1C
RVIoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6azNBdHRyLCBLMywgazMpCiBERUZJ
TkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6Oms0QXR0
ciwgSzQsIGs0KQogCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFQ29t
cG9zaXRlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjEp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4yKQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKF9vcGVyYXRvcikKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWShrMSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShrMikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrMykKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShrNCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCitF
TkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUworCiBpbmxpbmUgU1ZHRkVDb21wb3NpdGVF
bGVtZW50OjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9fb3BlcmF0b3IoRkVDT01QT1NJ
VEVfT1BFUkFUT1JfT1ZFUikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVD
b21wb3NpdGVUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFQ29t
cG9zaXRlRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFQ29tcG9zaXRlRWxlbWVudD4g
U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTYwLDgzICsxNzIsNiBAQCB2b2lkIFNWR0ZFQ29t
cG9zaXRlRWxlbWVudDo6c3ZnQXR0cmlidXRlCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAKLXZvaWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFt
ZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplX29wZXJhdG9yKCk7Ci0gICAgICAgIHN5bmNocm9u
aXplSW4xKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSW4yKCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
SzEoKTsKLSAgICAgICAgc3luY2hyb25pemVLMigpOwotICAgICAgICBzeW5jaHJvbml6ZUszKCk7
Ci0gICAgICAgIHN5bmNocm9uaXplSzQoKTsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0cikgewotICAgICAgICBzeW5jaHJv
bml6ZV9vcGVyYXRvcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW4y
QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMigpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjprMUF0dHIpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVLMSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjprMkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVLMigpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjprM0F0dHIp
IHsKLSAgICAgICAgc3luY2hyb25pemVLMygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjprNEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25p
emVLNCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRUNvbXBvc2l0ZUVsZW1l
bnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0K
LXZvaWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7ICAgIAotICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0
cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbjJB
dHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjpvcGVyYXRvckF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6azFBdHRyLCBBbmltYXRlZE51bWJl
cik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjprMkF0dHIs
IEFuaW1hdGVkTnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OmszQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChTVkdOYW1lczo6azRBdHRyLCBBbmltYXRlZE51bWJlcik7Ci19Ci0KIFBhc3NS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVm
ZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCShyZXZpc2lvbiA5
MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtODUsMTkgKzg1LDE3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgYm9vbCBzZXRG
aWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4g
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJv
cGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEp
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4yLCBpbjIpCi0gICAgREVDTEFSRV9BTklN
QVRFRF9FTlVNRVJBVElPTihfb3BlcmF0b3IsIF9vcGVyYXRvciwgQ29tcG9zaXRlT3BlcmF0aW9u
VHlwZSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLMSwgazEpCi0gICAgREVDTEFSRV9B
TklNQVRFRF9OVU1CRVIoSzIsIGsyKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEszLCBr
MykKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLNCwgazQpCisgICAgQkVHSU5fREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
U1RSSU5HKEluMiwgaW4yKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKF9v
cGVyYXRvciwgX29wZXJhdG9yLCBDb21wb3NpdGVPcGVyYXRpb25UeXBlKQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX05VTUJFUihLMSwgazEpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVN
QkVSKEsyLCBrMikKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoSzMsIGszKQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLNCwgazQpCisgICAgRU5EX0RFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDExICs0OCwyOCBAQCBERUZJTkVfQU5J
TUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTCiBERUZJTkVfQU5JTUFURURfTlVNQkVSX01V
TFRJUExFX1dSQVBQRVJTKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6a2Vy
bmVsVW5pdExlbmd0aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllcigpLCBLZXJuZWxV
bml0TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0aFkpCiBERUZJTkVfQU5JTUFURURfQk9PTEVBTihT
VkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQWxwaGFBdHRyLCBQ
cmVzZXJ2ZUFscGhhLCBwcmVzZXJ2ZUFscGhhKQogCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKGluMSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWShvcmRlclgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkob3JkZXJZ
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGtlcm5lbE1hdHJpeCkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShkaXZpc29yKQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGJpYXMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkodGFyZ2V0WCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WSh0YXJnZXRZKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGVkZ2VNb2Rl
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGtlcm5lbFVuaXRMZW5ndGhY
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGtlcm5lbFVuaXRMZW5ndGhZ
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHByZXNlcnZlQWxwaGEpCisg
ICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKKwog
aW5saW5lIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpTVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAg
ICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1l
bnQpCiAgICAgLCBtX2VkZ2VNb2RlKEVER0VNT0RFX0RVUExJQ0FURSkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVDb252b2x2ZU1hdHJpeFRhZykpOworICAgIHJlZ2lzdGVy
QW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQoKTsKIH0KIAog
UGFzc1JlZlB0cjxTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudD4gU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCkBAIC0yNDUsODggKzI2Miw2IEBAIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQ6OnN2Z0F0dHIKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewot
ICAgICAgICBzeW5jaHJvbml6ZUVkZ2VNb2RlKCk7Ci0gICAgICAgIHN5bmNocm9uaXplRGl2aXNv
cigpOwotICAgICAgICBzeW5jaHJvbml6ZUJpYXMoKTsKLSAgICAgICAgc3luY2hyb25pemVUYXJn
ZXRYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplVGFyZ2V0WSgpOwotICAgICAgICBzeW5jaHJvbml6
ZUtlcm5lbFVuaXRMZW5ndGhYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplS2VybmVsVW5pdExlbmd0
aFkoKTsKLSAgICAgICAgc3luY2hyb25pemVQcmVzZXJ2ZUFscGhhKCk7Ci0gICAgICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRy
TmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0
cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjplZGdlTW9kZUF0dHIpIHsK
LSAgICAgICAgc3luY2hyb25pemVFZGdlTW9kZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkaXZpc29yQXR0cikgewotICAgICAgICBz
eW5jaHJvbml6ZURpdmlzb3IoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6Ymlhc0F0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVCaWFz
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnRhcmdldFhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplVGFyZ2V0WCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0YXJnZXRZ
QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVRhcmdldFkoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0
dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVLZXJuZWxVbml0TGVuZ3RoWCgpOwotICAgICAgICBz
eW5jaHJvbml6ZUtlcm5lbFVuaXRMZW5ndGhZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQWxwaGFBdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplUHJlc2VydmVBbHBoYSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpvcmRlckF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9u
YWxOdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
a2VybmVsTWF0cml4QXR0ciwgQW5pbWF0ZWROdW1iZXJMaXN0KTsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmRpdmlzb3JBdHRyLCBBbmltYXRlZE51bWJlcik7
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpiaWFzQXR0ciwg
QW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6dGFyZ2V0WEF0dHIsIEFuaW1hdGVkSW50ZWdlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp0YXJnZXRZQXR0ciwgQW5pbWF0ZWRJbnRlZ2VyKTsK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om9wZXJhdG9yQXR0
ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwgQW5pbWF0ZWROdW1iZXJPcHRpb25h
bE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpw
cmVzZXJ2ZUFscGhhQXR0ciwgQW5pbWF0ZWRCb29sZWFuKTsKLX0KLQogUGFzc1JlZlB0cjxGaWx0
ZXJFZmZlY3Q+IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3Qq
IGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmgJKHJldmlz
aW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDkgKzc4LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCBi
b29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVy
RWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBvcmRlclhJZGVudGlmaWVyKCk7CkBAIC04OCwxOSArODUsMjAg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVu
Z3RoWElkZW50aWZpZXIoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBrZXJuZWxV
bml0TGVuZ3RoWUlkZW50aWZpZXIoKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xh
cmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xB
UkVfQU5JTUFURURfSU5URUdFUihPcmRlclgsIG9yZGVyWCkKLSAgICBERUNMQVJFX0FOSU1BVEVE
X0lOVEVHRVIoT3JkZXJZLCBvcmRlclkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVJfTElT
VChLZXJuZWxNYXRyaXgsIGtlcm5lbE1hdHJpeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJF
UihEaXZpc29yLCBkaXZpc29yKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEJpYXMsIGJp
YXMpCi0gICAgREVDTEFSRV9BTklNQVRFRF9JTlRFR0VSKFRhcmdldFgsIHRhcmdldFgpCi0gICAg
REVDTEFSRV9BTklNQVRFRF9JTlRFR0VSKFRhcmdldFksIHRhcmdldFkpCi0gICAgREVDTEFSRV9B
TklNQVRFRF9FTlVNRVJBVElPTihFZGdlTW9kZSwgZWRnZU1vZGUsIEVkZ2VNb2RlVHlwZSkKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExl
bmd0aFgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFksIGtl
cm5lbFVuaXRMZW5ndGhZKQotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihQcmVzZXJ2ZUFs
cGhhLCBwcmVzZXJ2ZUFscGhhKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9T
VFJJTkcoSW4xLCBpbjEpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihPcmRlclgs
IG9yZGVyWCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9JTlRFR0VSKE9yZGVyWSwgb3JkZXJZ
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUl9MSVNUKEtlcm5lbE1hdHJpeCwga2Vy
bmVsTWF0cml4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihEaXZpc29yLCBkaXZp
c29yKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihCaWFzLCBiaWFzKQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoVGFyZ2V0WCwgdGFyZ2V0WCkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9JTlRFR0VSKFRhcmdldFksIHRhcmdldFkpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfRU5VTUVSQVRJT04oRWRnZU1vZGUsIGVkZ2VNb2RlLCBFZGdlTW9kZVR5cGUpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxV
bml0TGVuZ3RoWCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoS2VybmVsVW5pdExl
bmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xF
QU4oUHJlc2VydmVBbHBoYSwgcHJlc2VydmVBbHBoYSkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAkocmV2
aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTIgKzQyLDIyIEBAIERFRklORV9BTklN
QVRFRF9OVU1CRVIoU1ZHRkVEaWZmdXNlTGlnaHQKIERFRklORV9BTklNQVRFRF9OVU1CRVJfTVVM
VElQTEVfV1JBUFBFUlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6a2Vy
bmVsVW5pdExlbmd0aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpLCBLZXJuZWxV
bml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgpCiBERUZJTkVfQU5JTUFURURfTlVNQkVSX01V
TFRJUExFX1dSQVBQRVJTKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6Omtl
cm5lbFVuaXRMZW5ndGhBdHRyLCBrZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIoKSwgS2VybmVs
VW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZKQogCitCRUdJTl9SRUdJU1RFUl9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCkKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkoZGlmZnVzZUNvbnN0YW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKHN1cmZhY2VTY2FsZSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShrZXJuZWxVbml0TGVuZ3RoWCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShrZXJuZWxVbml0TGVuZ3RoWSkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCitFTkRfUkVHSVNURVJf
QU5JTUFURURfUFJPUEVSVElFUworCiBpbmxpbmUgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
OjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9kaWZmdXNlQ29uc3RhbnQoMSkK
ICAgICAsIG1fc3VyZmFjZVNjYWxlKDEpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OmZlRGlmZnVzZUxpZ2h0aW5nVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRp
ZXNGb3JTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAg
LTE5NCw2NyArMjA0LDYgQEAgdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmxpZ2h0
RQogICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi12b2lkIFNW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkg
ewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICBzeW5jaHJvbml6ZVN1cmZhY2VT
Y2FsZSgpOwotICAgICAgICBzeW5jaHJvbml6ZURpZmZ1c2VDb25zdGFudCgpOwotICAgICAgICBz
eW5jaHJvbml6ZUtlcm5lbFVuaXRMZW5ndGhYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplS2VybmVs
VW5pdExlbmd0aFkoKTsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAg
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0
eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmxpZ2h0aW5nX2NvbG9yQXR0cikKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVJ
bjEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6c3VyZmFjZVNjYWxlQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVN1cmZhY2VTY2Fs
ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjpkaWZmdXNlQ29uc3RhbnRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRGlmZnVzZUNv
bnN0YW50KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplS2Vy
bmVsVW5pdExlbmd0aFgoKTsKLSAgICAgICAgc3luY2hyb25pemVLZXJuZWxVbml0TGVuZ3RoWSgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0K
LXZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0K
LSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7ICAgIAot
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmlt
YXRlZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjpkaWZmdXNlQ29uc3RhbnRBdHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyLCBBbmltYXRlZE51
bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjprZXJu
ZWxVbml0TGVuZ3RoQXR0ciwgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7Ci19Ci0KIFBh
c3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAg
IEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEo
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudC5oCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMjAgKzQzLDE4IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0
ZSopOwogICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZm
ZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRl
ciopOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYga2VybmVsVW5pdExlbmd0aFhJ
ZGVudGlmaWVyKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYga2VybmVsVW5pdExl
bmd0aFlJZGVudGlmaWVyKCk7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlv
bnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKLSAgICBERUNMQVJFX0FO
SU1BVEVEX05VTUJFUihEaWZmdXNlQ29uc3RhbnQsIGRpZmZ1c2VDb25zdGFudCkKLSAgICBERUNM
QVJFX0FOSU1BVEVEX05VTUJFUihTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSkKLSAgICBERUNM
QVJFX0FOSU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgp
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVu
aXRMZW5ndGhZKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKElu
MSwgaW4xKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihEaWZmdXNlQ29uc3RhbnQs
IGRpZmZ1c2VDb25zdGFudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3VyZmFj
ZVNjYWxlLCBzdXJmYWNlU2NhbGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEtl
cm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWCkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZKQorICAgIEVO
RF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMiArMzcs
MjIgQEAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFRGlzcGxhYwogREVGSU5FX0FO
SU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6
OnlDaGFubmVsU2VsZWN0b3JBdHRyLCBZQ2hhbm5lbFNlbGVjdG9yLCB5Q2hhbm5lbFNlbGVjdG9y
LCBDaGFubmVsU2VsZWN0b3JUeXBlKQogREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQsIFNWR05hbWVzOjpzY2FsZUF0dHIsIFNjYWxlLCBzY2FsZSkKIAor
QkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRURpc3BsYWNlbWVudE1hcEVs
ZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaW4xKQorICAgIFJF
R0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGluMikKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWSh4Q2hhbm5lbFNlbGVjdG9yKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKHlDaGFubmVsU2VsZWN0b3IpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoc2NhbGUpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVS
X0FOSU1BVEVEX1BST1BFUlRJRVMKKwogaW5saW5lIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dDo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1feENoYW5uZWxTZWxlY3RvcihD
SEFOTkVMX0EpCiAgICAgLCBtX3lDaGFubmVsU2VsZWN0b3IoQ0hBTk5FTF9BKQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZURpc3BsYWNlbWVudE1hcFRhZykpOworICAgIHJl
Z2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KCk7
CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50PiBTVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCkBAIC0xMzksNjkgKzE0OSw2IEBAIHZvaWQgU1ZHRkVEaXNwbGFj
ZW1lbnRNYXBFbGVtZW50OjpzdmdBdHQKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAot
dm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFO
YW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVYQ2hhbm5lbFNlbGVjdG9yKCk7Ci0gICAgICAg
IHN5bmNocm9uaXplWUNoYW5uZWxTZWxlY3RvcigpOwotICAgICAgICBzeW5jaHJvbml6ZUluMSgp
OwotICAgICAgICBzeW5jaHJvbml6ZUluMigpOwotICAgICAgICBzeW5jaHJvbml6ZVNjYWxlKCk7
Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25p
emVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
IWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4
Q2hhbm5lbFNlbGVjdG9yQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVhDaGFubmVsU2VsZWN0
b3IoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6eUNoYW5uZWxTZWxlY3RvckF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVZQ2hhbm5l
bFNlbGVjdG9yKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmluQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbjJBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4yKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNjYWxlQXR0cikgewotICAgICAgICBzeW5j
aHJvbml6ZVNjYWxlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKLQotICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6
ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Omlu
QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6aW4yQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eENoYW5uZWxTZWxlY3RvckF0dHIsIEFuaW1hdGVk
RW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6eUNoYW5uZWxTZWxlY3RvckF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6c2NhbGVBdHRyLCBBbmltYXRlZE51
bWJlcik7Ci19Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciog
ZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0
RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFj
ZW1lbnRNYXBFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NzgsMTcgKzc4LDE1IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0
cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRy
aWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpOwogICAg
IHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwot
ICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkg
ZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCi0gICAg
REVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4yLCBpbjIpCi0gICAgREVDTEFSRV9BTklNQVRFRF9F
TlVNRVJBVElPTihYQ2hhbm5lbFNlbGVjdG9yLCB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVsU2Vs
ZWN0b3JUeXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oWUNoYW5uZWxTZWxl
Y3RvciwgeUNoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSkKLSAgICBERUNMQVJF
X0FOSU1BVEVEX05VTUJFUihTY2FsZSwgc2NhbGUpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RS
SU5HKEluMiwgaW4yKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFhDaGFu
bmVsU2VsZWN0b3IsIHhDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxTZWxlY3RvclR5cGUpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oWUNoYW5uZWxTZWxlY3RvciwgeUNoYW5u
ZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9OVU1CRVIoU2NhbGUsIHNjYWxlKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJ
RVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNjY2KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw2ICszOSwxNSBAQCBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFRHJvcFNoYWRv
d0VsCiBERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQsIFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRyLCBzdGREZXZpYXRpb25YSWRl
bnRpZmllcigpLCBTdGREZXZpYXRpb25YLCBzdGREZXZpYXRpb25YKQogREVGSU5FX0FOSU1BVEVE
X05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRURyb3BTaGFkb3dFbGVtZW50LCBTVkdOYW1l
czo6c3RkRGV2aWF0aW9uQXR0ciwgc3RkRGV2aWF0aW9uWUlkZW50aWZpZXIoKSwgU3RkRGV2aWF0
aW9uWSwgc3RkRGV2aWF0aW9uWSkKIAorQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdGRURyb3BTaGFkb3dFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKGluMSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShkeCkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShkeSkKKyAgICBSRUdJU1RFUl9MT0NB
TF9BTklNQVRFRF9QUk9QRVJUWShzdGREZXZpYXRpb25YKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKHN0ZERldmlhdGlvblkpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5E
X1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKKwogaW5saW5lIFNWR0ZFRHJvcFNoYWRvd0Vs
ZW1lbnQ6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzKHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9keCgyKQpAQCAtNDcsNiArNTYs
NyBAQCBpbmxpbmUgU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6U1ZHRkVEcm9wCiAgICAgLCBtX3N0
ZERldmlhdGlvblkoMikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVEcm9w
U2hhZG93VGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRURyb3BT
aGFkb3dFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVEcm9wU2hhZG93RWxlbWVudD4g
U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTE0MCw0NyArMTUwLDYgQEAgdm9pZCBTVkdGRURy
b3BTaGFkb3dFbGVtZW50OjpzdmdBdHRyaWJ1dAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQogCi12b2lkIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFO
YW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVTdGREZXZpYXRpb25YKCk7Ci0gICAgICAgIHN5
bmNocm9uaXplU3RkRGV2aWF0aW9uWSgpOwotICAgICAgICBzeW5jaHJvbml6ZUR4KCk7Ci0gICAg
ICAgIHN5bmNocm9uaXplRHkoKTsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5
KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN0ZERldmlhdGlv
bkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVTdGREZXZpYXRpb25YKCk7Ci0gICAgICAgIHN5
bmNocm9uaXplU3RkRGV2aWF0aW9uWSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVJ
bjEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6ZHhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRHgoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZHlBdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplRHkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEcm9w
U2hhZG93RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmls
dGVyKiBmaWx0ZXIpCiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRl
cmVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50
LmgJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTggKzM5LDE4IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1
YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciosIEZpbHRlciopOwogICAgIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN0ZERl
dmlhdGlvblhJZGVudGlmaWVyKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3Rk
RGV2aWF0aW9uWUlkZW50aWZpZXIoKTsKICAgICAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBk
ZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX05VTUJFUihEeCwgZHgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1C
RVIoRHksIGR5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFN0ZERldmlhdGlvblgsIHN0
ZERldmlhdGlvblgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3RkRGV2aWF0aW9uWSwg
c3RkRGV2aWF0aW9uWSkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZH
RkVEcm9wU2hhZG93RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4x
LCBpbjEpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKER4LCBkeCkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9OVU1CRVIoRHksIGR5KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X05VTUJFUihTdGREZXZpYXRpb25YLCBzdGREZXZpYXRpb25YKQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX05VTUJFUihTdGREZXZpYXRpb25ZLCBzdGREZXZpYXRpb25ZKQorICAgIEVORF9ERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAJKHJldmlzaW9u
IDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzQsMTkgKzc0LDYgQEAgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNW
R0ZFRmxvb2RFbGVtZQogICAgIHJldHVybiBGRUZsb29kOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwg
b3BhY2l0eSk7CiB9CiAKLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRUZsb29kRWxl
bWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0K
LQotdm9pZCBTVkdGRUZsb29kRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNz
ZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
KTsKLX0KLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCi0K
LS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVu
dC5oCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCw2IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgU1ZHRkVGbG9vZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0g
ICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZp
bHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKTsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVy
Kik7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEwICszNywxOCBA
QCBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFR2F1c3NpYW5CbHVyCiBERUZJTkVfQU5JTUFU
RURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCwgU1ZH
TmFtZXM6OnN0ZERldmlhdGlvbkF0dHIsIHN0ZERldmlhdGlvblhJZGVudGlmaWVyKCksIFN0ZERl
dmlhdGlvblgsIHN0ZERldmlhdGlvblgpCiBERUZJTkVfQU5JTUFURURfTlVNQkVSX01VTFRJUExF
X1dSQVBQRVJTKFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCwgU1ZHTmFtZXM6OnN0ZERldmlhdGlv
bkF0dHIsIHN0ZERldmlhdGlvbllJZGVudGlmaWVyKCksIFN0ZERldmlhdGlvblksIHN0ZERldmlh
dGlvblkpCiAKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGluMSkK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShzdGREZXZpYXRpb25YKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHN0ZERldmlhdGlvblkpCisgICAgUkVH
SVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKKwogaW5saW5l
IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6ZmVHYXVzc2lhbkJsdXJUYWcpKTsKKyAgICBy
ZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCgpOwog
fQogCiBQYXNzUmVmUHRyPFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudD4gU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQpAQCAtMTE5LDUwICsxMjcsNiBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudDo6c3ZnQXR0cmliCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZH
RkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplU3RkRGV2aWF0aW9uWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVN0
ZERldmlhdGlvblkoKTsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJO
YW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIp
IHsKLSAgICAgICAgc3luY2hyb25pemVTdGREZXZpYXRpb25YKCk7Ci0gICAgICAgIHN5bmNocm9u
aXplU3RkRGV2aWF0aW9uWSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQot
Ci1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Ojph
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
KCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lk
IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpzdGREZXZpYXRp
b25BdHRyLCBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKLX0KLQogUGFzc1JlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0
KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJKHJldmlzaW9u
IDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MCwxOCArNDAsMTYgQEAgcHJpdmF0ZToKICAgICBib29sIGlz
U3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiwgRmlsdGVyKik7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdGREZXZpYXRp
b25YSWRlbnRpZmllcigpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN0ZERldmlh
dGlvbllJZGVudGlmaWVyKCk7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlv
bnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKLSAgICBERUNMQVJFX0FO
SU1BVEVEX05VTUJFUihTdGREZXZpYXRpb25YLCBzdGREZXZpYXRpb25YKQotICAgIERFQ0xBUkVf
QU5JTUFURURfTlVNQkVSKFN0ZERldmlhdGlvblksIHN0ZERldmlhdGlvblkpCisgICAgQkVHSU5f
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfTlVNQkVSKFN0ZERldmlhdGlvblgsIHN0ZERldmlhdGlvblgpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfTlVNQkVSKFN0ZERldmlhdGlvblksIHN0ZERldmlhdGlvblkpCisgICAg
RU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDEwICs0NCwxOCBAQCBERUZJTkVfQU5JTUFURURfUFJFU0VS
VkVBU1BFQ1RSQVRJTyhTVkdGCiBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR0ZFSW1hZ2VFbGVt
ZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikKIERFRklORV9BTklNQVRFRF9C
T09MRUFOKFNWR0ZFSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpCiAKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVJbWFnZUVs
ZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocHJlc2VydmVBc3Bl
Y3RSYXRpbykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShocmVmKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJ
RVMKKwogaW5saW5lIFNWR0ZFSW1hZ2VFbGVtZW50OjpTVkdGRUltYWdlRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlSW1hZ2VUYWcpKTsKKyAgICByZWdpc3RlckFu
aW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFSW1hZ2VFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8
U1ZHRkVJbWFnZUVsZW1lbnQ+IFNWR0ZFSW1hZ2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTM4LDU0ICsxNDYsNiBA
QCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1l
ID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVQcmVzZXJ2ZUFzcGVjdFJhdGlv
KCk7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25p
emVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9ICAgCi0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplUHJlc2VydmVBc3BlY3RSYXRpbygpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFt
ZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFSW1hZ2VFbGVtZW50Ojph
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
KCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lk
IFNWR0ZFSW1hZ2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewot
ICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgQW5pbWF0
ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQogdm9pZCBTVkdG
RUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQogewogICAgIGlm
ICghaW5Eb2N1bWVudCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmgJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDkgKzUxLDYgQEAgcHJpdmF0ZToKICAgICBib29s
IGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VS
TD4mKSBjb25zdDsKQEAgLTYxLDE0ICs1OCwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXF1
ZXN0SW1hZ2VSZXNvdXJjZSgpOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRp
b25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNw
ZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCi0KLSAgICAvLyBTVkdVUklSZWZlcmVuY2UK
LSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQotCi0gICAgLy8gU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJF
R0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRUltYWdlRWxlbWVudCkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0UmF0
aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5H
KEhyZWYsIGhyZWYpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9ERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZEltYWdlPiBtX2NhY2hlZEltYWdlOwogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbV90YXJnZXRJ
bWFnZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAkocmV2
aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMCArNDgsMjQgQEAgREVGSU5FX0FOSU1BVEVEX05VTUJF
UihTVkdGRUxpZ2h0RWxlbWVudAogREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxl
bWVudCwgU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyLCBTcGVjdWxhckV4cG9uZW50LCBz
cGVjdWxhckV4cG9uZW50KQogREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRUxpZ2h0RWxlbWVu
dCwgU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0ciwgTGltaXRpbmdDb25lQW5nbGUsIGxp
bWl0aW5nQ29uZUFuZ2xlKQogCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R0ZFTGlnaHRFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGF6
aW11dGgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZWxldmF0aW9uKQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWSh6KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHBvaW50c0F0WCkK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShwb2ludHNBdFkpCisgICAgUkVH
SVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocG9pbnRzQXRaKQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKHNwZWN1bGFyRXhwb25lbnQpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkobGltaXRpbmdDb25lQW5nbGUpCitFTkRfUkVHSVNURVJfQU5J
TUFURURfUFJPUEVSVElFUworCiBTVkdGRUxpZ2h0RWxlbWVudDo6U1ZHRkVMaWdodEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDog
U1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fc3BlY3VsYXJFeHBvbmVudCgx
KQogeworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVMaWdodEVsZW1lbnQo
KTsKIH0KIAogU1ZHRkVMaWdodEVsZW1lbnQqIFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRF
bGVtZW50KGNvbnN0IFNWR0VsZW1lbnQqIHN2Z0VsZW1lbnQpCkBAIC0xOTQsMTAyICsyMDgsNiBA
QCB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1l
ID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVBemltdXRoKCk7Ci0gICAgICAg
IHN5bmNocm9uaXplRWxldmF0aW9uKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAg
ICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgc3luY2hyb25pemVaKCk7Ci0gICAgICAgIHN5bmNo
cm9uaXplUG9pbnRzQXRYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUG9pbnRzQXRZKCk7Ci0gICAg
ICAgIHN5bmNocm9uaXplUG9pbnRzQXRaKCk7Ci0gICAgICAgIHN5bmNocm9uaXplU3BlY3VsYXJF
eHBvbmVudCgpOwotICAgICAgICBzeW5jaHJvbml6ZUxpbWl0aW5nQ29uZUFuZ2xlKCk7Ci0gICAg
ICAgIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKLSAgICAgICAgU1ZHRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
OjphemltdXRoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUF6aW11dGgoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZWxldmF0aW9u
QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUVsZXZhdGlvbigpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cikgewotICAgICAg
ICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnpBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplWigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFhBdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplUG9pbnRzQXRYKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0WUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25p
emVQb2ludHNBdFkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6cG9pbnRzQXRaQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVBvaW50
c0F0WigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVNwZWN1
bGFyRXhwb25lbnQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6bGltaXRpbmdDb25lQW5nbGVBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplTGltaXRpbmdDb25lQW5nbGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZH
RkVMaWdodEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmF6aW11dGhBdHRy
LCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjplbGV2YXRpb25BdHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVk
TnVtYmVyKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnpB
dHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjpwb2ludHNBdFhBdHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwb2ludHNBdFlBdHRyLCBBbmltYXRlZE51
bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwb2lu
dHNBdFpBdHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwot
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6bGltaXRpbmdDb25l
QW5nbGVBdHRyLCBBbmltYXRlZE51bWJlcik7Ci19Ci0KIHZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdl
LCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKICAgICBTVkdFbGVt
ZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVy
Q2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TGlnaHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGln
aHRFbGVtZW50LmgJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TGlnaHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDIyICs0MiwyMCBAQCBwcml2YXRl
OgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0g
ICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAg
ICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2Vk
QnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFu
Z2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9w
ZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihBemltdXRoLCBh
emltdXRoKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEVsZXZhdGlvbiwgZWxldmF0aW9u
KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFgsIHgpCi0gICAgREVDTEFSRV9BTklNQVRF
RF9OVU1CRVIoWSwgeSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihaLCB6KQotICAgIERF
Q0xBUkVfQU5JTUFURURfTlVNQkVSKFBvaW50c0F0WCwgcG9pbnRzQXRYKQotICAgIERFQ0xBUkVf
QU5JTUFURURfTlVNQkVSKFBvaW50c0F0WSwgcG9pbnRzQXRZKQotICAgIERFQ0xBUkVfQU5JTUFU
RURfTlVNQkVSKFBvaW50c0F0WiwgcG9pbnRzQXRaKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVN
QkVSKFNwZWN1bGFyRXhwb25lbnQsIHNwZWN1bGFyRXhwb25lbnQpCi0gICAgREVDTEFSRV9BTklN
QVRFRF9OVU1CRVIoTGltaXRpbmdDb25lQW5nbGUsIGxpbWl0aW5nQ29uZUFuZ2xlKQorICAgIEJF
R0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRUxpZ2h0RWxlbWVudCkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQXppbXV0aCwgYXppbXV0aCkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9OVU1CRVIoRWxldmF0aW9uLCBlbGV2YXRpb24pCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfTlVNQkVSKFgsIHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVS
KFksIHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFosIHopCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfTlVNQkVSKFBvaW50c0F0WCwgcG9pbnRzQXRYKQorICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX05VTUJFUihQb2ludHNBdFksIHBvaW50c0F0WSkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9OVU1CRVIoUG9pbnRzQXRaLCBwb2ludHNBdFopCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfTlVNQkVSKFNwZWN1bGFyRXhwb25lbnQsIHNwZWN1bGFyRXhwb25lbnQpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKExpbWl0aW5nQ29uZUFuZ2xlLCBsaW1pdGluZ0Nv
bmVBbmdsZSkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVy
Z2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTkgKzYwLDYgQEAgUGFzc1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTWVyZ2VFbGVtZQogICAgIHJldHVybiBlZmZlY3QucmVsZWFz
ZSgpOwogfQogCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVNZXJnZUVsZW1lbnQ6
OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZv
aWQgU1ZHRkVNZXJnZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17
Ci0gICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsUGFzc2VkQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKSk7Ci19
Ci0KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5oCShyZXZpc2lvbiA5MDY2NikKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw4ICszNCw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHRkVNZXJnZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVy
Kik7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVt
ZW50LmNwcAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJn
ZU5vZGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTAgKzM1LDE1IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCiBERUZJTkVf
QU5JTUFURURfU1RSSU5HKFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwg
SW4xLCBpbjEpCiAKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVNZXJn
ZU5vZGVFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGluMSkK
K0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCisKIGlubGluZSBTVkdGRU1lcmdlTm9k
ZUVsZW1lbnQ6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZU1lcmdlTm9kZVRhZykp
OworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVNZXJnZU5vZGVFbGVtZW50
KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRkVNZXJnZU5vZGVFbGVtZW50PiBTVkdGRU1lcmdlTm9k
ZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCkBAIC05NCwzOCArOTksNiBAQCB2b2lkIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6
c3ZnQXR0cmlidXRlCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLUF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJu
IHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRkVNZXJnZU5vZGVF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCkuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5n
KTsKLX0KLQotdm9pZCBTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFu
eVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgU1ZHRWxlbWVu
dDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBT
VkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0gICAKLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgJKHJldmlzaW9u
IDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNywxMiArMzcsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3Vw
cG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBz
eW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAotICAg
IC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURf
U1RSSU5HKEluMSwgaW4xKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhT
VkdGRU1lcmdlTm9kZUVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKElu
MSwgaW4xKQorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xv
Z3lFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMSArMzcs
MjAgQEAgREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0ZFTW9ycGhvbAogREVGSU5FX0FO
SU1BVEVEX05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRU1vcnBob2xvZ3lFbGVtZW50LCBT
VkdOYW1lczo6cmFkaXVzQXR0ciwgcmFkaXVzWElkZW50aWZpZXIoKSwgUmFkaXVzWCwgcmFkaXVz
WCkKIERFRklORV9BTklNQVRFRF9OVU1CRVJfTVVMVElQTEVfV1JBUFBFUlMoU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudCwgU1ZHTmFtZXM6OnJhZGl1c0F0dHIsIHJhZGl1c1lJZGVudGlmaWVyKCksIFJh
ZGl1c1ksIHJhZGl1c1kpCiAKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZH
RkVNb3JwaG9sb2d5RWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShpbjEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoX29wZXJhdG9yKQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHJhZGl1c1gpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocmFkaXVzWSkKKyAgICBSRUdJU1RFUl9QQVJFTlRf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMp
CitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUworCiBpbmxpbmUgU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudDo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX19vcGVyYXRvcihGRU1P
UlBIT0xPR1lfT1BFUkFUT1JfRVJPREUpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OmZlTW9ycGhvbG9neVRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9y
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQ+IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xNDUsNTcgKzE1NCw2IEBAIHZv
aWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c3ZnQXR0cmlidXQKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFt
ZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplX29wZXJhdG9yKCk7Ci0gICAg
ICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUmFkaXVzWCgpOwotICAg
ICAgICBzeW5jaHJvbml6ZVJhZGl1c1koKTsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0cikgewotICAgICAgICBzeW5jaHJv
bml6ZV9vcGVyYXRvcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cmFk
aXVzQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVJhZGl1c1goKTsKLSAgICAgICAgc3luY2hy
b25pemVSYWRpdXNZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFTW9ycGhv
bG9neUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXA7Ci19Ci0KLXZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwotCi0gICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsUGFzc2Vk
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwot
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmlt
YXRlZFN0cmluZyk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjpvcGVyYXRvckF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cmFkaXVzQXR0ciwgQW5pbWF0ZWROdW1iZXJPcHRp
b25hbE51bWJlcik7Ci19Ci0KIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1vcnBob2xv
Z3lFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIq
IGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdl
dEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhv
bG9neUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudC5oCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRU1vcnBob2xvZ3lFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDE5ICs3MCwxNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVm
ZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0
ZXIqKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHJhZGl1c1hJZGVudGlmaWVy
KCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcmFkaXVzWUlkZW50aWZpZXIoKTsK
IAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5J
TUFURURfU1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04o
X29wZXJhdG9yLCBfb3BlcmF0b3IsIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUpCi0gICAgREVDTEFS
RV9BTklNQVRFRF9OVU1CRVIoUmFkaXVzWCwgcmFkaXVzWCkKLSAgICBERUNMQVJFX0FOSU1BVEVE
X05VTUJFUihSYWRpdXNZLCByYWRpdXNZKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVElFUyhTVkdGRU1vcnBob2xvZ3lFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X1NUUklORyhJbjEsIGluMSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihf
b3BlcmF0b3IsIF9vcGVyYXRvciwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9OVU1CRVIoUmFkaXVzWCwgcmFkaXVzWCkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9OVU1CRVIoUmFkaXVzWSwgcmFkaXVzWSkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2NjYpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzYsMTAgKzM2LDE4IEBAIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRkVPZmZzZXRFbGVt
ZW4KIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHRkVPZmZzZXRFbGVtZW50LCBTVkdOYW1lczo6
ZHhBdHRyLCBEeCwgZHgpCiBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNWR0ZFT2Zmc2V0RWxlbWVu
dCwgU1ZHTmFtZXM6OmR5QXR0ciwgRHksIGR5KQogCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR0ZFT2Zmc2V0RWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShpbjEpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZHgp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZHkpCisgICAgUkVHSVNURVJf
UEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKKwogaW5saW5lIFNWR0ZF
T2Zmc2V0RWxlbWVudDo6U1ZHRkVPZmZzZXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFt
ZShTVkdOYW1lczo6ZmVPZmZzZXRUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGll
c0ZvclNWR0ZFT2Zmc2V0RWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZFT2Zmc2V0RWxl
bWVudD4gU1ZHRkVPZmZzZXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTAxLDU1ICsxMDksNiBAQCB2b2lkIFNWR0ZF
T2Zmc2V0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLXZvaWQgU1ZHRkVPZmZzZXRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFt
ZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRHgoKTsKLSAgICAgICAgc3luY2hyb25pemVEeSgp
OwotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFt
ZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5j
aHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZHhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
RHgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6ZHlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRHkoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplSW4xKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZF
T2Zmc2V0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcDsKLX0KLQotdm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
LQotICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbFBhc3NlZEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0
ZWRTdHJpbmcpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
ZHhBdHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjpkeUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKLX0KLQogUGFzc1JlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciog
ZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1
dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwx
NSArMzgsMTMgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Rmls
dGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKLSAgICAvLyBB
bmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklO
RyhJbjEsIGluMSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihEeCwgZHgpCi0gICAgREVD
TEFSRV9BTklNQVRFRF9OVU1CRVIoRHksIGR5KQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdGRU9mZnNldEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
U1RSSU5HKEluMSwgaW4xKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihEeCwgZHgp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKER5LCBkeSkKKyAgICBFTkRfREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQuY3BwCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsMTYgQEAg
REVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdGRVNwZWN1bGFyTGlnaAogREVGSU5FX0FOSU1BVEVE
X05VTUJFUl9NVUxUSVBMRV9XUkFQUEVSUyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBT
VkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmll
cigpLCBLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgpCiBERUZJTkVfQU5JTUFU
RURfTlVNQkVSX01VTFRJUExFX1dSQVBQRVJTKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQs
IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwga2VybmVsVW5pdExlbmd0aFlJZGVudGlm
aWVyKCksIEtlcm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKIAorQkVHSU5fUkVH
SVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50KQor
ICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGluMSkKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShzcGVjdWxhckNvbnN0YW50KQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKHNwZWN1bGFyRXhwb25lbnQpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkoc3VyZmFjZVNjYWxlKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKGtlcm5lbFVuaXRMZW5ndGhYKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKGtlcm5lbFVuaXRMZW5ndGhZKQorICAgIFJFR0lTVEVSX1BBUkVOVF9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykK
K0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCisKIGlubGluZSBTVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50OjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fc3Bl
Y3VsYXJDb25zdGFudCgxKQpAQCAtNTEsNiArNjEsNyBAQCBpbmxpbmUgU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudDo6U1ZHCiAgICAgLCBtX3N1cmZhY2VTY2FsZSgxKQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZVNwZWN1bGFyTGlnaHRpbmdUYWcpKTsKKyAgICByZWdp
c3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQoKTsK
IH0KIAogUGFzc1JlZlB0cjxTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50PiBTVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMjA0LDcxICsyMTUsNiBAQCB2b2lkIFNWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQ6OmxpZ2h0CiAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChh
dHRyTmFtZSk7CiB9CiAKLXZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAo
YXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwotICAg
ICAgICBzeW5jaHJvbml6ZVN1cmZhY2VTY2FsZSgpOwotICAgICAgICBzeW5jaHJvbml6ZVNwZWN1
bGFyQ29uc3RhbnQoKTsKLSAgICAgICAgc3luY2hyb25pemVTcGVjdWxhckV4cG9uZW50KCk7Ci0g
ICAgICAgIHN5bmNocm9uaXplS2VybmVsVW5pdExlbmd0aFgoKTsKLSAgICAgICAgc3luY2hyb25p
emVLZXJuZWxVbml0TGVuZ3RoWSgpOwotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsK
LSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6
ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSW4xKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnN1cmZhY2VTY2FsZUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVTdXJmYWNlU2NhbGUoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
c3BlY3VsYXJDb25zdGFudEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVTcGVjdWxhckNvbnN0
YW50KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplU3BlY3Vs
YXJFeHBvbmVudCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6
ZUtlcm5lbFVuaXRMZW5ndGhYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplS2VybmVsVW5pdExlbmd0
aFkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsK
LX0KLQotdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNz
ZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFu
aW1hdGVkU3RyaW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OnNwZWN1bGFyQ29uc3RhbnRBdHRyLCBBbmltYXRlZE51bWJlcik7Ci0gICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciwgQW5p
bWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6c3VyZmFjZVNjYWxlQXR0ciwgQW5pbWF0ZWROdW1iZXIpOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIEFuaW1hdGVk
TnVtYmVyT3B0aW9uYWxOdW1iZXIpOwotfQotCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVy
QnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBm
aWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAkocmV2aXNpb24gOTA2
NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MiwyMSArNDIsMTkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCBib29s
IHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICBzdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKTsKICAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIoKTsKIAot
ICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFU
RURfU1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFNwZWN1bGFy
Q29uc3RhbnQsIHNwZWN1bGFyQ29uc3RhbnQpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIo
U3BlY3VsYXJFeHBvbmVudCwgc3BlY3VsYXJFeHBvbmVudCkKLSAgICBERUNMQVJFX0FOSU1BVEVE
X05VTUJFUihTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSkKLSAgICBERUNMQVJFX0FOSU1BVEVE
X05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgpCi0gICAgREVDTEFS
RV9BTklNQVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZKQor
ICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3BlY3VsYXJDb25zdGFudCwgc3BlY3VsYXJD
b25zdGFudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3BlY3VsYXJFeHBvbmVu
dCwgc3BlY3VsYXJFeHBvbmVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU3Vy
ZmFjZVNjYWxlLCBzdXJmYWNlU2NhbGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVS
KEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWCkKKyAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9OVU1CRVIoS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZKQorICAg
IEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAJKHJldmlz
aW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSwxMCArMzUsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8g
QW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZH
RkVUaWxlRWxlbWVudCwgU1ZHTmFtZXM6OmluQXR0ciwgSW4xLCBpbjEpCiAKK0JFR0lOX1JFR0lT
VEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVUaWxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShpbjEpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQorRU5EX1JF
R0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKKwogaW5saW5lIFNWR0ZFVGlsZUVsZW1lbnQ6OlNW
R0ZFVGlsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgIDogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05h
bWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZVRpbGVU
YWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZFVGlsZUVsZW1lbnQo
KTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGRVRpbGVFbGVtZW50PiBTVkdGRVRpbGVFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpA
QCAtODYsNDEgKzkyLDYgQEAgdm9pZCBTVkdGRVRpbGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
ZwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0g
ICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVJbjEo
KTsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJv
bml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
ICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjppbkF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVJbjEoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgU1ZHRkVUaWxlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGRVRpbGVFbGVtZW50OjpmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFVGlsZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIs
IEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVp
bGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVUaWxlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRp
bGVFbGVtZW50LmgJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
VGlsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTMgKzM3LDExIEBAIHByaXZhdGU6
CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAg
IHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVj
bGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCisgICAgQkVH
SU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFVGlsZUVsZW1lbnQpCisgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAgIEVORF9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDkw
NjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCwxNiBAQCBERUZJTkVfQU5JTUFURURfTlVNQkVSKFNW
R0ZFVHVyYnVsZW5jZUVsCiBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHRkVUdXJidWxl
bmNlRWxlbWVudCwgU1ZHTmFtZXM6OnN0aXRjaFRpbGVzQXR0ciwgU3RpdGNoVGlsZXMsIHN0aXRj
aFRpbGVzLCBTVkdTdGl0Y2hPcHRpb25zKQogREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQsIFNWR05hbWVzOjp0eXBlQXR0ciwgVHlwZSwgdHlwZSwgVHVy
YnVsZW5jZVR5cGUpCiAKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVU
dXJidWxlbmNlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShi
YXNlRnJlcXVlbmN5WCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShiYXNl
RnJlcXVlbmN5WSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShudW1PY3Rh
dmVzKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHNlZWQpCisgICAgUkVH
SVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoc3RpdGNoVGlsZXMpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkodHlwZSkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCitFTkRf
UkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUworCiBpbmxpbmUgU1ZHRkVUdXJidWxlbmNlRWxl
bWVudDo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX251bU9jdGF2ZXMoMSkKQEAgLTQ1
LDYgKzU1LDcgQEAgaW5saW5lIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OlNWR0ZFVHVyYgogICAg
ICwgbV90eXBlKEZFVFVSQlVMRU5DRV9UWVBFX1RVUkJVTEVOQ0UpCiB7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoU1ZHTmFtZXM6OmZlVHVyYnVsZW5jZVRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0
ZWRQcm9wZXJ0aWVzRm9yU1ZHRkVUdXJidWxlbmNlRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRy
PFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ+IFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xNjAs
NzEgKzE3MSw2IEBAIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6c3ZnQXR0cmlidXQKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50
OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewot
ICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplVHlw
ZSgpOwotICAgICAgICBzeW5jaHJvbml6ZVN0aXRjaFRpbGVzKCk7Ci0gICAgICAgIHN5bmNocm9u
aXplQmFzZUZyZXF1ZW5jeVgoKTsKLSAgICAgICAgc3luY2hyb25pemVCYXNlRnJlcXVlbmN5WSgp
OwotICAgICAgICBzeW5jaHJvbml6ZVNlZWQoKTsKLSAgICAgICAgc3luY2hyb25pemVOdW1PY3Rh
dmVzKCk7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3lu
Y2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5h
bWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjp0eXBlQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVR5cGUoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3RpdGNoVGlsZXNB
dHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplU3RpdGNoVGlsZXMoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0
dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVCYXNlRnJlcXVlbmN5WCgpOwotICAgICAgICBzeW5j
aHJvbml6ZUJhc2VGcmVxdWVuY3lZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNlZWRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
U2VlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjpudW1PY3RhdmVzQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZU51bU9jdGF2ZXMo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
fQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAs
ICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9p
ZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpiYXNlRnJlcXVlbmN5QXR0ciwgQW5pbWF0
ZWROdW1iZXJPcHRpb25hbE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjpudW1PY3RhdmVzQXR0ciwgQW5pbWF0ZWRJbnRlZ2VyKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNlZWRBdHRyLCBBbmltYXRlZE51
bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpzdGl0
Y2hUaWxlc0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6dHlwZUF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwot
fQotCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciogZmlsdGVyKQogewogICAgIGlmIChiYXNlRnJl
cXVlbmN5WCgpIDwgMCB8fCBiYXNlRnJlcXVlbmN5WSgpIDwgMCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAkocmV2aXNpb24gOTA2NjYpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDUsMjEgKzEwNSwxOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZm
ZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIGJhc2VGcmVxdWVuY3lYSWRlbnRpZmllcigpOwogICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIGJhc2VGcmVxdWVuY3lZSWRlbnRpZmllcigpOwogCi0gICAgLy8gQW5p
bWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIo
QmFzZUZyZXF1ZW5jeVgsIGJhc2VGcmVxdWVuY3lYKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVN
QkVSKEJhc2VGcmVxdWVuY3lZLCBiYXNlRnJlcXVlbmN5WSkKLSAgICBERUNMQVJFX0FOSU1BVEVE
X0lOVEVHRVIoTnVtT2N0YXZlcywgbnVtT2N0YXZlcykKLSAgICBERUNMQVJFX0FOSU1BVEVEX05V
TUJFUihTZWVkLCBzZWVkKQotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oU3RpdGNo
VGlsZXMsIHN0aXRjaFRpbGVzLCBTVkdTdGl0Y2hPcHRpb25zKQotICAgIERFQ0xBUkVfQU5JTUFU
RURfRU5VTUVSQVRJT04oVHlwZSwgdHlwZSwgVHVyYnVsZW5jZVR5cGUpCisgICAgQkVHSU5fREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQpCisgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEJhc2VGcmVxdWVuY3lYLCBiYXNlRnJlcXVlbmN5WCkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQmFzZUZyZXF1ZW5jeVksIGJhc2VGcmVx
dWVuY3lZKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIoTnVtT2N0YXZlcywgbnVt
T2N0YXZlcykKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoU2VlZCwgc2VlZCkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihTdGl0Y2hUaWxlcywgc3RpdGNoVGls
ZXMsIFNWR1N0aXRjaE9wdGlvbnMpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJ
T04oVHlwZSwgdHlwZSwgVHVyYnVsZW5jZVR5cGUpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURf
UFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEx
ICs0OCwyMSBAQCBERUZJTkVfQU5JTUFURURfSU5URUdFUl9NVUxUSVBMRV9XUkFQUEVSCiBERUZJ
TkVfQU5JTUFURURfU1RSSU5HKFNWR0ZpbHRlckVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRy
LCBIcmVmLCBocmVmKQogREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHRmlsdGVyRWxlbWVudCwg
U1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogCitCRUdJTl9SRUdJU1RFUl9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlckVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoZmlsdGVyVW5pdHMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkocHJpbWl0aXZlVW5pdHMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkoeCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5KQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHdpZHRoKQorICAgIFJFR0lTVEVSX0xP
Q0FMX0FOSU1BVEVEX1BST1BFUlRZKGhlaWdodCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShmaWx0ZXJSZXNYKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKGZpbHRlclJlc1kpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJl
ZikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKKwogaW5saW5lIFNW
R0ZpbHRlckVsZW1lbnQ6OlNWR0ZpbHRlckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKLSAgICAsIFNWR1VSSVJlZmVyZW5jZSgpCi0gICAgLCBTVkdMYW5nU3BhY2Uo
KQotICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCiAgICAgLCBtX2ZpbHRlclVu
aXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkKICAgICAs
IG1fcHJpbWl0aXZlVW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9O
VVNFKQogICAgICwgbV94KExlbmd0aE1vZGVXaWR0aCwgIi0xMCUiKQpAQCAtNjMsNiArNzMsNyBA
QCBpbmxpbmUgU1ZHRmlsdGVyRWxlbWVudDo6U1ZHRmlsdGVyRWxlbWVuCiAgICAgLy8gU3BlYzog
SWYgdGhlIHgveSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBp
ZiBhIHZhbHVlIG9mICItMTAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICAvLyBTcGVjOiBJZiB0aGUg
d2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFz
IGlmIGEgdmFsdWUgb2YgIjEyMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIEFTU0VSVChoYXNUYWdO
YW1lKFNWR05hbWVzOjpmaWx0ZXJUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGll
c0ZvclNWR0ZpbHRlckVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdGaWx0ZXJFbGVtZW50
PiBTVkdGaWx0ZXJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTg5LDk4ICsyMDAsNiBAQCB2b2lkIFNWR0ZpbHRlckVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nCiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQo
dHJ1ZSk7CiB9CiAKLXZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55
UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgc3luY2hyb25pemVZ
KCk7Ci0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAgc3luY2hyb25pemVIZWln
aHQoKTsKLSAgICAgICAgc3luY2hyb25pemVGaWx0ZXJVbml0cygpOwotICAgICAgICBzeW5jaHJv
bml6ZVByaW1pdGl2ZVVuaXRzKCk7Ci0gICAgICAgIHN5bmNocm9uaXplRmlsdGVyUmVzWCgpOwot
ICAgICAgICBzeW5jaHJvbml6ZUZpbHRlclJlc1koKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAg
ICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHko
YXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjp4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAg
ICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVdp
ZHRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmhlaWdodEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZmlsdGVy
VW5pdHNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRmlsdGVyVW5pdHMoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cHJpbWl0aXZl
VW5pdHNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplUHJpbWl0aXZlVW5pdHMoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZmlsdGVy
UmVzQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUZpbHRlclJlc1goKTsKLSAgICAgICAgc3lu
Y2hyb25pemVGaWx0ZXJSZXNZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRmlsdGVyRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4g
c19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdGaWx0ZXJFbGVtZW50
OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsUGFzc2Vk
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwot
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZmlsdGVyVW5pdHNB
dHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OnByaW1pdGl2ZVVuaXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5p
bWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5n
dGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZmlsdGVy
UmVzQXR0ciwgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7
Ci19Ci0KIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdl
ZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hp
bGRDb3VudERlbHRhKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChj
aGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0
YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgJKHJldmlzaW9uIDkw
NjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNTQsOSArNTQsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVm
b3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRh
ID0gMCk7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqLCBSZW5kZXJTdHlsZSopOwpAQCAtNjYsMjEgKzYzLDE4IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZmlsdGVyUmVzWElkZW50aWZpZXIoKTsKICAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBmaWx0ZXJSZXNZSWRlbnRpZmllcigpOwogCi0gICAg
Ly8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9F
TlVNRVJBVElPTihGaWx0ZXJVbml0cywgZmlsdGVyVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5p
dFR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihQcmltaXRpdmVVbml0cywg
cHJpbWl0aXZlVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCi0gICAgREVDTEFSRV9B
TklNQVRFRF9MRU5HVEgoWCwgeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQot
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKLSAgICBERUNMQVJFX0FO
SU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0lOVEVH
RVIoRmlsdGVyUmVzWCwgZmlsdGVyUmVzWCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0lOVEVHRVIo
RmlsdGVyUmVzWSwgZmlsdGVyUmVzWSkKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERF
Q0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgQkVHSU5fREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlckVsZW1lbnQpCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfRU5VTUVSQVRJT04oRmlsdGVyVW5pdHMsIGZpbHRlclVuaXRzLCBTVkdVbml0
VHlwZXM6OlNWR1VuaXRUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9O
KFByaW1pdGl2ZVVuaXRzLCBwcmltaXRpdmVVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlw
ZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgo
V2lkdGgsIHdpZHRoKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhl
aWdodCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9JTlRFR0VSKEZpbHRlclJlc1gsIGZpbHRl
clJlc1gpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihGaWx0ZXJSZXNZLCBmaWx0
ZXJSZXNZKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwg
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUSUVTCiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkocmV2aXNpb24gOTA2
NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsMTUgQEAgREVGSU5FX0FOSU1B
VEVEX0xFTkdUSChTVkdGaWx0ZXJQcmltaXRpdgogREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBI
ZWlnaHQsIGhlaWdodCkKIERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdOYW1lczo6cmVzdWx0QXR0ciwgUmVzdWx0LCByZXN1bHQp
CiAKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZ
KHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeSkKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh3aWR0aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShoZWlnaHQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkocmVzdWx0KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0
eWxlZEVsZW1lbnQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUworCiBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV94
KExlbmd0aE1vZGVXaWR0aCwgIjAlIikKQEAgLTUyLDYgKzYxLDcgQEAgU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpTVgogewogICAgIC8vIFNwZWM6IElmIHRoZSB4L3kgYXR0
cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAi
MCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIC8vIFNwZWM6IElmIHRoZSB3aWR0aC9oZWlnaHQgYXR0
cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAi
MTAwJSIgd2VyZSBzcGVjaWZpZWQuCisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMoKTsKIH0KIAogYm9vbCBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpAQCAtMTIxLDUxICsxMzEsNiBAQCB2b2lkIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlCiAgICAgaW52YWxpZGF0ZSgpOwogfQogCi12
b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3luY2hyb25pemVQcm9w
ZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsgICAgCi0gICAgaWYgKGF0dHJO
YW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHN5
bmNocm9uaXplWSgpOwotICAgICAgICBzeW5jaHJvbml6ZVdpZHRoKCk7Ci0gICAgICAgIHN5bmNo
cm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHN5bmNocm9uaXplUmVzdWx0KCk7Ci0gICAgICAgIFNW
R1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFt
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikgewotICAgICAgICBz
eW5jaHJvbml6ZVkoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aGVpZ2h0QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpyZXN1bHRBdHRyKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplUmVzdWx0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQogdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwg
Tm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0
YSkKIHsKICAgICBTVkdTdHlsZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFy
c2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpAQCAtMjA0
LDE3ICsxNjksNiBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlCiAg
ICAgZmlsdGVyRWZmZWN0LT5zZXRFZmZlY3RCb3VuZGFyaWVzKGVmZmVjdEJCb3gpOwogfQogCi12
b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbFBhc3NlZEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCkKLXsKLSAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsUGFzc2Vk
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwot
ICAgIAotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIs
IEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVk
TGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnJl
c3VsdEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQogUmVuZGVyT2JqZWN0KiBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBh
cmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlclByaW1pdGl2ZSh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgJKHJl
dmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw4ICs1MSw2IEBAIHByb3Rl
Y3RlZDoKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAg
ICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKLSAgICB2b2lkIGZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5n
ZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwg
Tm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICBp
bmxpbmUgdm9pZCBpbnZhbGlkYXRlKCkKQEAgLTczLDEyICs3MSwxMyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRl
clN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJl
bmRlcmluZ0NvbnRleHQmKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9u
cwotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCi0gICAgREVDTEFSRV9BTklNQVRF
RF9MRU5HVEgoWSwgeSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwgd2lkdGgp
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCi0gICAgREVDTEFS
RV9BTklNQVRFRF9TVFJJTkcoUmVzdWx0LCByZXN1bHQpCisgICAgQkVHSU5fREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUSUVTKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcykKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9MRU5HVEgoWSwgeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgs
IHdpZHRoKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkK
KyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoUmVzdWx0LCByZXN1bHQpCisgICAgRU5E
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAJKHJldmlzaW9uIDkw
NjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNCwyMCArMTA0LDYgQEAgYm9vbCBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlTWFw
cGVkQXR0cmlidQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBTVkdGaXRUb1ZpZXdCb3g6
OnN5bmNocm9uaXplUHJvcGVydGllcyhjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsK
LSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVZp
ZXdCb3goKTsKLSAgICAgICAgc3luY2hyb25pemVQcmVzZXJ2ZUFzcGVjdFJhdGlvKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnZpZXdC
b3hBdHRyKQotICAgICAgICBzeW5jaHJvbml6ZVZpZXdCb3goKTsKLSAgICBlbHNlIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIpCi0gICAgICAgIHN5bmNo
cm9uaXplUHJlc2VydmVBc3BlY3RSYXRpbygpOwotfQotCiBib29sIFNWR0ZpdFRvVmlld0JveDo6
aXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBy
ZXR1cm4gYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnZpZXdCb3hBdHRyIHx8IGF0dHJOYW1lID09IFNW
R05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGaXRUb1ZpZXdCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rml0VG9WaWV3Qm94LmgJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZpdFRvVmlld0JveC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxNCArNDMsMTAgQEAgcHVibGlj
OgogICAgIGJvb2wgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoRG9jdW1lbnQqLCBBdHRyaWJ1dGUqKTsK
ICAgICBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZv
aWQgYWRkU3VwcG9ydGVkQXR0cmlidXRlcyhIYXNoU2V0PFF1YWxpZmllZE5hbWU+Jik7Ci0gICAg
dm9pZCBzeW5jaHJvbml6ZVByb3BlcnRpZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAg
dmlydHVhbCB2b2lkIHNldFZpZXdCb3hCYXNlVmFsdWUoY29uc3QgRmxvYXRSZWN0JikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVzZXJ2ZUFzcGVjdFJhdGlvQmFzZVZhbHVlKGNvbnN0IFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW8mKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25p
emVWaWV3Qm94KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByZXNlcnZlQXNw
ZWN0UmF0aW8oKSA9IDA7Ci0KIHByaXZhdGU6CiAgICAgYm9vbCBwYXJzZVZpZXdCb3goRG9jdW1l
bnQqLCBjb25zdCBTdHJpbmcmLCBGbG9hdFJlY3QmKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9udEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZvbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTUgKzM2LDIxIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRp
b25zCisvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwogREVGSU5FX0FOSU1BVEVEX0JP
T0xFQU4oU1ZHRm9udEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
QXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCkKIAorQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGb250RWxlbWVudCkK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxl
ZEVsZW1lbnQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUworCiBpbmxpbmUgU1ZH
Rm9udEVsZW1lbnQ6OlNWR0ZvbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpIAogICAgICwgbV9taXNzaW5nR2x5cGgoMCkKICAgICAsIG1faXNHbHlwaENhY2hlVmFs
aWQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZvbnRUYWcpKTsK
KyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZvbnRFbGVtZW50KCk7CiB9CiAK
IFBhc3NSZWZQdHI8U1ZHRm9udEVsZW1lbnQ+IFNWR0ZvbnRFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNTIsMTQgKzU4
LDYgQEAgUGFzc1JlZlB0cjxTVkdGb250RWxlbWVudD4gU1ZHRm9udEVsZW1lbgogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU1ZHRm9udEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAot
dm9pZCBTVkdGb250RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKLXsKLSAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGF0dHJOYW1lKTsKLQotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpIHx8IFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAg
ICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLX0KLQogdm9pZCBT
VkdGb250RWxlbWVudDo6aW52YWxpZGF0ZUdseXBoQ2FjaGUoKQogewogICAgIGlmIChtX2lzR2x5
cGhDYWNoZVZhbGlkKSB7CkBAIC0yNTksMTcgKzI1Nyw2IEBAIEdseXBoIFNWR0ZvbnRFbGVtZW50
OjptaXNzaW5nR2x5cGgoKQogICAgIHJldHVybiBtX21pc3NpbmdHbHlwaDsKIH0KIAotQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZvbnRFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBz
X2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0ZvbnRFbGVtZW50Ojpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIFNWR1N0eWxlZEVsZW1lbnQ6
OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpKTsKLX0KLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWR19GT05UUykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5oCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MywxOCAr
NzMsMTQgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVBy
b3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJ
c05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9ICAK
LSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAg
dmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKIAogICAgIHZvaWQgZW5zdXJlR2x5cGhDYWNoZSgpOwogICAgIHZvaWQgcmVnaXN0
ZXJMaWdhdHVyZXNJbkdseXBoQ2FjaGUoVmVjdG9yPFN0cmluZz4mKTsKIAotICAgIC8vIEFuaW1h
dGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdGb250RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogCiAgICAgS2Vybmlu
Z1BhaXJWZWN0b3IgbV9ob3Jpem9udGFsS2VybmluZ1BhaXJzOwogICAgIEtlcm5pbmdQYWlyVmVj
dG9yIG1fdmVydGljYWxLZXJuaW5nUGFpcnM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIsNiArNDIsMTcgQEAgREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGb3JlaWduT2JqZWN0
RQogREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgWExpbmtO
YW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCiBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdG
b3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRB
dHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQogCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAgUkVH
SVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWSh3aWR0aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShoZWlnaHQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaHJlZikKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKKwogaW5saW5l
IFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1feChMZW5n
dGhNb2RlV2lkdGgpCkBAIC01MCw2ICs2MSw3IEBAIGlubGluZSBTVkdGb3JlaWduT2JqZWN0RWxl
bWVudDo6U1ZHRm9yZWkKICAgICAsIG1faGVpZ2h0KExlbmd0aE1vZGVIZWlnaHQpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RUYWcpKTsKKyAgICByZWdp
c3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KCk7CiB9CiAK
IFBhc3NSZWZQdHI8U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ+IFNWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQpAQCAtMTM0LDc2ICsxNDYsNiBAQCB2b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50Ojpz
dmdBdHRyaWJ1CiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFy
ZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVyZXIpOwogfQogCi12b2lkIFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgc3luY2hyb25p
emVXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAgICBzeW5jaHJv
bml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgc3luY2hyb25pemVIcmVm
KCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5h
bWUpOwotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQ
cm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlz
U3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVkoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
d2lkdGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0
aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17ICAgIAotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBh
c3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBB
bmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExl
bmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6Omhy
ZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0KIFJlbmRlck9iamVjdCogU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5
bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdGb3JlaWduT2JqZWN0KHRo
aXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50
LmgJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDI2ICs0NSwyNSBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAg
dmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwot
ICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2
aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9k
ZSopIGNvbnN0OwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSk7CiAKICAgICB2aXJ0dWFsIGJvb2wg
c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RI
KFdpZHRoLCB3aWR0aCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdo
dCkKLQotICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5H
KEhyZWYsIGhyZWYpCi0KLSAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAg
REVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSChYLCB4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwgd2lkdGgpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBF
TkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5j
aHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVk
RXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxh
bmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1l
bnQuY3BwCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEzICszMSwyMCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLS8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucworLy8gQW5pbWF0ZWQg
cHJvcGVydHkgZGVmaW5pdGlvbnMKIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0dFbGVtZW50
LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAKK0JFR0lOX1JFR0lTVEVS
X0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHR0VsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9Q
QVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkK
KyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9S
RUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCisKIFNWR0dFbGVtZW50OjpTVkdHRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBB
U1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6Z1RhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQ
cm9wZXJ0aWVzRm9yU1ZHR0VsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdHRWxlbWVudD4g
U1ZHR0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCkBAIC04OSw0NCArOTYsNiBAQCB2b2lkIFNWR0dFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvCiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0
QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVyZXIpOwogfQogCi12b2lkIFNWR0dF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBTVkdUZXN0czo6c3luY2hy
b25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkgewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHR0VsZW1lbnQ6OmF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7
Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZH
R0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpKTsKLX0KLQogUmVuZGVyT2JqZWN0KiBT
VkdHRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHls
ZSogc3R5bGUpCiB7CiAgICAgLy8gU1ZHIDEuMSB0ZXN0c3VpdGUgZXhwbGljaXRlbHkgdXNlcyBj
b25zdHJ1Y3RzIGxpa2UgPGcgZGlzcGxheT0ibm9uZSI+PGxpbmVhckdyYWRpZW50PgpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDE2ICs1MSwxNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29u
c3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRl
Y2xhcmF0aW9ucworICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdHRWxl
bWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVElFUwogCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAot
ICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXpl
UmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJl
cXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNp
b25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2Uo
KSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVt
ZW50LmNwcAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDIwICsxMjksNiBAQCBzdGF0aWMgaW5s
aW5lIGZsb2F0IHBhcnNlU1ZHR2x5cGhBdHRyaWJ1CiAgICAgcmV0dXJuIHZhbHVlLnRvRmxvYXQo
KTsKIH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0dseXBoRWxlbWVudDo6YXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgp
KTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBT
VkdHbHlwaEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAg
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0g
dGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZEVsZW1l
bnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjpkQXR0ciwgQW5pbWF0ZWRQYXRoKTsKLX0KLQogU1ZHR2x5cGggU1ZHR2x5cGhFbGVtZW50Ojpi
dWlsZEdlbmVyaWNHbHlwaElkZW50aWZpZXIoY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkKIHsK
ICAgICBTVkdHbHlwaCBpZGVudGlmaWVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ds
eXBoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVs
ZW1lbnQuaAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDggQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBTVkdHbHlwaEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7
CiAKKyAgICAvLyBGSVhNRTogc3ZnQXR0cmlidXRlQ2hhbmdlZCBtaXNzaW5nLgogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVkRnJvbURvY3VtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGll
bnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGll
bnRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTEgKzQ1LDIxIEBAIERF
RklORV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChTVkdHcmFkaWUKIERFRklORV9BTklNQVRFRF9T
VFJJTkcoU1ZHR3JhZGllbnRFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJl
ZikKIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR0dyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6
OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR0dyYWRpZW50RWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShzcHJlYWRNZXRob2QpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkoZ3JhZGllbnRVbml0cykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShncmFkaWVudFRyYW5zZm9ybSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShocmVmKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHU3R5bGVkRWxlbWVudCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCisgCiBT
VkdHcmFkaWVudEVsZW1lbnQ6OlNWR0dyYWRpZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KQogICAgICwgbV9zcHJlYWRNZXRob2QoU1ZHU3ByZWFkTWV0aG9kUGFk
KQogICAgICwgbV9ncmFkaWVudFVuaXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpF
Q1RCT1VORElOR0JPWCkKIHsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0dy
YWRpZW50RWxlbWVudCgpOwogfQogCiBib29sIFNWR0dyYWRpZW50RWxlbWVudDo6aXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBAIC0xMTYsNjEgKzEy
Niw2IEBAIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGEKICAgICBpZiAo
UmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQogICAgICAgICBvYmplY3QtPnNldE5l
ZWRzTGF5b3V0KHRydWUpOwogfQotCi12b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6c3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0
ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUdyYWRpZW50VW5pdHMo
KTsKLSAgICAgICAgc3luY2hyb25pemVHcmFkaWVudFRyYW5zZm9ybSgpOwotICAgICAgICBzeW5j
aHJvbml6ZVNwcmVhZE1ldGhvZCgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQoKTsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAgIFNWR1N0
eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsK
LSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OmdyYWRpZW50VW5pdHNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplR3JhZGllbnRVbml0cygp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
OjpncmFkaWVudFRyYW5zZm9ybUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVHcmFkaWVudFRy
YW5zZm9ybSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjpzcHJlYWRNZXRob2RBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplU3ByZWFk
TWV0aG9kKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAg
c3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFNWR0dyYWRpZW50RWxl
bWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCkKLXsKLSAgICBTVkdTdHls
ZWRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXApOwotCi0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjpzcHJlYWRNZXRob2RBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRy
LCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0ciwgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0
dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KICAgICAKIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwg
Tm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzMs
NyArNzMsNiBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHU3ByZWFkTWV0aG9kCiAgICAg
fQogfTsKIAotCiBjbGFzcyBTVkdHcmFkaWVudEVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkRWxl
bWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCB7CkBAIC05MywyNCArOTIsMTkgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaXNTdXBw
b3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5
bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZvaWQgZmlsbFBh
c3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
Jik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG5lZWRzUGVuZGluZ1Jlc291cmNlSGFu
ZGxpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGNoaWxk
cmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFu
Z2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsK
IAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5J
TUFURURfRU5VTUVSQVRJT04oU3ByZWFkTWV0aG9kLCBzcHJlYWRNZXRob2QsIFNWR1NwcmVhZE1l
dGhvZFR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihHcmFkaWVudFVuaXRz
LCBncmFkaWVudFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQotICAgIERFQ0xBUkVf
QU5JTUFURURfVFJBTlNGT1JNX0xJU1QoR3JhZGllbnRUcmFuc2Zvcm0sIGdyYWRpZW50VHJhbnNm
b3JtKQotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJ
TkcoSHJlZiwgaHJlZikKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHR3JhZGllbnRFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1F
UkFUSU9OKFNwcmVhZE1ldGhvZCwgc3ByZWFkTWV0aG9kLCBTVkdTcHJlYWRNZXRob2RUeXBlKQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKEdyYWRpZW50VW5pdHMsIGdyYWRp
ZW50VW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCisgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfVFJBTlNGT1JNX0xJU1QoR3JhZGllbnRUcmFuc2Zvcm0sIGdyYWRpZW50VHJhbnNmb3Jt
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVT
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
SW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsMTggQEAgREVG
SU5FX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oU1ZHSQogREVGSU5FX0FOSU1BVEVEX1NU
UklORyhTVkdJbWFnZUVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQog
REVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHSW1hZ2VFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZ
KHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeSkKKyAgICBSRUdJU1RF
Ul9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh3aWR0aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShoZWlnaHQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkocHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWShocmVmKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FO
SU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVS
VElFUworCiBpbmxpbmUgU1ZHSW1hZ2VFbGVtZW50OjpTVkdJbWFnZUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3goTGVuZ3Ro
TW9kZVdpZHRoKQpAQCAtNTQsNiArNjYsNyBAQCBpbmxpbmUgU1ZHSW1hZ2VFbGVtZW50OjpTVkdJ
bWFnZUVsZW1lbnQoCiAgICAgLCBtX2ltYWdlTG9hZGVyKHRoaXMpCiB7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoU1ZHTmFtZXM6OmltYWdlVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3Bl
cnRpZXNGb3JTVkdJbWFnZUVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdJbWFnZUVsZW1l
bnQ+IFNWR0ltYWdlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTE3Myw4OCArMTg2LDYgQEAgdm9pZCBTVkdJbWFnZUVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
Ci12b2lkIFNWR0ltYWdlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewot
ICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAg
IHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAg
ICAgc3luY2hyb25pemVQcmVzZXJ2ZUFzcGVjdFJhdGlvKCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsK
LSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7
Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBw
b3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpIHsKLSAgICAg
ICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0
aEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplUHJlc2VydmVBc3BlY3RSYXRpbygpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1VSSVJlZmVy
ZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVI
cmVmKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVGVzdHM6OmlzS25v
d25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVBy
b3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBT
VkdJbWFnZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0K
LSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0aCk7
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5p
bWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlv
QXR0ciwgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0K
LQogYm9vbCBTVkdJbWFnZUVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdAog
ewogICAgIHJldHVybiB4KCkuaXNSZWxhdGl2ZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0lt
YWdlRWxlbWVudC5oCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJ
bWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsOSArNTEsNiBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAg
dmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwot
ICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2
aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBp
bnNlcnRlZEludG9Eb2N1bWVudCgpOwpAQCAtNjgsMTggKzY1LDIwIEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKIAotICAgIC8vIEFuaW1hdGVkIHBy
b3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSChXaWR0aCwgd2lkdGgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBo
ZWlnaHQpCi0gICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZl
QXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCi0KLSAgICAvLyBTVkdVUklSZWZlcmVu
Y2UKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQotCi0gICAgLy8gU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAg
IEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdJbWFnZUVsZW1lbnQpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfTEVOR1RIKFksIHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFdpZHRoLCB3
aWR0aCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCisg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVj
dFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NU
UklORyhIcmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRf
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1
YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25p
emVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0
ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1
YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogCiAg
ICAgU1ZHSW1hZ2VMb2FkZXIgbV9pbWFnZUxvYWRlcjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMaW5lRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0xpbmVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsMTYgQEAg
REVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdMaW5lRWxlbWVudCwgUwogREVGSU5FX0FOSU1BVEVE
X0xFTkdUSChTVkdMaW5lRWxlbWVudCwgU1ZHTmFtZXM6OnkyQXR0ciwgWTIsIHkyKQogREVGSU5F
X0FOSU1BVEVEX0JPT0xFQU4oU1ZHTGluZUVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCkKIAorQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdM
aW5lRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh4MSkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh5MSkKKyAgICBSRUdJU1RFUl9MT0NB
TF9BTklNQVRFRF9QUk9QRVJUWSh4MikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWSh5MikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklN
QVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJ
RVMKKwogaW5saW5lIFNWR0xpbmVFbGVtZW50OjpTVkdMaW5lRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1feDEoTGVuZ3RoTW9k
ZVdpZHRoKQpAQCAtNDgsNiArNTgsNyBAQCBpbmxpbmUgU1ZHTGluZUVsZW1lbnQ6OlNWR0xpbmVF
bGVtZW50KGNvCiAgICAgLCBtX3kyKExlbmd0aE1vZGVIZWlnaHQpCiB7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoU1ZHTmFtZXM6OmxpbmVUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVy
dGllc0ZvclNWR0xpbmVFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHTGluZUVsZW1lbnQ+
IFNWR0xpbmVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQpAQCAtMTQ1LDc0ICsxNTYsNiBAQCB2b2lkIFNWR0xpbmVFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZv
aWQgU1ZHTGluZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAg
ICAgc3luY2hyb25pemVYMSgpOwotICAgICAgICBzeW5jaHJvbml6ZVkxKCk7Ci0gICAgICAgIHN5
bmNocm9uaXplWDIoKTsKLSAgICAgICAgc3luY2hyb25pemVZMigpOwotICAgICAgICBzeW5jaHJv
bml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNo
cm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6eDFBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWDEoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eTFB
dHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWTEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eDJBdHRyKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplWDIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6eTJBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWTIoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChT
VkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGVzdHM6
OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIFNWR0xpbmVFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
Ci17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
c19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR0xpbmVFbGVtZW50OjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3Nl
ZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OngxQXR0ciwgQW5p
bWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6eTFBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjp4MkF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnkyQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwot
fQotCiB2b2lkIFNWR0xpbmVFbGVtZW50Ojp0b1BhdGhEYXRhKFBhdGgmIHBhdGgpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKHBhdGguaXNFbXB0eSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMaW5lRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5l
RWxlbWVudC5oCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5l
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw5ICs0Nyw2IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmly
dHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAg
dmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1
YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdG9QYXRoRGF0YShQYXRoJikgY29uc3Q7CiAKQEAgLTU3
LDE0ICs1NCwxOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2
ZUxlbmd0aHMoKSBjb25zdDsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9u
cwotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgxLCB4MSkKLSAgICBERUNMQVJFX0FOSU1B
VEVEX0xFTkdUSChZMSwgeTEpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWDIsIHgyKQot
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFkyLCB5MikKLQotICAgIC8vIFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHTGluZUVsZW1lbnQpCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfTEVOR1RIKFgxLCB4MSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoWTEsIHkxKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYMiwgeDIpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFkyLCB5MikKKyAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8g
U1ZHVGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkg
eyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3lu
Y2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFu
Z3VhZ2UodGhpcyk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lv
biA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0NiwxNCBAQCBERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR0xpbmVhckdyYWRpZW50CiBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0xpbmVhckdy
YWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OngyQXR0ciwgWDIsIHgyKQogREVGSU5FX0FOSU1BVEVE
X0xFTkdUSChTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjp5MkF0dHIsIFkyLCB5
MikKIAorQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeDEpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeTEpCisgICAgUkVHSVNURVJfTE9DQUxf
QU5JTUFURURfUFJPUEVSVFkoeDIpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkoeTIpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHR3JhZGll
bnRFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKKwogaW5saW5lIFNW
R0xpbmVhckdyYWRpZW50RWxlbWVudDo6U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0dyYWRp
ZW50RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1feDEoTGVuZ3RoTW9kZVdpZHRo
KQpAQCAtNTUsNiArNjMsNyBAQCBpbmxpbmUgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpTVkdM
aW5lCiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIHgyIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVk
LCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEwMCUiIHdlcmUgc3BlY2lmaWVkLgog
ICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpsaW5lYXJHcmFkaWVudFRhZykpOworICAg
IHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50KCk7
CiB9CiAKIFBhc3NSZWZQdHI8U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50PiBTVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCkBAIC0xMTksNjIgKzEyOCw2IEBAIHZvaWQgU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50OjpzdmdBdHRyaWIKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCh0cnVlKTsK
IH0KIAotdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17ICAgIAotICAgIGlmIChhdHRyTmFtZSA9
PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplWDEoKTsKLSAgICAgICAgc3luY2hy
b25pemVZMSgpOwotICAgICAgICBzeW5jaHJvbml6ZVgyKCk7Ci0gICAgICAgIHN5bmNocm9uaXpl
WTIoKTsKLSAgICAgICAgU1ZHR3JhZGllbnRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0dyYWRpZW50RWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9ICAgCi0KLSAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OngxQXR0cikgewotICAgICAgICBzeW5jaHJvbml6
ZVgxKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnkxQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVkxKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OngyQXR0cikgewotICAg
ICAgICBzeW5jaHJvbml6ZVgyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnkyQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVkyKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
LQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAs
ICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9p
ZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNW
R0dyYWRpZW50RWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OngxQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eTFBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4MkF0dHIsIEFuaW1h
dGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OnkyQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotfQotCiBSZW5kZXJPYmplY3QqIFNWR0xpbmVhckdy
YWRpZW50RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJT
dHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1Jlc291cmNlTGluZWFy
R3JhZGllbnQodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdy
YWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTkgKzQyLDE3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0
ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCiAgICAgdmlydHVhbCBib29s
IHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIAotICAgIC8vIEFuaW1hdGVkIHByb3Bl
cnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgxLCB4MSkKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZMSwgeTEpCi0gICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEgoWDIsIHgyKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFkyLCB5MikKKyAgICBC
RUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYMSwgeDEpCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfTEVOR1RIKFkxLCB5MSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoWDIsIHgyKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZMiwgeTIpCisgICAg
RU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAJKHJldmlzaW9u
IDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDEwICszMiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBERUZJTkVf
QU5JTUFURURfU1RSSU5HKFNWR01QYXRoRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIEhy
ZWYsIGhyZWYpCiBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdNUGF0aEVsZW1lbnQsIFNWR05h
bWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKIAorQkVHSU5fUkVHSVNURVJfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdNUGF0aEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFU
RURfUFJPUEVSVFkoaHJlZikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJ
RVMKKwogaW5saW5lIFNWR01QYXRoRWxlbWVudDo6U1ZHTVBhdGhFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0VsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6Om1w
YXRoVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdNUGF0aEVsZW1l
bnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdNUGF0aEVsZW1lbnQ+IFNWR01QYXRoRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkK
QEAgLTY4LDQxICs3NCw2IEBAIHZvaWQgU1ZHTVBhdGhFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnUKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdNUGF0aEVsZW1lbnQ6
OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0g
ICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRy
TmFtZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6
ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBT
VkdNUGF0aEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHTVBhdGhFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQotewotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkuc2V0KFhMaW5r
TmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Ci19Ci0KIFNWR1BhdGhFbGVtZW50KiBT
VkdNUGF0aEVsZW1lbnQ6OnBhdGhFbGVtZW50KCkKIHsKICAgICBFbGVtZW50KiB0YXJnZXQgPSB0
cmVlU2NvcGUoKS0+Z2V0RWxlbWVudEJ5SWQoZ2V0VGFyZ2V0KGhyZWYoKSkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuaAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE3ICs0
NCwxMSBAQCBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFuZ2VkIG1pc3Np
bmcuCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwotICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAg
dmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotCi0gICAg
Ly8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJl
ZikKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FO
SU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHTVBh
dGhFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUSUVTCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiAr
MzIsMjAgQEAKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKKyAKKy8vIERlZmluZSBjdXN0b20gYW5pbWF0ZWQgcHJvcGVydHkgJ29yaWVudFR5cGUnLgor
Y29uc3QgU1ZHUHJvcGVydHlJbmZvKiBTVkdNYXJrZXJFbGVtZW50OjpvcmllbnRUeXBlUHJvcGVy
dHlJbmZvKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBzX3Byb3BlcnR5
SW5mbyA9IDA7CisgICAgaWYgKCFzX3Byb3BlcnR5SW5mbykgeworICAgICAgICBzX3Byb3BlcnR5
SW5mbyA9IG5ldyBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRFbnVtZXJhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpvcmllbnRBdHRy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZW50VHlw
ZUlkZW50aWZpZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZTVkdNYXJrZXJFbGVtZW50OjpzeW5jaHJvbml6ZU9yaWVudFR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU1ZHTWFya2VyRWxlbWVudDo6bG9v
a3VwT3JDcmVhdGVPcmllbnRUeXBlV3JhcHBlcik7CisgICAgfQorICAgIHJldHVybiBzX3Byb3Bl
cnR5SW5mbzsKK30KIAogLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKIERFRklORV9B
TklNQVRFRF9MRU5HVEgoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6OnJlZlhBdHRyLCBSZWZY
LCByZWZYKQpAQCAtNDQsNiArNTgsMjAgQEAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHTWFy
a2VyRWxlbWVudAogREVGSU5FX0FOSU1BVEVEX1JFQ1QoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFt
ZXM6OnZpZXdCb3hBdHRyLCBWaWV3Qm94LCB2aWV3Qm94KQogREVGSU5FX0FOSU1BVEVEX1BSRVNF
UlZFQVNQRUNUUkFUSU8oU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0
UmF0aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogCitC
RUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR01hcmtlckVsZW1lbnQpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocmVmWCkKKyAgICBSRUdJU1RFUl9MT0NB
TF9BTklNQVRFRF9QUk9QRVJUWShyZWZZKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKG1hcmtlcldpZHRoKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZ
KG1hcmtlckhlaWdodCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShtYXJr
ZXJVbml0cykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShvcmllbnRBbmds
ZSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShvcmllbnRUeXBlKQorICAg
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkodmlld0JveCkKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAg
IFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVsZW1lbnQpCitF
TkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUworCiBpbmxpbmUgU1ZHTWFya2VyRWxlbWVu
dDo6U1ZHTWFya2VyRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQog
ICAgICwgbV9yZWZYKExlbmd0aE1vZGVXaWR0aCkKQEAgLTU1LDYgKzgzLDcgQEAgaW5saW5lIFNW
R01hcmtlckVsZW1lbnQ6OlNWR01hcmtlckVsZW1lbgogewogICAgIC8vIFNwZWM6IElmIHRoZSBt
YXJrZXJXaWR0aC9tYXJrZXJIZWlnaHQgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBl
ZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiMyIgd2VyZSBzcGVjaWZpZWQuCiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUoU1ZHTmFtZXM6Om1hcmtlclRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQ
cm9wZXJ0aWVzRm9yU1ZHTWFya2VyRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR01hcmtl
ckVsZW1lbnQ+IFNWR01hcmtlckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xNzAsOTEgKzE5OSw2IEBAIHZvaWQgU1ZH
TWFya2VyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmcKICAgICAgICAgb2JqZWN0LT5zZXROZWVk
c0xheW91dCh0cnVlKTsKIH0KIAotdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFt
ZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplTWFya2VyVW5pdHMoKTsKLSAg
ICAgICAgc3luY2hyb25pemVSZWZYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUmVmWSgpOwotICAg
ICAgICBzeW5jaHJvbml6ZU1hcmtlcldpZHRoKCk7Ci0gICAgICAgIHN5bmNocm9uaXplTWFya2Vy
SGVpZ2h0KCk7Ci0gICAgICAgIHN5bmNocm9uaXplT3JpZW50QW5nbGUoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVPcmllbnRUeXBlKCk7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCgpOwotICAgICAgICBTVkdGaXRUb1ZpZXdCb3g6OnN5bmNocm9uaXplUHJvcGVy
dGllcyhhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1
cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6
c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1hcmtlclVuaXRzQXR0cikgewotICAgICAg
ICBzeW5jaHJvbml6ZU1hcmtlclVuaXRzKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJlZlhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9u
aXplUmVmWCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjpyZWZZQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVJlZlkoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6bWFya2Vy
V2lkdGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplTWFya2VyV2lkdGgoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6bWFya2VySGVp
Z2h0QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZU1hcmtlckhlaWdodCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpvcmllbnRBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplT3JpZW50QW5nbGUoKTsKLSAgICAgICAgc3luY2hyb25p
emVPcmllbnRUeXBlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAg
ICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRl
KGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaXRUb1ZpZXdCb3g6OnN5bmNocm9uaXplUHJvcGVy
dGllcyhhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR01hcmtlckVs
ZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19
Ci0KLXZvaWQgU1ZHTWFya2VyRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZH
U3R5bGVkRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnJlZlhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyZWZZQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwot
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6bWFya2VyV2lkdGhB
dHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjptYXJrZXJIZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjptYXJrZXJVbml0c0F0dHIsIEFuaW1h
dGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6b3JpZW50QXR0ciwgQW5pbWF0ZWRBbmdsZSk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgQW5pbWF0ZWRSZWN0KTsKLX0KLQog
dm9pZCBTVkdNYXJrZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJz
ZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50
RGVsdGEpCiB7CiAgICAgU1ZHU3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRC
eVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKQEAg
LTI3MCw5ICsyMTQsMTIgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnRUb0F1dG8o
KQogewogICAgIHNldE9yaWVudFR5cGVCYXNlVmFsdWUoU1ZHTWFya2VyT3JpZW50QXV0byk7CiAg
ICAgc2V0T3JpZW50QW5nbGVCYXNlVmFsdWUoU1ZHQW5nbGUoKSk7Ci0KLSAgICBpZiAoUmVuZGVy
T2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5
b3V0KHRydWUpOworIAorICAgIC8vIE1hcmsgb3JpZW50QXR0ciBkaXJ0eSAtIHRoZSBuZXh0IFhN
TCBET00gYWNjZXNzIG9mIHRoYXQgYXR0cmlidXRlIGtpY2tzIGluIHN5bmNocm9uaXphdGlvbi4K
KyAgICBtX29yaWVudEFuZ2xlLnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKKyAgICBtX29yaWVu
dFR5cGUuc2hvdWxkU3luY2hyb25pemUgPSB0cnVlOworICAgIGludmFsaWRhdGVTVkdBdHRyaWJ1
dGVzKCk7CisgICAgc3ZnQXR0cmlidXRlQ2hhbmdlZChvcmllbnRBbmdsZVByb3BlcnR5SW5mbygp
LT5hdHRyaWJ1dGVOYW1lKTsKIH0KIAogdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnRU
b0FuZ2xlKGNvbnN0IFNWR0FuZ2xlJiBhbmdsZSkKQEAgLTI4MCw4ICsyMjcsMTEgQEAgdm9pZCBT
VkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnRUb0FuZ2xlKAogICAgIHNldE9yaWVudFR5cGVCYXNl
VmFsdWUoU1ZHTWFya2VyT3JpZW50QW5nbGUpOwogICAgIHNldE9yaWVudEFuZ2xlQmFzZVZhbHVl
KGFuZ2xlKTsKIAotICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0g
ICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgLy8gTWFyayBvcmllbnRB
dHRyIGRpcnR5IC0gdGhlIG5leHQgWE1MIERPTSBhY2Nlc3Mgb2YgdGhhdCBhdHRyaWJ1dGUga2lj
a3MgaW4gc3luY2hyb25pemF0aW9uLgorICAgIG1fb3JpZW50QW5nbGUuc2hvdWxkU3luY2hyb25p
emUgPSB0cnVlOworICAgIG1fb3JpZW50VHlwZS5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7Cisg
ICAgaW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsKKyAgICBzdmdBdHRyaWJ1dGVDaGFuZ2VkKG9y
aWVudEFuZ2xlUHJvcGVydHlJbmZvKCktPmF0dHJpYnV0ZU5hbWUpOwogfQogCiBSZW5kZXJPYmpl
Y3QqIFNWR01hcmtlckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwg
UmVuZGVyU3R5bGUqKQpAQCAtMjk3LDI0ICsyNDcsMzMgQEAgYm9vbCBTVkdNYXJrZXJFbGVtZW50
OjpzZWxmSGFzUmVsYXRpdmVMZQogICAgICAgICB8fCBtYXJrZXJIZWlnaHQoKS5pc1JlbGF0aXZl
KCk7CiB9CiAKLXZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c3luY2hyb25pemVPcmllbnRUeXBlKCkK
K3ZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c3luY2hyb25pemVPcmllbnRUeXBlKHZvaWQqIGNvbnRl
eHRFbGVtZW50KQogewotICAgIGlmICghbV9vcmllbnRUeXBlLnNob3VsZFN5bmNocm9uaXplKQor
ICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7CisgICAgU1ZHTWFya2VyRWxlbWVudCogb3duZXJU
eXBlID0gc3RhdGljX2Nhc3Q8U1ZHTWFya2VyRWxlbWVudCo+KGNvbnRleHRFbGVtZW50KTsKKyAg
ICBpZiAoIW93bmVyVHlwZS0+bV9vcmllbnRUeXBlLnNob3VsZFN5bmNocm9uaXplKQogICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgQXRvbWljU3RyaW5nIHZhbHVlOwotICAgIGlmIChtX29yaWVu
dFR5cGUudmFsdWUgPT0gU1ZHTWFya2VyT3JpZW50QXV0bykKLSAgICAgICAgdmFsdWUgPSAiYXV0
byI7Ci0gICAgZWxzZSBpZiAobV9vcmllbnRUeXBlLnZhbHVlID09IFNWR01hcmtlck9yaWVudEFu
Z2xlKQotICAgICAgICB2YWx1ZSA9IG9yaWVudEFuZ2xlKCkudmFsdWVBc1N0cmluZygpOwogCi0g
ICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUodGhp
cywgU1ZHTmFtZXM6Om9yaWVudEF0dHIsIHZhbHVlKTsKKyAgICAvLyBJZiBvcmllbnQgaXMgbm90
IGF1dG8sIHRoZSBwcmV2aW91cyBjYWxsIHRvIHN5bmNocm9uaXplT3JpZW50QW5nbGUgYWxyZWFk
eSBzZXQgdGhlIG9yaWVudEF0dHIgdG8gdGhlIHJpZ2h0IGFuZ2xlLgorICAgIGlmIChvd25lclR5
cGUtPm1fb3JpZW50VHlwZS52YWx1ZSAhPSBTVkdNYXJrZXJPcmllbnRBdXRvKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgYXV0b1N0cmlu
ZywgKCJhdXRvIikpOworICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46
OnN5bmNocm9uaXplKG93bmVyVHlwZSwgb3JpZW50VHlwZVByb3BlcnR5SW5mbygpLT5hdHRyaWJ1
dGVOYW1lLCBhdXRvU3RyaW5nKTsKIH0KIAorUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5
PiBTVkdNYXJrZXJFbGVtZW50Ojpsb29rdXBPckNyZWF0ZU9yaWVudFR5cGVXcmFwcGVyKHZvaWQq
IGNvbnRleHRFbGVtZW50KQoreworICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7CisgICAgU1ZH
TWFya2VyRWxlbWVudCogb3duZXJUeXBlID0gc3RhdGljX2Nhc3Q8U1ZHTWFya2VyRWxlbWVudCo+
KGNvbnRleHRFbGVtZW50KTsKKyAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3Vw
T3JDcmVhdGVXcmFwcGVyPFNWR01hcmtlckVsZW1lbnQsIFNWR0FuaW1hdGVkRW51bWVyYXRpb25Q
cm9wZXJ0eVRlYXJPZmY8U1ZHTWFya2VyT3JpZW50VHlwZT4sIFNWR01hcmtlck9yaWVudFR5cGUs
IHRydWU+CisgICAgICAgICAgIChvd25lclR5cGUsIG9yaWVudFR5cGVQcm9wZXJ0eUluZm8oKSwg
b3duZXJUeXBlLT5tX29yaWVudFR5cGUudmFsdWUpOworfQorICAKIFBhc3NSZWZQdHI8U1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZjxTVkdNYXJrZXJPcmllbnRUeXBlPiA+IFNW
R01hcmtlckVsZW1lbnQ6Om9yaWVudFR5cGVBbmltYXRlZCgpCiB7CiAgICAgbV9vcmllbnRUeXBl
LnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKLSAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0
eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRl
YXJPZmY8U1ZHTWFya2VyT3JpZW50VHlwZT4sIFNWR01hcmtlck9yaWVudFR5cGU+KHRoaXMsIFNW
R05hbWVzOjpvcmllbnRBdHRyLCBvcmllbnRUeXBlSWRlbnRpZmllcigpLCBtX29yaWVudFR5cGUu
dmFsdWUpOworICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR0FuaW1hdGVkRW51bWVy
YXRpb25Qcm9wZXJ0eVRlYXJPZmY8U1ZHTWFya2VyT3JpZW50VHlwZT4gPihsb29rdXBPckNyZWF0
ZU9yaWVudFR5cGVXcmFwcGVyKHRoaXMpKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01hcmtlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTWFya2VyRWxlbWVudC5oCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw2ICsxMjAsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRPcmllbnRUb0F1dG8oKTsKICAgICB2b2lkIHNldE9yaWVudFRv
QW5nbGUoY29uc3QgU1ZHQW5nbGUmKTsKIAorICAgIHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUlu
Zm8qIG9yaWVudFR5cGVQcm9wZXJ0eUluZm8oKTsKKwogcHJpdmF0ZToKICAgICBTVkdNYXJrZXJF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCkBAIC0xMjgsOSArMTMw
LDYgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5v
ZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5
bGUqKTsKQEAgLTEzOCwzMyArMTM3LDMzIEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wg
c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCisgICAgdm9pZCBzeW5jaHJvbml6ZU9y
aWVudFR5cGUoKTsKKwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG9yaWVudFR5cGVJ
ZGVudGlmaWVyKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgb3JpZW50QW5nbGVJ
ZGVudGlmaWVyKCk7Ci0KLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSZWZYLCByZWZYKQotICAgIERFQ0xBUkVfQU5JTUFU
RURfTEVOR1RIKFJlZlksIHJlZlkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoTWFya2Vy
V2lkdGgsIG1hcmtlcldpZHRoKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKE1hcmtlckhl
aWdodCwgbWFya2VySGVpZ2h0KQotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oTWFy
a2VyVW5pdHMsIG1hcmtlclVuaXRzLCBTVkdNYXJrZXJVbml0c1R5cGUpCi0gICAgREVDTEFSRV9B
TklNQVRFRF9BTkdMRShPcmllbnRBbmdsZSwgb3JpZW50QW5nbGUpCi0KLSAgICAvLyBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi0KLSAgICAv
LyBTVkdGaXRUb1ZpZXdCb3gKLSAgICBERUNMQVJFX0FOSU1BVEVEX1JFQ1QoVmlld0JveCwgdmll
d0JveCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oUHJlc2VydmVB
c3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKLQorIAorICAgIEJFR0lOX0RFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdNYXJrZXJFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX0xFTkdUSChSZWZYLCByZWZYKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdU
SChSZWZZLCByZWZZKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChNYXJrZXJXaWR0
aCwgbWFya2VyV2lkdGgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKE1hcmtlckhl
aWdodCwgbWFya2VySGVpZ2h0KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9O
KE1hcmtlclVuaXRzLCBtYXJrZXJVbml0cywgU1ZHTWFya2VyVW5pdHNUeXBlKQorICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX0FOR0xFKE9yaWVudEFuZ2xlLCBvcmllbnRBbmdsZSkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUkVDVChWaWV3
Qm94LCB2aWV3Qm94KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFU
SU8oUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICBFTkRfREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisgIAogcHVibGljOgotICAgIC8vIEN1c3RvbSBhbmlt
YXRlZCBwcm9wZXJ0eTogb3JpZW50VHlwZQorICAgIC8vIEN1c3RvbSAnb3JpZW50VHlwZScgcHJv
cGVydHkuCisgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVPcmllbnRUeXBlKHZvaWQqIGNvbnRl
eHRFbGVtZW50KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBs
b29rdXBPckNyZWF0ZU9yaWVudFR5cGVXcmFwcGVyKHZvaWQqIGNvbnRleHRFbGVtZW50KTsKICAg
ICBTVkdNYXJrZXJPcmllbnRUeXBlJiBvcmllbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9vcmll
bnRUeXBlLnZhbHVlOyB9CiAgICAgU1ZHTWFya2VyT3JpZW50VHlwZSYgb3JpZW50VHlwZUJhc2VW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50VHlwZS52YWx1ZTsgfQogICAgIHZvaWQgc2V0
T3JpZW50VHlwZUJhc2VWYWx1ZShjb25zdCBTVkdNYXJrZXJPcmllbnRUeXBlJiB0eXBlKSB7IG1f
b3JpZW50VHlwZS52YWx1ZSA9IHR5cGU7IH0KICAgICBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkRW51
bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY8U1ZHTWFya2VyT3JpZW50VHlwZT4gPiBvcmllbnRUeXBl
QW5pbWF0ZWQoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHN5bmNocm9uaXplT3JpZW50VHlwZSgp
OwogICAgIG11dGFibGUgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5PFNWR01hcmtl
ck9yaWVudFR5cGU+IG1fb3JpZW50VHlwZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXNrRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R01hc2tFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTWFza0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSwxOCBAQCBERUZJ
TkVfQU5JTUFURURfTEVOR1RIKFNWR01hc2tFbGVtZW50LCBTCiBERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQp
CiBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQogCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR01hc2tFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZ
KG1hc2tVbml0cykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShtYXNrQ29u
dGVudFVuaXRzKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAg
UkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWSh3aWR0aCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWShoZWlnaHQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklN
QVRFRF9QUk9QRVJUSUVTKFNWR1Rlc3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJ
RVMKKwogaW5saW5lIFNWR01hc2tFbGVtZW50OjpTVkdNYXNrRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRMb2Nh
dGFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9tYXNrVW5pdHMoU1ZHVW5p
dFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKQpAQCAtNTcsNiArNjksNyBA
QCBpbmxpbmUgU1ZHTWFza0VsZW1lbnQ6OlNWR01hc2tFbGVtZW50KGNvCiAgICAgLy8gU3BlYzog
SWYgdGhlIHgveSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBp
ZiBhIHZhbHVlIG9mICItMTAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICAvLyBTcGVjOiBJZiB0aGUg
d2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFz
IGlmIGEgdmFsdWUgb2YgIjEyMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIEFTU0VSVChoYXNUYWdO
YW1lKFNWR05hbWVzOjptYXNrVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNG
b3JTVkdNYXNrRWxlbWVudCgpOwogfQogCiBQYXNzUmVmUHRyPFNWR01hc2tFbGVtZW50PiBTVkdN
YXNrRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKQEAgLTE1MSw4OCArMTY0LDYgQEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZAogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwog
fQogCi12b2lkIFNWR01hc2tFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplTWFza1VuaXRzKCk7Ci0gICAgICAgIHN5bmNocm9uaXplTWFz
a0NvbnRlbnRVbml0cygpOwotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgc3luY2hy
b25pemVZKCk7Ci0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAgc3luY2hyb25p
emVIZWlnaHQoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KCk7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5h
bWUpOwotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJO
YW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXpl
UHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjptYXNrVW5pdHNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
TWFza1VuaXRzKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6Om1hc2tDb250ZW50VW5pdHNBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXpl
TWFza0NvbnRlbnRVbml0cygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0
dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgewotICAgICAgICBzeW5j
aHJvbml6ZVdpZHRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJv
bml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAg
ICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR01hc2tFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVy
biBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR01hc2tFbGVtZW50
OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Ojpm
aWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1h
dGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
Om1hc2tVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6bWFza0NvbnRlbnRVbml0c0F0dHIsIEFuaW1hdGVk
RW51bWVyYXRpb24pOwotfQotCiB2b2lkIFNWR01hc2tFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQo
Ym9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFu
Z2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgU1ZHU3R5bGVkRWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hp
bGRDb3VudERlbHRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCShyZXZp
c2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCwyNSArNTAsMjYgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9y
dGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5j
aHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5v
ZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291
bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFz
UmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNs
YXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKE1hc2tVbml0cywgbWFz
a1VuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURf
RU5VTUVSQVRJT04oTWFza0NvbnRlbnRVbml0cywgbWFza0NvbnRlbnRVbml0cywgU1ZHVW5pdFR5
cGVzOjpTVkdVbml0VHlwZSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQotICAg
IERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoV2lkdGgsIHdpZHRoKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVp
Z2h0KQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVf
QU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdN
YXNrRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihNYXNrVW5p
dHMsIG1hc2tVbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9FTlVNRVJBVElPTihNYXNrQ29udGVudFVuaXRzLCBtYXNrQ29udGVudFVuaXRz
LCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSChYLCB4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwgd2lkdGgpCisgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdU
ZXN0cworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNW
R1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFn
ZSh0aGlzKTsgfQogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01pc3NpbmdH
bHlwaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNaXNz
aW5nR2x5cGhFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE3ICsz
Niw2IEBAIFBhc3NSZWZQdHI8U1ZHTWlzc2luZ0dseXBoRWxlbWVudD4gU1ZHTWkKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNWR01pc3NpbmdHbHlwaEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
KTsKIH0KIAotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR01pc3NpbmdHbHlwaEVsZW1l
bnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0K
LXZvaWQgU1ZHTWlzc2luZ0dseXBoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCkKLXsKLSAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKSk7Ci19Ci0KIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShTVkdfRk9OVFMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWlz
c2luZ0dseXBoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdN
aXNzaW5nR2x5cGhFbGVtZW50LmgJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIs
NiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQogICAgIHZpcnR1YWwgYm9v
bCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4g
ZmFsc2U7IH0KIH07CiAKQEAgLTQyLDUgKzM5LDMgQEAgcHJpdmF0ZToKIAogI2VuZGlmIC8vIEVO
QUJMRShTVkdfRk9OVFMpCiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDE2ICs0
NiwzOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIERlZmluZSBjdXN0b20gYW5pbWF0
ZWQgcHJvcGVydHkgJ2QnLgorY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBTVkdQYXRoRWxlbWVudDo6
ZFByb3BlcnR5SW5mbygpCit7CisgICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogc19w
cm9wZXJ0eUluZm8gPSAwOworICAgIGlmICghc19wcm9wZXJ0eUluZm8pIHsKKyAgICAgICAgc19w
cm9wZXJ0eUluZm8gPSBuZXcgU1ZHUHJvcGVydHlJbmZvKEFuaW1hdGVkUGF0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpkQXR0ciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpkQXR0
ci5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZTVkdQYXRoRWxlbWVudDo6c3luY2hyb25pemVELAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJlNWR1BhdGhFbGVtZW50Ojpsb29rdXBPckNyZWF0ZURX
cmFwcGVyKTsKKyAgICB9CisgICAgcmV0dXJuIHNfcHJvcGVydHlJbmZvOworfQorCiAvLyBBbmlt
YXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwogREVGSU5FX0FOSU1BVEVEX05VTUJFUihTVkdQYXRo
RWxlbWVudCwgU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyLCBQYXRoTGVuZ3RoLCBwYXRoTGVuZ3Ro
KQogREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHUGF0aEVsZW1lbnQsIFNWR05hbWVzOjpleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKIAorQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdQYXRoRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJU
WShkKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHBhdGhMZW5ndGgpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCisKIGlubGlu
ZSBTVkdQYXRoRWxlbWVudDo6U1ZHUGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3BhdGhCeXRlU3RyZWFtKFNWR1BhdGhC
eXRlU3RyZWFtOjpjcmVhdGUoKSkKICAgICAsIG1fcGF0aFNlZ0xpc3QoUGF0aFNlZ1VuYWx0ZXJl
ZFJvbGUpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBhdGhUYWcpKTsKKyAg
ICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1BhdGhFbGVtZW50KCk7CiB9CiAKIFBh
c3NSZWZQdHI8U1ZHUGF0aEVsZW1lbnQ+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMjM4LDcgKzI2MSw3
IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICBSZW5kZXJT
VkdQYXRoKiByZW5kZXJlciA9IHN0YXRpY19jYXN0PFJlbmRlclNWR1BhdGgqPih0aGlzLT5yZW5k
ZXJlcigpKTsKIAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZEF0dHIpIHsKLSAgICAg
ICAgaWYgKG1fYW5pbWF0YWJsZVBhdGhTZWdMaXN0KSB7CisgICAgICAgIGlmIChTVkdBbmltYXRl
ZFByb3BlcnR5Ojpsb29rdXBXcmFwcGVyPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRl
YXJPZmY+KHRoaXMsIGRQcm9wZXJ0eUluZm8oKSkpIHsKICAgICAgICAgICAgIFNWR1BhdGhTZWdM
aXN0IG5ld0xpc3QoUGF0aFNlZ1VuYWx0ZXJlZFJvbGUpOwogICAgICAgICAgICAgU1ZHUGF0aFBh
cnNlckZhY3RvcnkqIGZhY3RvcnkgPSBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpOwogICAg
ICAgICAgICAgZmFjdG9yeS0+YnVpbGRTVkdQYXRoU2VnTGlzdEZyb21CeXRlU3RyZWFtKG1fcGF0
aEJ5dGVTdHJlYW0uZ2V0KCksIHRoaXMsIG5ld0xpc3QsIFVuYWx0ZXJlZFBhcnNpbmcpOwpAQCAt
MjUzLDgwICsyNzYsMzIgQEAgdm9pZCBTVkdQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZAogICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291
cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyKTsKIH0KIAotdm9pZCBTVkdQYXRoRWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK1Bhc3NSZWZQ
dHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gU1ZHUGF0aEVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlRFdy
YXBwZXIodm9pZCogY29udGV4dEVsZW1lbnQpCiB7Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFO
YW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVEKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUGF0
aExlbmd0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQo
KTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFt
ZSk7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgIFNWR1BhdGhFbGVt
ZW50KiBvd25lclR5cGUgPSBzdGF0aWNfY2FzdDxTVkdQYXRoRWxlbWVudCo+KGNvbnRleHRFbGVt
ZW50KTsKIAotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZEF0dHIpIHsKLSAgICAgICAg
c3luY2hyb25pemVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplUGF0
aExlbmd0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1l
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSogZmFj
dG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7CisgICAgZmFjdG9yeS0+YnVpbGRT
VkdQYXRoU2VnTGlzdEZyb21CeXRlU3RyZWFtKG93bmVyVHlwZS0+bV9wYXRoQnl0ZVN0cmVhbS5n
ZXQoKSwgb3duZXJUeXBlLCBvd25lclR5cGUtPm1fcGF0aFNlZ0xpc3QudmFsdWUsIFVuYWx0ZXJl
ZFBhcnNpbmcpOwogCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFNWR0Fu
aW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdQYXRoRWxlbWVudCwgU1ZH
QW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZiwgU1ZHUGF0aFNlZ0xpc3QsIHRydWU+
CisgICAgICAgICAgIChvd25lclR5cGUsIGRQcm9wZXJ0eUluZm8oKSwgb3duZXJUeXBlLT5tX3Bh
dGhTZWdMaXN0LnZhbHVlKTsKIH0KIAotdm9pZCBTVkdQYXRoRWxlbWVudDo6c3luY2hyb25pemVE
KCkKK3ZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplRCh2b2lkKiBjb250ZXh0RWxlbWVu
dCkKIHsKLSAgICBpZiAoIW1fcGF0aFNlZ0xpc3Quc2hvdWxkU3luY2hyb25pemUpCisgICAgQVNT
RVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICBTVkdQYXRoRWxlbWVudCogb3duZXJUeXBlID0gc3Rh
dGljX2Nhc3Q8U1ZHUGF0aEVsZW1lbnQqPihjb250ZXh0RWxlbWVudCk7CisgICAgaWYgKCFvd25l
clR5cGUtPm1fcGF0aFNlZ0xpc3Quc2hvdWxkU3luY2hyb25pemUpCiAgICAgICAgIHJldHVybjsK
LQotICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5bmNocm9uaXpl
KHRoaXMsIFNWR05hbWVzOjpkQXR0ciwgbV9wYXRoU2VnTGlzdC52YWx1ZS52YWx1ZUFzU3RyaW5n
KCkpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHUGF0aEVsZW1lbnQ6OmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAo
KSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQg
U1ZHUGF0aEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAg
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0g
dGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6ZEF0dHIsIEFuaW1hdGVkUGF0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwYXRoTGVuZ3RoQXR0ciwgQW5pbWF0ZWROdW1iZXIp
OworICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5bmNocm9uaXpl
KG93bmVyVHlwZSwgZFByb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lLCBvd25lclR5cGUtPm1f
cGF0aFNlZ0xpc3QudmFsdWUudmFsdWVBc1N0cmluZygpKTsKIH0KIAogU1ZHUGF0aFNlZ0xpc3RQ
cm9wZXJ0eVRlYXJPZmYqIFNWR1BhdGhFbGVtZW50OjpwYXRoU2VnTGlzdCgpCiB7Ci0gICAgaWYg
KCFtX2FuaW1hdGFibGVQYXRoU2VnTGlzdCkgewotICAgICAgICBtX3BhdGhTZWdMaXN0LnNob3Vs
ZFN5bmNocm9uaXplID0gdHJ1ZTsKLQotICAgICAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSogZmFj
dG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7Ci0gICAgICAgIGZhY3RvcnktPmJ1
aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tQnl0ZVN0cmVhbShtX3BhdGhCeXRlU3RyZWFtLmdldCgpLCB0
aGlzLCBtX3BhdGhTZWdMaXN0LnZhbHVlLCBVbmFsdGVyZWRQYXJzaW5nKTsKLQotICAgICAgICBt
X2FuaW1hdGFibGVQYXRoU2VnTGlzdCA9IFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3Jl
YXRlV3JhcHBlcjxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLCBTVkdQYXRo
U2VnTGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLCBTVkdOYW1l
czo6ZEF0dHIsIFNWR05hbWVzOjpkQXR0ci5sb2NhbE5hbWUoKSwgbV9wYXRoU2VnTGlzdC52YWx1
ZSk7Ci0gICAgfQotCisgICAgbV9wYXRoU2VnTGlzdC5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7
CisgICAgaWYgKCFtX2FuaW1hdGFibGVQYXRoU2VnTGlzdCkKKyAgICAgICAgbV9hbmltYXRhYmxl
UGF0aFNlZ0xpc3QgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQ
cm9wZXJ0eVRlYXJPZmY+KGxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIodGhpcykpOwogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZio+KG1fYW5pbWF0YWJs
ZVBhdGhTZWdMaXN0LT5iYXNlVmFsKFBhdGhTZWdVbmFsdGVyZWRSb2xlKSk7CiB9CiAKQEAgLTMz
OCwxNiArMzEzLDkgQEAgU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYqIFNWR1BhdGhFbAog
CiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZiogU1ZHUGF0aEVsZW1lbnQ6OmFuaW1hdGVk
UGF0aFNlZ0xpc3QoKQogewotICAgIGlmICghbV9hbmltYXRhYmxlUGF0aFNlZ0xpc3QpIHsKLSAg
ICAgICAgbV9wYXRoU2VnTGlzdC5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7Ci0KLSAgICAgICAg
U1ZHUGF0aFBhcnNlckZhY3RvcnkqIGZhY3RvcnkgPSBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2Vs
ZigpOwotICAgICAgICBmYWN0b3J5LT5idWlsZFNWR1BhdGhTZWdMaXN0RnJvbUJ5dGVTdHJlYW0o
bV9wYXRoQnl0ZVN0cmVhbS5nZXQoKSwgdGhpcywgbV9wYXRoU2VnTGlzdC52YWx1ZSwgVW5hbHRl
cmVkUGFyc2luZyk7Ci0KLSAgICAgICAgbV9hbmltYXRhYmxlUGF0aFNlZ0xpc3QgPSBTVkdBbmlt
YXRlZFByb3BlcnR5Ojpsb29rdXBPckNyZWF0ZVdyYXBwZXI8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlz
dFByb3BlcnR5VGVhck9mZiwgU1ZHUGF0aFNlZ0xpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAodGhpcywgU1ZHTmFtZXM6OmRBdHRyLCBTVkdOYW1lczo6ZEF0dHIubG9jYWxO
YW1lKCksIG1fcGF0aFNlZ0xpc3QudmFsdWUpOwotICAgIH0KLQorICAgIG1fcGF0aFNlZ0xpc3Qu
c2hvdWxkU3luY2hyb25pemUgPSB0cnVlOworICAgIGlmICghbV9hbmltYXRhYmxlUGF0aFNlZ0xp
c3QpCisgICAgICAgIG1fYW5pbWF0YWJsZVBhdGhTZWdMaXN0ID0gc3RhdGljX3BvaW50ZXJfY2Fz
dDxTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmPihsb29rdXBPckNyZWF0ZURX
cmFwcGVyKHRoaXMpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0xpc3RQcm9w
ZXJ0eVRlYXJPZmYqPihtX2FuaW1hdGFibGVQYXRoU2VnTGlzdC0+YW5pbVZhbChQYXRoU2VnVW5h
bHRlcmVkUm9sZSkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAko
cmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtOTEsMTEgKzkxLDEyIEBAIHB1YmxpYzoKICAgICBTVkdQYXRoU2Vn
TGlzdFByb3BlcnR5VGVhck9mZiogYW5pbWF0ZWROb3JtYWxpemVkUGF0aFNlZ0xpc3QoKTsKIAog
ICAgIFNWR1BhdGhCeXRlU3RyZWFtKiBwYXRoQnl0ZVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGF0aEJ5dGVTdHJlYW0uZ2V0KCk7IH0KLSAgICBTVkdBbmltYXRlZFByb3BlcnR5KiBhbmltYXRh
YmxlUGF0aFNlZ0xpc3QoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGFibGVQYXRoU2VnTGlzdC5n
ZXQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0OwogICAg
IHZvaWQgcGF0aFNlZ0xpc3RDaGFuZ2VkKFNWR1BhdGhTZWdSb2xlKTsKIAorICAgIHN0YXRpYyBj
b25zdCBTVkdQcm9wZXJ0eUluZm8qIGRQcm9wZXJ0eUluZm8oKTsKKwogcHJpdmF0ZToKICAgICBT
VkdQYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApAQCAtMTA0
LDIxICsxMDUsMjQgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c01hcmtlcnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAvLyBBbmltYXRlZCBw
cm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihQYXRoTGVu
Z3RoLCBwYXRoTGVuZ3RoKQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAot
ICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIC8vIEN1c3RvbSAnZCcgcHJvcGVydHkKKyAg
ICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZUQodm9pZCogY29udGV4dEVsZW1lbnQpOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlRFdyYXBw
ZXIodm9pZCogY29udGV4dEVsZW1lbnQpOworCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR1BhdGhFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJF
UihQYXRoTGVuZ3RoLCBwYXRoTGVuZ3RoKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xF
QU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkK
KyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cwor
ICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3Rz
OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJl
cXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5
c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlz
KTsgfQogCi0gICAgdm9pZCBzeW5jaHJvbml6ZUQoKTsKLQotcHJvdGVjdGVkOgorcHJpdmF0ZToK
ICAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IG1fcGF0aEJ5dGVTdHJlYW07CiAgICAgbXV0
YWJsZSBTVkdTeW5jaHJvbml6YWJsZUFuaW1hdGVkUHJvcGVydHk8U1ZHUGF0aFNlZ0xpc3Q+IG1f
cGF0aFNlZ0xpc3Q7CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRl
YXJPZmY+IG1fYW5pbWF0YWJsZVBhdGhTZWdMaXN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdGhTZWdXaXRoQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoU2VnV2l0aENvbnRleHQuaAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aFNlZ1dpdGhDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcg
KzM5LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFBhdGhTZWdVbmRlZmluZWRSb2xlOgogICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGNhc2UgUGF0aFNlZ1VuYWx0ZXJlZFJvbGU6Ci0g
ICAgICAgICAgICByZXR1cm4gbV9lbGVtZW50LT5hbmltYXRhYmxlUGF0aFNlZ0xpc3QoKTsKKyAg
ICAgICAgICAgIHJldHVybiBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBXcmFwcGVyPFNWR0Fu
aW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+KG1fZWxlbWVudC5nZXQoKSwgU1ZHUGF0
aEVsZW1lbnQ6OmRQcm9wZXJ0eUluZm8oKSk7CiAgICAgICAgIGNhc2UgUGF0aFNlZ05vcm1hbGl6
ZWRSb2xlOgogICAgICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTQxMiAtIEltcGxlbWVudCBub3JtYWxpemVkIHBhdGggc2VnbWVudCBs
aXN0cyEKICAgICAgICAgICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdHRlcm5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0dGVybkVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDIyIEBA
IERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1BhdHRlcm5FbGVtZW4KIERFRklORV9BTklNQVRF
RF9SRUNUKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6dmlld0JveEF0dHIsIFZpZXdCb3gs
IHZpZXdCb3gpCiBERUZJTkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhTVkdQYXR0ZXJu
RWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBQcmVzZXJ2ZUFzcGVj
dFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSAKIAorQkVHSU5fUkVHSVNURVJfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdQYXR0ZXJuRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWSh4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHkpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkod2lkdGgpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaGVpZ2h0KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1B
VEVEX1BST1BFUlRZKHBhdHRlcm5Vbml0cykKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9Q
Uk9QRVJUWShwYXR0ZXJuQ29udGVudFVuaXRzKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVE
X1BST1BFUlRZKHBhdHRlcm5UcmFuc2Zvcm0pCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURf
UFJPUEVSVFkoaHJlZikKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKHZpZXdCb3gpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocHJlc2Vy
dmVBc3BlY3RSYXRpbykgCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHU3R5bGVkRWxlbWVudCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCisKIGlubGluZSBT
VkdQYXR0ZXJuRWxlbWVudDo6U1ZHUGF0dGVybkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkKICAgICAsIG1feChMZW5ndGhNb2RlV2lkdGgpCkBAIC02NSw2ICs4MSw3
IEBAIGlubGluZSBTVkdQYXR0ZXJuRWxlbWVudDo6U1ZHUGF0dGVybkVsZW0KICAgICAsIG1fcGF0
dGVybkNvbnRlbnRVbml0cyhTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05V
U0UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBhdHRlcm5UYWcpKTsKKyAg
ICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1BhdHRlcm5FbGVtZW50KCk7CiB9CiAK
IFBhc3NSZWZQdHI8U1ZHUGF0dGVybkVsZW1lbnQ+IFNWR1BhdHRlcm5FbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTgw
LDExMCArMTk3LDYgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbgog
ICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCi12b2lkIFNWR1BhdHRl
cm5FbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQoteyAgICAKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBz
eW5jaHJvbml6ZVBhdHRlcm5Vbml0cygpOwotICAgICAgICBzeW5jaHJvbml6ZVBhdHRlcm5Db250
ZW50VW5pdHMoKTsKLSAgICAgICAgc3luY2hyb25pemVQYXR0ZXJuVHJhbnNmb3JtKCk7Ci0gICAg
ICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgc3lu
Y2hyb25pemVXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAgICBz
eW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgc3luY2hyb25p
emVIcmVmKCk7Ci0gICAgICAgIFNWR0ZpdFRvVmlld0JveDo6c3luY2hyb25pemVQcm9wZXJ0aWVz
KGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlz
LCBhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVy
dHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBv
cnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBhdHRlcm5Vbml0c0F0dHIpIHsKLSAgICAgICAg
c3luY2hyb25pemVQYXR0ZXJuVW5pdHMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cGF0dGVybkNvbnRlbnRVbml0c0F0dHIpIHsKLSAg
ICAgICAgc3luY2hyb25pemVQYXR0ZXJuQ29udGVudFVuaXRzKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBhdHRlcm5UcmFuc2Zvcm1B
dHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplUGF0dGVyblRyYW5zZm9ybSgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cikgewot
ICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVZKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OndpZHRoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVdpZHRoKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsK
LSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdGaXRUb1ZpZXdCb3g6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpdFRvVmlld0JveDo6c3lu
Y2hyb25pemVQcm9wZXJ0aWVzKGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdU
ZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgU1ZHUGF0dGVybkVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNf
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6
OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0
ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgp
OwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cGF0dGVyblVu
aXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjpwYXR0ZXJuQ29udGVudFVuaXRzQXR0ciwgQW5pbWF0ZWRFbnVt
ZXJhdGlvbik7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpw
YXR0ZXJuVHJhbnNmb3JtQXR0ciwgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KTsKLSAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3Ry
aW5nKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnZpZXdC
b3hBdHRyLCBBbmltYXRlZFJlY3QpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIEFuaW1hdGVkUHJlc2VydmVBc3Bl
Y3RSYXRpbyk7Ci19Ci0KIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChi
b29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5n
ZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKICAgICBTVkdTdHlsZWRFbGVtZW50OjpjaGlsZHJl
bkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGls
ZENvdW50RGVsdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgJ
KHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDMzICs2MCwzMCBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1
YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBm
YWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQg
Y2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCiAgICAgdmlydHVhbCBib29s
IHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIAotICAgIC8vIEFuaW1hdGVkIHByb3Bl
cnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCi0gICAg
REVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdU
SChXaWR0aCwgd2lkdGgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWln
aHQpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihQYXR0ZXJuVW5pdHMsIHBhdHRl
cm5Vbml0cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKLSAgICBERUNMQVJFX0FOSU1BVEVE
X0VOVU1FUkFUSU9OKFBhdHRlcm5Db250ZW50VW5pdHMsIHBhdHRlcm5Db250ZW50VW5pdHMsIFNW
R1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9UUkFOU0ZPUk1f
TElTVChQYXR0ZXJuVHJhbnNmb3JtLCBwYXR0ZXJuVHJhbnNmb3JtKQotCi0gICAgLy8gU1ZHVVJJ
UmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSHJlZiwgaHJlZikKLQotICAg
IC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JP
T0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCkKLQotICAgIC8vIFNWR1BhdHRlcm5FbGVtZW50Ci0gICAgREVDTEFSRV9BTklNQVRFRF9SRUNU
KFZpZXdCb3gsIHZpZXdCb3gpCi0gICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJB
VElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pIAorICAgIEJFR0lO
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdQYXR0ZXJuRWxlbWVudCkKKyAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEgoWSwgeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRo
KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKKyAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihQYXR0ZXJuVW5pdHMsIHBhdHRlcm5Vbml0
cywgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9F
TlVNRVJBVElPTihQYXR0ZXJuQ29udGVudFVuaXRzLCBwYXR0ZXJuQ29udGVudFVuaXRzLCBTVkdV
bml0VHlwZXM6OlNWR1VuaXRUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1RSQU5TRk9S
TV9MSVNUKFBhdHRlcm5UcmFuc2Zvcm0sIHBhdHRlcm5UcmFuc2Zvcm0pCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURf
Qk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1JFQ1QoVmlld0JveCwgdmlld0JveCkKKyAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0
UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pIAorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJl
cyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9u
cygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKHRoaXMpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSB7IFNWR1Rlc3RzOjpz
eW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAJKHJldmlzaW9u
IDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsMTIgKzM1LDM0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8g
RGVmaW5lIGN1c3RvbSBhbmltYXRlZCBwcm9wZXJ0eSAncG9pbnRzJy4KK2NvbnN0IFNWR1Byb3Bl
cnR5SW5mbyogU1ZHUG9seUVsZW1lbnQ6OnBvaW50c1Byb3BlcnR5SW5mbygpCit7CisgICAgc3Rh
dGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogc19wcm9wZXJ0eUluZm8gPSAwOworICAgIGlmICgh
c19wcm9wZXJ0eUluZm8pIHsKKyAgICAgICAgc19wcm9wZXJ0eUluZm8gPSBuZXcgU1ZHUHJvcGVy
dHlJbmZvKEFuaW1hdGVkUG9pbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU1ZHTmFtZXM6OnBvaW50c0F0dHIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6cG9pbnRzQXR0ci5sb2NhbE5hbWUoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTVkdQb2x5RWxl
bWVudDo6c3luY2hyb25pemVQb2ludHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmU1ZHUG9seUVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlUG9pbnRzV3JhcHBl
cik7CisgICAgfQorICAgIHJldHVybiBzX3Byb3BlcnR5SW5mbzsKK30KKwogLy8gQW5pbWF0ZWQg
cHJvcGVydHkgZGVmaW5pdGlvbnMKIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1BvbHlFbGVt
ZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAKK0JFR0lOX1JFR0lT
VEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUG9seUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkocG9pbnRzKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVE
X1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5U
X0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAg
UkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNU
RVJfQU5JTUFURURfUFJPUEVSVElFUworCiBTVkdQb2x5RWxlbWVudDo6U1ZHUG9seUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDog
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CisgICAg
cmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdQb2x5RWxlbWVudCgpOyAgICAKIH0KIAog
Ym9vbCBTVkdQb2x5RWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCkBAIC02OCw4ICs5MCw4IEBAIHZvaWQgU1ZHUG9seUVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXQKICAgICAgICAgaWYgKCFwb2ludHNMaXN0RnJvbVNWR0RhdGEobmV3
TGlzdCwgdmFsdWUpKQogICAgICAgICAgICAgZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9u
cygpLT5yZXBvcnRFcnJvcigiUHJvYmxlbSBwYXJzaW5nIHBvaW50cz1cIiIgKyB2YWx1ZSArICJc
IiIpOwogCi0gICAgICAgIGlmIChTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9p
bnRMaXN0PiogbGlzdCA9IG1fYW5pbWF0YWJsZVBvaW50c0xpc3QuZ2V0KCkpCi0gICAgICAgICAg
ICBsaXN0LT5kZXRhY2hMaXN0V3JhcHBlcnMobmV3TGlzdC5zaXplKCkpOworICAgICAgICBpZiAo
U1ZHQW5pbWF0ZWRQcm9wZXJ0eSogd3JhcHBlciA9IFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1
cFdyYXBwZXI8U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4gPih0
aGlzLCBwb2ludHNQcm9wZXJ0eUluZm8oKSkpCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxTVkdB
bmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0Pio+KHdyYXBwZXIpLT5kZXRh
Y2hMaXN0V3JhcHBlcnMobmV3TGlzdC5zaXplKCkpOwogCiAgICAgICAgIG1fcG9pbnRzLnZhbHVl
ID0gbmV3TGlzdDsKICAgICAgICAgcmV0dXJuOwpAQCAtMTE1LDY3ICsxMzcsMzMgQEAgdm9pZCBT
VkdQb2x5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCi12b2lkIFNWR1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQordm9pZCBTVkdQb2x5RWxlbWVudDo6c3luY2hyb25p
emVQb2ludHModm9pZCogY29udGV4dEVsZW1lbnQpCiB7Ci0gICAgU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotCi0gICAgaWYgKGF0
dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHN5bmNocm9uaXplUG9pbnRzKCk7Ci0gICAgICAgIFNW
R1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOworICAgIEFTU0VS
VChjb250ZXh0RWxlbWVudCk7CisgICAgU1ZHUG9seUVsZW1lbnQqIG93bmVyVHlwZSA9IHN0YXRp
Y19jYXN0PFNWR1BvbHlFbGVtZW50Kj4oY29udGV4dEVsZW1lbnQpOworICAgIGlmICghb3duZXJU
eXBlLT5tX3BvaW50cy5zaG91bGRTeW5jaHJvbml6ZSkKICAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRl
KGF0dHJOYW1lKSkKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KCk7Ci0gICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0dHIpCi0gICAg
ICAgIHN5bmNocm9uaXplUG9pbnRzKCk7Ci0gICAgZWxzZSBpZiAoU1ZHVGVzdHM6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0
aWVzKHRoaXMsIGF0dHJOYW1lKTsKKyAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVy
PHRydWU+OjpzeW5jaHJvbml6ZShvd25lclR5cGUsIHBvaW50c1Byb3BlcnR5SW5mbygpLT5hdHRy
aWJ1dGVOYW1lLCBvd25lclR5cGUtPm1fcG9pbnRzLnZhbHVlLnZhbHVlQXNTdHJpbmcoKSk7CiB9
CiAKLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdQb2x5RWxlbWVudDo6YXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKQorUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBTVkdQ
b2x5RWxlbWVudDo6bG9va3VwT3JDcmVhdGVQb2ludHNXcmFwcGVyKHZvaWQqIGNvbnRleHRFbGVt
ZW50KQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdQb2x5RWxlbWVudDo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxQ
YXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwb2ludHNB
dHRyLCBBbmltYXRlZFBvaW50cyk7Ci19Ci0KLXZvaWQgU1ZHUG9seUVsZW1lbnQ6OnN5bmNocm9u
aXplUG9pbnRzKCkKLXsKLSAgICBpZiAoIW1fcG9pbnRzLnNob3VsZFN5bmNocm9uaXplKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPHRydWU+
OjpzeW5jaHJvbml6ZSh0aGlzLCBTVkdOYW1lczo6cG9pbnRzQXR0ciwgbV9wb2ludHMudmFsdWUu
dmFsdWVBc1N0cmluZygpKTsKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOworICAgIFNWR1Bv
bHlFbGVtZW50KiBvd25lclR5cGUgPSBzdGF0aWNfY2FzdDxTVkdQb2x5RWxlbWVudCo+KGNvbnRl
eHRFbGVtZW50KTsKKyAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVh
dGVXcmFwcGVyPFNWR1BvbHlFbGVtZW50LCBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8
U1ZHUG9pbnRMaXN0PiwgU1ZHUG9pbnRMaXN0LCB0cnVlPgorICAgICAgICAgICAob3duZXJUeXBl
LCBwb2ludHNQcm9wZXJ0eUluZm8oKSwgb3duZXJUeXBlLT5tX3BvaW50cy52YWx1ZSk7CiB9CiAK
IFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiogU1ZHUG9seUVsZW1lbnQ6OnBv
aW50cygpCiB7Ci0gICAgaWYgKCFtX2FuaW1hdGFibGVQb2ludHNMaXN0KSB7Ci0gICAgICAgIG1f
cG9pbnRzLnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKLSAgICAgICAgbV9hbmltYXRhYmxlUG9p
bnRzTGlzdCA9IFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdB
bmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiAsIFNWR1BvaW50TGlzdD4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLCBTVkdOYW1lczo6cG9pbnRz
QXR0ciwgU1ZHTmFtZXM6OnBvaW50c0F0dHIubG9jYWxOYW1lKCksIG1fcG9pbnRzLnZhbHVlKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHTGlzdFByb3BlcnR5VGVhck9mZjxT
VkdQb2ludExpc3Q+Kj4obV9hbmltYXRhYmxlUG9pbnRzTGlzdC0+YmFzZVZhbCgpKTsKKyAgICBt
X3BvaW50cy5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0Pio+KHN0YXRpY19wb2ludGVyX2Nh
c3Q8U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4gPihsb29rdXBP
ckNyZWF0ZVBvaW50c1dyYXBwZXIodGhpcykpLT5iYXNlVmFsKCkpOwogfQogCiBTVkdMaXN0UHJv
cGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4qIFNWR1BvbHlFbGVtZW50OjphbmltYXRlZFBvaW50
cygpCiB7Ci0gICAgaWYgKCFtX2FuaW1hdGFibGVQb2ludHNMaXN0KSB7Ci0gICAgICAgIG1fcG9p
bnRzLnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKLSAgICAgICAgbV9hbmltYXRhYmxlUG9pbnRz
TGlzdCA9IFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdBbmlt
YXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiAsIFNWR1BvaW50TGlzdD4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLCBTVkdOYW1lczo6cG9pbnRzQXR0
ciwgU1ZHTmFtZXM6OnBvaW50c0F0dHIubG9jYWxOYW1lKCksIG1fcG9pbnRzLnZhbHVlKTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQ
b2ludExpc3Q+Kj4obV9hbmltYXRhYmxlUG9pbnRzTGlzdC0+YW5pbVZhbCgpKTsKKyAgICBtX3Bv
aW50cy5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNW
R0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0Pio+KHN0YXRpY19wb2ludGVyX2Nhc3Q8
U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4gPihsb29rdXBPckNy
ZWF0ZVBvaW50c1dyYXBwZXIodGhpcykpLT5hbmltVmFsKCkpOwogfQogCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOCBA
QCBwdWJsaWM6CiAKICAgICBTVkdQb2ludExpc3QmIHBvaW50TGlzdCgpIGNvbnN0IHsgcmV0dXJu
IG1fcG9pbnRzLnZhbHVlOyB9CiAKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBw
b2ludHNQcm9wZXJ0eUluZm8oKTsKKwogcHJvdGVjdGVkOgogICAgIFNWR1BvbHlFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCkBAIC01MSwyMCArNTMsMjQgQEAgcHJp
dmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7IAog
ICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNYXJrZXJzKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotCi0gICAgdm9pZCBzeW5jaHJvbml6ZVBvaW50
cygpOworICAgIC8vIEN1c3RvbSAncG9pbnRzJyBwcm9wZXJ0eQorICAgIHN0YXRpYyB2b2lkIHN5
bmNocm9uaXplUG9pbnRzKHZvaWQqIGNvbnRleHRFbGVtZW50KTsKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29rdXBPckNyZWF0ZVBvaW50c1dyYXBwZXIodm9p
ZCogY29udGV4dEVsZW1lbnQpOworCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
SUVTKFNWR1BvbHlFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBF
TkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5j
aHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVk
RXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxh
bmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQog
CiBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSBTVkdTeW5jaHJvbml6YWJsZUFuaW1hdGVkUHJvcGVy
dHk8U1ZHUG9pbnRMaXN0PiBtX3BvaW50czsKLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMaXN0UHJv
cGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4gPiBtX2FuaW1hdGFibGVQb2ludHNMaXN0OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDYgKzQ3LDE1IEBAIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmFkaWFsR3JhZGll
bnQKIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdO
YW1lczo6ZnhBdHRyLCBGeCwgZngpCiBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmZ5QXR0ciwgRnksIGZ5KQogCitCRUdJTl9SRUdJU1RF
Ul9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCkKKyAgICBSRUdJ
U1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShjeCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShjeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShy
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGZ4KQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGZ5KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR0dyYWRpZW50RWxlbWVudCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9Q
Uk9QRVJUSUVTCisKIGlubGluZSBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OlNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgOiBTVkdHcmFkaWVudEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAg
LCBtX2N4KExlbmd0aE1vZGVXaWR0aCwgIjUwJSIpCkBAIC01Nyw2ICs2Niw3IEBAIGlubGluZSBT
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OlNWR1JhZGkKIHsKICAgICAvLyBTcGVjOiBJZiB0aGUg
Y3gvY3kvciBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBh
IHZhbHVlIG9mICI1MCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNW
R05hbWVzOjpyYWRpYWxHcmFkaWVudFRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0
aWVzRm9yU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHUmFk
aWFsR3JhZGllbnRFbGVtZW50PiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xMjksNjkg
KzEzOSw2IEBAIHZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWIKICAgICAg
ICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KIAotdm9pZCBTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVDeCgpOwotICAgICAgICBzeW5jaHJvbml6ZUN5KCk7Ci0gICAgICAgIHN5bmNocm9u
aXplRngoKTsKLSAgICAgICAgc3luY2hyb25pemVGeSgpOwotICAgICAgICBzeW5jaHJvbml6ZVIo
KTsKLSAgICAgICAgU1ZHR3JhZGllbnRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJO
YW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0dyYWRpZW50RWxlbWVudDo6c3luY2hyb25p
emVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmN4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUN4KCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OmN5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUN5KCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmZ4QXR0cikgewotICAgICAgICBz
eW5jaHJvbml6ZUZ4KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmZ5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUZ5KCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplUigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkK
LXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBz
X2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Ojpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7Ci0KLSAgICBTVkdHcmFkaWVudEVsZW1lbnQ6OmZpbGxQYXNzZWRB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0g
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpjeEF0dHIsIEFuaW1h
dGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OmN5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6ckF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmZ4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZnlBdHRyLCBBbmltYXRl
ZExlbmd0aCk7Ci19Ci0KIFJlbmRlck9iamVjdCogU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Ojpj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICBy
ZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudCh0aGlzKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgJ
KHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwyMCArNDIsMTggQEAgcHJpdmF0ZToKICAg
ICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmly
dHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSosIFJlbmRlclN0eWxlKik7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZl
TGVuZ3RocygpIGNvbnN0OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25z
Ci0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3gsIGN4KQotICAgIERFQ0xBUkVfQU5JTUFU
RURfTEVOR1RIKEN5LCBjeSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSLCByKQotICAg
IERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEZ4LCBmeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSChGeSwgZnkpCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3gs
IGN4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeSwgY3kpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfTEVOR1RIKFIsIHIpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVO
R1RIKEZ4LCBmeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoRnksIGZ5KQorICAg
IEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkocmV2aXNpb24g
OTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw2ICs0MSwxOCBAQCBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RF
bGVtZW50LCBTCiBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1JlY3RFbGVtZW50LCBTVkdOYW1l
czo6cnlBdHRyLCBSeSwgcnkpCiBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdSZWN0RWxlbWVu
dCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogCitCRUdJTl9SRUdJU1RF
Ul9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1JlY3RFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FM
X0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh3aWR0aCkKKyAgICBS
RUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShoZWlnaHQpCisgICAgUkVHSVNURVJfTE9D
QUxfQU5JTUFURURfUFJPUEVSVFkocngpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJP
UEVSVFkocnkpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJU
SUVTCisKIGlubGluZSBTVkdSZWN0RWxlbWVudDo6U1ZHUmVjdEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3goTGVuZ3RoTW9k
ZVdpZHRoKQpAQCAtNTEsNiArNjMsNyBAQCBpbmxpbmUgU1ZHUmVjdEVsZW1lbnQ6OlNWR1JlY3RF
bGVtZW50KGNvCiAgICAgLCBtX3J5KExlbmd0aE1vZGVIZWlnaHQpCiB7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoU1ZHTmFtZXM6OnJlY3RUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVy
dGllc0ZvclNWR1JlY3RFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHUmVjdEVsZW1lbnQ+
IFNWR1JlY3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQpAQCAtMTcwLDg4ICsxODMsNiBAQCB2b2lkIFNWR1JlY3RFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZv
aWQgU1ZHUmVjdEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAgICAg
ICAgc3luY2hyb25pemVYKCk7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICBzeW5j
aHJvbml6ZVdpZHRoKCk7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7Ci0gICAgICAgIHN5
bmNocm9uaXplUngoKTsKLSAgICAgICAgc3luY2hyb25pemVSeSgpOwotICAgICAgICBzeW5jaHJv
bml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNo
cm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVYKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRy
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpIHsKLSAgICAgICAgc3luY2hy
b25pemVXaWR0aCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7Ci0gICAgICAgIHN5bmNocm9uaXplSGVpZ2h0KCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnJ4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVJ4KCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJ5QXR0cikgewotICAgICAgICBz
eW5jaHJvbml6ZVJ5KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAg
ICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0
ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdSZWN0RWxlbWVudDo6YXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgp
KTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBT
VkdSZWN0RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0
aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKLSAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0
ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6cnhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyeUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
LX0KLQogdm9pZCBTVkdSZWN0RWxlbWVudDo6dG9QYXRoRGF0YShQYXRoJiBwYXRoKSBjb25zdAog
ewogICAgIEFTU0VSVChwYXRoLmlzRW1wdHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUmVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVj
dEVsZW1lbnQuaAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVj
dEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMjQgKzQ3LDI1IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1
YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0g
ICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZp
cnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdG9QYXRoRGF0YShQYXRoJikgY29uc3Q7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCi0gICAgLy8g
QW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoWCwgeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQotICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKFdpZHRoLCB3aWR0aCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdU
SChIZWlnaHQsIGhlaWdodCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSeCwgcngpCi0g
ICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUnksIHJ5KQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJFR0lOX0RF
Q0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdSZWN0RWxlbWVudCkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgo
WSwgeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQorICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9MRU5HVEgoUngsIHJ4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSChSeSwgcnkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEVORF9ERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKKworICAgIC8vIFNWR1Rlc3RzCisgICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXpl
UmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJl
cXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNp
b25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2Uo
KSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsMTggQEAgREVGSU5FX0FOSU1BVEVEX0JP
T0xFQU4oU1ZHU1ZHRWxlbWVudCwgUwogREVGSU5FX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFU
SU8oU1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBQcmVz
ZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogREVGSU5FX0FOSU1BVEVEX1JF
Q1QoU1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBWaWV3Qm94LCB2aWV3Qm94
KQogCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1NWR0VsZW1lbnQpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeCkKKyAgICBSRUdJU1RFUl9MT0NB
TF9BTklNQVRFRF9QUk9QRVJUWSh5KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKHdpZHRoKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGhlaWdodCkK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHZpZXdCb3gpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocHJlc2VydmVBc3BlY3RSYXRpbykK
KyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRMb2NhdGFi
bGVFbGVtZW50KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1Rl
c3RzKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKKwogaW5saW5lIFNWR1NWR0Vs
ZW1lbnQ6OlNWR1NWR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvYykKICAgICA6IFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jKQog
ICAgICwgbV94KExlbmd0aE1vZGVXaWR0aCkKQEAgLTc3LDYgKzg5LDcgQEAgaW5saW5lIFNWR1NW
R0VsZW1lbnQ6OlNWR1NWR0VsZW1lbnQoY29ucwogICAgICwgbV9oYXNTZXRDb250YWluZXJTaXpl
KGZhbHNlKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpzdmdUYWcpKTsKKyAg
ICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1NWR0VsZW1lbnQoKTsKICAgICBkb2Mt
PnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOwogfQogCkBAIC0z
NTUsNTUgKzM2OCw2IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCgK
ICAgICBTVkdTdHlsZWRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0K
IAotdm9pZCBTVkdTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAg
c3luY2hyb25pemVXaWR0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUhlaWdodCgpOwotICAgICAg
ICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgU1ZHRml0
VG9WaWV3Qm94OjpzeW5jaHJvbml6ZVByb3BlcnRpZXMoYXR0ck5hbWUpOwotICAgICAgICBTVkdU
ZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgU1ZH
U3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAg
ICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
eUF0dHIpCi0gICAgICAgIHN5bmNocm9uaXplWSgpOwotICAgIGVsc2UgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICBl
bHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgc3luY2hy
b25pemVIZWlnaHQoKTsKLSAgICBlbHNlIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgZWxzZSBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgCi0gICAgICAgIFNWR0ZpdFRvVmlld0JveDo6c3luY2hy
b25pemVQcm9wZXJ0aWVzKGF0dHJOYW1lKTsKLSAgICBlbHNlIGlmIChTVkdUZXN0czo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3Bl
cnRpZXModGhpcywgYXR0ck5hbWUpOwotICAgIGVsc2UKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVu
dDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBTVkdTVkdFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19h
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR1NWR0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRy
LCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRl
ZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp2
aWV3Qm94QXR0ciwgQW5pbWF0ZWRSZWN0KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBBbmltYXRlZFByZXNlcnZl
QXNwZWN0UmF0aW8pOwotfQotCiB1bnNpZ25lZCBTVkdTVkdFbGVtZW50OjpzdXNwZW5kUmVkcmF3
KHVuc2lnbmVkIC8qIG1heFdhaXRNaWxsaXNlY29uZHMgKi8pCiB7CiAgICAgLy8gRklYTUU6IElt
cGxlbWVudCBtZSAoc2VlIGJ1ZyAxMTI3NSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1l
bnQuaAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsMjcgKzE0NSwyNiBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAg
ICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIAogICAgIHZv
aWQgaW5oZXJpdFZpZXdBdHRyaWJ1dGVzKFNWR1ZpZXdFbGVtZW50Kik7CiAKLSAgICAvLyBBbmlt
YXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChY
LCB4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCi0gICAgREVDTEFSRV9BTklN
QVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhl
aWdodCwgaGVpZ2h0KQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAg
IERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQotCi0gICAgLy8gU1ZHRml0VG9WaWV3Qm94Ci0gICAgREVD
TEFSRV9BTklNQVRFRF9SRUNUKFZpZXdCb3gsIHZpZXdCb3gpCi0gICAgREVDTEFSRV9BTklNQVRF
RF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0
UmF0aW8pCi0gCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1NWR0Vs
ZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVO
R1RIKFdpZHRoLCB3aWR0aCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoSGVpZ2h0
LCBoZWlnaHQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX1JFQ1QoVmlld0JveCwgdmlld0JveCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0
UmF0aW8pCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUworCisgICAgLy8gU1ZH
VGVzdHMKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBT
VkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hy
b25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVTeXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3Vh
Z2UodGhpcyk7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2
ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDY2NikK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3Rh
dGljUHJvcGVydHlUZWFyT2ZmLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudEluc3RhbmNlLmgiCiAj
aW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCkBA
IC0zOCwxMSArMzksMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogREVGSU5FX0FOSU1BVEVEX1NU
UklORyhTVkdTY3JpcHRFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgSHJlZiwgaHJlZikK
IERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1NjcmlwdEVsZW1lbnQsIFNWR05hbWVzOjpleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKIAorQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdTY3JpcHRFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BF
UlRZKGhyZWYpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCisKIGlu
bGluZSBTVkdTY3JpcHRFbGVtZW50OjpTVkdTY3JpcHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCB3YXNJbnNlcnRlZEJ5UGFyc2Vy
LCBib29sIGFscmVhZHlTdGFydGVkKQogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkKICAgICAsIFNjcmlwdEVsZW1lbnQodGhpcywgd2FzSW5zZXJ0ZWRCeVBhcnNlciwgYWxyZWFk
eVN0YXJ0ZWQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnNjcmlwdFRhZykp
OworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHU2NyaXB0RWxlbWVudCgpOwog
fQogCiBQYXNzUmVmUHRyPFNWR1NjcmlwdEVsZW1lbnQ+IFNWR1NjcmlwdEVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wg
aW5zZXJ0ZWRCeVBhcnNlcikKQEAgLTEyMCw0NCArMTI3LDYgQEAgdm9pZCBTVkdTY3JpcHRFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12
b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAg
ICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIHN5
bmNocm9uaXplSHJlZigpOwotICAgICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXpl
UHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfSAgIAotCi0gICAgaWYg
KFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVIcmVmKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1NjcmlwdEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJu
IHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHU2NyaXB0RWxlbWVu
dDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcp
OwotfQotCiB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsK
ICAgICBTVkdFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDkgKzUxLDYg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdl
ZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hh
bmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCB2b2lkIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogCkBAIC03NSwxMyArNzIsMTAgQEAg
cHJpdmF0ZToKIAogICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0
dHJpYnV0ZXNBbmRDaGlsZHJlbigpIGNvbnN0OwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkg
ZGVjbGFyYXRpb25zCi0KLSAgICAvLyBTVkdVUklSZWZlcmVuY2UKLSAgICBERUNMQVJFX0FOSU1B
VEVEX1NUUklORyhIcmVmLCBocmVmKQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdTY3JpcHRFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBF
TkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICBTdHJpbmcgbV90eXBlOwogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2NjYp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiwxMSArMzYsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQW5pbWF0ZWQgcHJv
cGVydHkgZGVmaW5pdGlvbnMKIERFRklORV9BTklNQVRFRF9OVU1CRVIoU1ZHU3RvcEVsZW1lbnQs
IFNWR05hbWVzOjpvZmZzZXRBdHRyLCBPZmZzZXQsIG9mZnNldCkKIAorQkVHSU5fUkVHSVNURVJf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdTdG9wRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9B
TklNQVRFRF9QUk9QRVJUWShvZmZzZXQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BS
T1BFUlRJRVMoU1ZHU3R5bGVkRWxlbWVudCkKK0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJU
SUVTCisKIGlubGluZSBTVkdTdG9wRWxlbWVudDo6U1ZHU3RvcEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fb2Zmc2V0KDApCiB7CiAgICAgQVNTRVJU
KGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN0b3BUYWcpKTsKKyAgICByZWdpc3RlckFuaW1hdGVkUHJv
cGVydGllc0ZvclNWR1N0b3BFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHU3RvcEVsZW1l
bnQ+IFNWR1N0b3BFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtOTUsNDEgKzEwMSw2IEBAIHZvaWQgU1ZHU3RvcEVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAot
dm9pZCBTVkdTdG9wRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAg
ICAgICBzeW5jaHJvbml6ZU9mZnNldCgpOwotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5j
aHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1N0eWxl
ZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpvZmZzZXRBdHRyKSB7Ci0g
ICAgICAgIHN5bmNocm9uaXplT2Zmc2V0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IFNWR1N0b3BFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwOwotfQotCi12b2lkIFNWR1N0b3BFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0K
LSAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChTVkdOYW1lczo6b2Zmc2V0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotfQotCiBS
ZW5kZXJPYmplY3QqIFNWR1N0b3BFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZH
R3JhZGllbnRTdG9wKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgJ
KHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDE2ICszOSwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAg
ICAgdmlydHVhbCBib29sIGlzR3JhZGllbnRTdG9wKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwg
UmVuZGVyU3R5bGUqKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwot
ICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKE9mZnNldCwgb2Zmc2V0KQorICAgIEJFR0lOX0RF
Q0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdG9wRWxlbWVudCkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9OVU1CRVIoT2Zmc2V0LCBvZmZzZXQpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVElFUwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDEyICs0NCwxNyBAQAogI2luY2x1ZGUgIlNWR1VzZUVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEFuaW1hdGVkIHByb3Bl
cnR5IGRlZmluaXRpb25zCiBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR1N0eWxlZEVsZW1lbnQs
IEhUTUxOYW1lczo6Y2xhc3NBdHRyLCBDbGFzc05hbWUsIGNsYXNzTmFtZSkKIAorQkVHSU5fUkVH
SVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRFbGVtZW50KQorICAgIFJFR0lTVEVS
X0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGNsYXNzTmFtZSkKK0VORF9SRUdJU1RFUl9BTklNQVRF
RF9QUk9QRVJUSUVTCisKIHVzaW5nIG5hbWVzcGFjZSBTVkdOYW1lczsKIAogdm9pZCBtYXBBdHRy
aWJ1dGVUb0NTU1Byb3BlcnR5KEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIGludD4qIHByb3Bl
cnR5TmFtZVRvSWRNYXAsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpAQCAtNjIsNiAr
NjcsNyBAQCB2b2lkIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkoSGFzaE1hcDxBCiBTVkdTdHls
ZWRFbGVtZW50OjpTVkdTdHlsZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
CiB7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdTdHlsZWRFbGVtZW50KCk7
CiB9CiAKIFNWR1N0eWxlZEVsZW1lbnQ6On5TVkdTdHlsZWRFbGVtZW50KCkKQEAgLTIwNSwxMCAr
MjExLDExIEBAIGludCBTVkdTdHlsZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1YKICAgICBy
ZXR1cm4gcHJvcGVydHlOYW1lVG9JZE1hcC0+Z2V0KGF0dHJOYW1lLmxvY2FsTmFtZSgpLmltcGwo
KSk7CiB9CiAKK3R5cGVkZWYgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZFByb3BlcnR5
VHlwZT4gQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7CiBzdGF0aWMgaW5saW5lIEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwJiBjc3NQcm9wZXJ0eVRvVHlwZU1hcCgpCiB7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19jc3NQcm9wZXJ0eU1h
cCwgKCkpOwotICAgIAorCiAgICAgaWYgKCFzX2Nzc1Byb3BlcnR5TWFwLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHNfY3NzUHJvcGVydHlNYXA7CiAKQEAgLTI2OSwxMiArMjc2LDE1IEBAIHN0
YXRpYyBpbmxpbmUgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAKICAgICByZXR1cm4gc19jc3NQ
cm9wZXJ0eU1hcDsKIH0KIAotQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIFNWR1N0eWxlZEVsZW1lbnQ6
OmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQ1NTUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCit2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OmFuaW1hdGVkUHJvcGVydHlUeXBlRm9y
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBWZWN0b3I8QW5pbWF0ZWRQ
cm9wZXJ0eVR5cGU+JiBwcm9wZXJ0eVR5cGVzKQogeworICAgIFNWR0VsZW1lbnQ6OmFuaW1hdGVk
UHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGF0dHJOYW1lLCBwcm9wZXJ0eVR5cGVzKTsKKyAgICBp
ZiAoIXByb3BlcnR5VHlwZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKICAgICBBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgY3NzUHJvcGVydHlUeXBlTWFwID0gY3NzUHJvcGVydHlU
b1R5cGVNYXAoKTsKICAgICBpZiAoY3NzUHJvcGVydHlUeXBlTWFwLmNvbnRhaW5zKGF0dHJOYW1l
KSkKLSAgICAgICAgcmV0dXJuIGNzc1Byb3BlcnR5VHlwZU1hcC5nZXQoYXR0ck5hbWUpOwotICAg
IHJldHVybiBBbmltYXRlZFVua25vd247CisgICAgICAgIHByb3BlcnR5VHlwZXMuYXBwZW5kKGNz
c1Byb3BlcnR5VHlwZU1hcC5nZXQoYXR0ck5hbWUpKTsKIH0KIAogYm9vbCBTVkdTdHlsZWRFbGVt
ZW50Ojppc0FuaW1hdGFibGVDU1NQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKQEAgLTI4MiwxMSArMjkyLDYgQEAgYm9vbCBTVkdTdHlsZWRFbGVtZW50Ojppc0FuaW1hdGFi
bGVDU1NQcgogICAgIHJldHVybiBjc3NQcm9wZXJ0eVRvVHlwZU1hcCgpLmNvbnRhaW5zKGF0dHJO
YW1lKTsKIH0KIAotdm9pZCBTVkdTdHlsZWRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKQotewotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChIVE1M
TmFtZXM6OmNsYXNzQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwotfQotCiBib29sIFNWR1N0eWxlZEVs
ZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0
dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0CiB7CiAgICAgaWYgKFNWR1N0eWxlZEVsZW1lbnQ6
OmNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHJOYW1lKSA+IDApIHsKQEAgLTM1
MSwxMiArMzU2LDYgQEAgdm9pZCBTVkdTdHlsZWRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZwog
ICAgIH0KIH0KIAotdm9pZCBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlR
TmFtZSgpIHx8IGF0dHJOYW1lID09IEhUTUxOYW1lczo6Y2xhc3NBdHRyKQotICAgICAgICBzeW5j
aHJvbml6ZUNsYXNzTmFtZSgpOwotfQotCiB2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OmF0dGFjaCgp
CiB7CiAgICAgU1ZHRWxlbWVudDo6YXR0YWNoKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU3R5bGVkRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dHlsZWRFbGVtZW50LmgJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0eWxlZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBoYXNQZW5kaW5nUmVzb3VyY2VzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRIYXNQ
ZW5kaW5nUmVzb3VyY2VzKGJvb2wpOwogCi0gICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIGFuaW1h
dGVkUHJvcGVydHlUeXBlRm9yQ1NTUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAg
IHZpcnR1YWwgdm9pZCBhbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgVmVjdG9yPEFuaW1hdGVkUHJvcGVydHlUeXBlPiYpOwogICAgIHN0YXRpYyBi
b29sIGlzQW5pbWF0YWJsZUNTU1Byb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAg
IHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtKFNW
R0xvY2F0YWJsZTo6Q1RNU2NvcGUpIGNvbnN0OwpAQCAtNjIsMTUgKzYyLDExIEBAIHB1YmxpYzoK
IAogcHJvdGVjdGVkOiAKICAgICBTVkdTdHlsZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCopOwotCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
Tm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYpIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotCi0g
ICAgdm9pZCBmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0
dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKQEAgLTk0LDggKzkwLDkgQEAgcHJpdmF0
ZToKIAogICAgIEhhc2hTZXQ8U1ZHU3R5bGVkRWxlbWVudCo+IG1fZWxlbWVudHNXaXRoUmVsYXRp
dmVMZW5ndGhzOwogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAg
REVDTEFSRV9BTklNQVRFRF9TVFJJTkcoQ2xhc3NOYW1lLCBjbGFzc05hbWUpCisgICAgQkVHSU5f
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVsZW1lbnQpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfU1RSSU5HKENsYXNzTmFtZSwgY2xhc3NOYW1lKQorICAgIEVORF9ERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50LmNwcAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw5ICszNSwx
NSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9u
cwogREVGSU5FX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50LCBTVkdOYW1lczo6dHJhbnNmb3JtQXR0ciwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCiAK
K0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJs
ZUVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkodHJhbnNmb3Jt
KQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZExvY2F0
YWJsZUVsZW1lbnQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUworCiBTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZH
U3R5bGVkTG9jYXRhYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKKyAgICByZWdpc3Rl
ckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KCk7CiB9
CiAKIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojp+U1ZHU3R5bGVkVHJhbnNmb3JtYWJs
ZUVsZW1lbnQoKQpAQCAtMTE5LDI3ICsxMjUsNiBAQCB2b2lkIFNWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50OjpzdmdBCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkp
IHsKLSAgICAgICAgc3luY2hyb25pemVUcmFuc2Zvcm0oKTsKLSAgICAgICAgU1ZHU3R5bGVkTG9j
YXRhYmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewotICAgICAgICBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6dHJhbnNmb3JtQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVRyYW5zZm9y
bSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci19Ci0KIFNWR0VsZW1lbnQqIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpuZWFyZXN0
Vmlld3BvcnRFbGVtZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtYWJsZTo6
bmVhcmVzdFZpZXdwb3J0RWxlbWVudCh0aGlzKTsKQEAgLTE2MSwxMyArMTQ2LDYgQEAgUmVuZGVy
T2JqZWN0KiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbQogICAgIHJldHVybiBuZXcgKGFyZW5h
KSBSZW5kZXJTVkdQYXRoKHRoaXMpOwogfQogCi12b2lkIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKQotewotICAgIFNWR1N0
eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgCi0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLCBBbmltYXRlZFRyYW5zZm9ybUxpc3QpOwot
fQotCiB2b2lkIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojp0b0NsaXBQYXRoKFBhdGgm
IHBhdGgpIGNvbnN0CiB7CiAgICAgdG9QYXRoRGF0YShwYXRoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCShyZXZpc2lv
biA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxMSArNTgsMTAgQEAgcHJvdGVjdGVkOgogICAg
IGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAg
IHZvaWQgZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJik7CiAKLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMK
LSAgICBERUNMQVJFX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFRyYW5zZm9ybSwgdHJhbnNmb3Jt
KQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChU
cmFuc2Zvcm0sIHRyYW5zZm9ybSkKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVT
CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzU3R5bGVkVHJhbnNmb3JtYWJsZSgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxl
bWVudC5jcHAJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRj
aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsMTcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKIERFRklORV9BTklN
QVRFRF9CT09MRUFOKFNWR1N3aXRjaEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkQXR0ciwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKIAorQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTd2l0
Y2hFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCisgICAgUkVHSVNURVJfUEFSRU5UX0FO
SU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVS
VElFUworCiBpbmxpbmUgU1ZHU3dpdGNoRWxlbWVudDo6U1ZHU3dpdGNoRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShTVkdOYW1lczo6c3dpdGNoVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFBy
b3BlcnRpZXNGb3JTVkdTd2l0Y2hFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHU3dpdGNo
RWxlbWVudD4gU1ZHU3dpdGNoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTY1LDMzICs3Miw2IEBAIFJlbmRlck9iamVj
dCogU1ZHU3dpdGNoRWxlbWVudDo6Y3JlYXRlUmUKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVu
ZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcih0aGlzKTsKIH0KIAotdm9pZCBTVkdTd2l0Y2hF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQotewotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5KGF0dHJOYW1lKTsKLQotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAg
ICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwotICAgICAgICBTVkdU
ZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKCk7Ci0gICAgZWxzZSBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKQotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMs
IGF0dHJOYW1lKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1N3aXRjaEVs
ZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19
Ci0KLXZvaWQgU1ZHU3dpdGNoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKLXsKLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkpOwotfQot
CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N3aXRjaEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dp
dGNoRWxlbWVudC5oCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
d2l0Y2hFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDE1ICs0NiwxNSBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSosIFJlbmRlclN0eWxlKik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAotICAgIC8vIEFuaW1hdGVk
IHByb3BlcnR5IGRlY2xhcmF0aW9ucworICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdTd2l0Y2hFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4o
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAg
ICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKLSAgICAvLyBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgLy8gU1ZHVGVz
dHMKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdU
ZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25p
emVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25p
emVTeXN0ZW1MYW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2Uo
dGhpcyk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMCAr
MzQsMTggQEAgREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHU3ltYm9sRWxlbWVudAogREVGSU5F
X0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oU1ZHU3ltYm9sRWxlbWVudCwgU1ZHTmFtZXM6
OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFz
cGVjdFJhdGlvKSAKIERFRklORV9BTklNQVRFRF9SRUNUKFNWR1N5bWJvbEVsZW1lbnQsIFNWR05h
bWVzOjp2aWV3Qm94QXR0ciwgVmlld0JveCwgdmlld0JveCkKIAorQkVHSU5fUkVHSVNURVJfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdTeW1ib2xFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgUkVHSVNURVJf
TE9DQUxfQU5JTUFURURfUFJPUEVSVFkodmlld0JveCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWShwcmVzZXJ2ZUFzcGVjdFJhdGlvKSAKKyAgICBSRUdJU1RFUl9QQVJFTlRf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRFbGVtZW50KQorRU5EX1JFR0lTVEVSX0FOSU1B
VEVEX1BST1BFUlRJRVMKKwogaW5saW5lIFNWR1N5bWJvbEVsZW1lbnQ6OlNWR1N5bWJvbEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAg
IDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShTVkdOYW1lczo6c3ltYm9sVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3Bl
cnRpZXNGb3JTVkdTeW1ib2xFbGVtZW50KCk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHU3ltYm9sRWxl
bWVudD4gU1ZHU3ltYm9sRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTg3LDQ4ICs5NSw2IEBAIHZvaWQgU1ZHU3ltYm9s
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmcKICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhz
SW5mb3JtYXRpb24oKTsKIH0KIAotdm9pZCBTVkdTeW1ib2xFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFt
ZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCgpOwotICAgICAgICBTVkdGaXRUb1ZpZXdCb3g6OnN5bmNocm9uaXplUHJvcGVydGll
cyhhdHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVy
dHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBv
cnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaXRUb1ZpZXdCb3g6OnN5bmNo
cm9uaXplUHJvcGVydGllcyhhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IFNWR1N5bWJvbEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXA7Ci19Ci0KLXZvaWQgU1ZHU3ltYm9sRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCkKLXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwotCi0gICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBBbmltYXRlZFJlY3QpOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RS
YXRpb0F0dHIsIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7Ci19Ci0KIGJvb2wgU1ZHU3lt
Ym9sRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGhhc0F0dHJpYnV0ZShTVkdOYW1lczo6dmlld0JveEF0dHIpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU3ltYm9sRWxlbWVudC5oCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDIxICs0NywxNSBA
QCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1
YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKLSAgICAvLyBBbmltYXRl
ZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLQotICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQKLSAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKLSAKLSAgICAvLyBTVkdGaXRUb1ZpZXdC
b3gKLSAgICBERUNMQVJFX0FOSU1BVEVEX1JFQ1QoVmlld0JveCwgdmlld0JveCkKLSAgICBERUNM
QVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oUHJlc2VydmVBc3BlY3RSYXRpbywgcHJl
c2VydmVBc3BlY3RSYXRpbykgCisgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR1N5bWJvbEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX1JFQ1QoVmlld0JveCwgdmlld0JveCkKKyAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNl
cnZlQXNwZWN0UmF0aW8pIAorICAgIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
UmVmRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZF
bGVtZW50LmNwcAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJl
ZkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMCArNDAsMTYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKIERFRklORV9BTklN
QVRFRF9TVFJJTkcoU1ZHVFJlZkVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBo
cmVmKQogCitCRUdJTl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1RSZWZFbGVtZW50
KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGhyZWYpCisgICAgUkVHSVNU
RVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCkK
K0VORF9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTCisKIGlubGluZSBTVkdUUmVmRWxlbWVu
dDo6U1ZHVFJlZkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQogICAgIDogU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6dHJlZlRhZykpOworICAg
IHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVFJlZkVsZW1lbnQoKTsKIH0KIAogUGFz
c1JlZlB0cjxTVkdUUmVmRWxlbWVudD4gU1ZHVFJlZkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xNjQsNDEgKzE3MCw2
IEBAIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdUUmVmRWxlbWVudDo6c3luY2hyb25pemVQcm9w
ZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUg
PT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKLSAgICAgICAgU1ZH
VGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0
dHJOYW1lKSkgewotICAgICAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChT
VkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplSHJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdUUmVmRWxl
bWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKLX0K
LQotdm9pZCBTVkdUUmVmRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkK
LXsKLSAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotCi0gICAgU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudDo6ZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKLX0KLQogUmVu
ZGVyT2JqZWN0KiBTVkdUUmVmRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFy
ZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR0lu
bGluZSh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oCShyZXZpc2lv
biA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw5ICs0Miw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSop
OwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25z
dDsKQEAgLTU2LDEwICs1Myw5IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgYnVpbGRQ
ZW5kaW5nUmVzb3VyY2UoKTsKIAotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9u
cwotCi0gICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkco
SHJlZiwgaHJlZikKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVFJl
ZkVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCisg
ICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogCiAgICAgUmVmUHRyPFN1YnRyZWVN
b2RpZmljYXRpb25FdmVudExpc3RlbmVyPiBtX2V2ZW50TGlzdGVuZXI7CiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNjY2KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0
LDE5ICs3NCw2IEBAIGJvb2wgU1ZHVFNwYW5FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGMKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdUU3Bh
bkVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7
Ci19Ci0KLXZvaWQgU1ZHVFNwYW5FbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQoteyAgICAgICAgCi0gICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6ZmlsbFBhc3Nl
ZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkp
OwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06dHM9NDpub2V0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oCShyZXZpc2lvbiA5MDY2NikKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsOSArMzYsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIGNo
aWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUZXN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNw
cAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw0OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
Ky8vIERlZmluZSBjdXN0b20gbm9uLWFuaW1hdGVkIHByb3BlcnR5ICdyZXF1aXJlZEZlYXR1cmVz
Jy4KK2NvbnN0IFNWR1Byb3BlcnR5SW5mbyogU1ZHVGVzdHM6OnJlcXVpcmVkRmVhdHVyZXNQcm9w
ZXJ0eUluZm8oKQoreworICAgIHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIHNfcHJvcGVy
dHlJbmZvID0gMDsKKyAgICBpZiAoIXNfcHJvcGVydHlJbmZvKSB7CisgICAgICAgIHNfcHJvcGVy
dHlJbmZvID0gbmV3IFNWR1Byb3BlcnR5SW5mbyhBbmltYXRlZFVua25vd24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6cmVxdWlyZWRGZWF0
dXJlc0F0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
VkdOYW1lczo6cmVxdWlyZWRGZWF0dXJlc0F0dHIubG9jYWxOYW1lKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU1ZHRWxlbWVudDo6c3luY2hyb25pemVS
ZXF1aXJlZEZlYXR1cmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMCk7CisgICAgfQorICAgIHJldHVybiBzX3Byb3BlcnR5SW5mbzsKK30KKworLy8gRGVm
aW5lIGN1c3RvbSBub24tYW5pbWF0ZWQgcHJvcGVydHkgJ3JlcXVpcmVkRXh0ZW5zaW9ucycuCitj
b25zdCBTVkdQcm9wZXJ0eUluZm8qIFNWR1Rlc3RzOjpyZXF1aXJlZEV4dGVuc2lvbnNQcm9wZXJ0
eUluZm8oKQoreworICAgIHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIHNfcHJvcGVydHlJ
bmZvID0gMDsKKyAgICBpZiAoIXNfcHJvcGVydHlJbmZvKSB7CisgICAgICAgIHNfcHJvcGVydHlJ
bmZvID0gbmV3IFNWR1Byb3BlcnR5SW5mbyhBbmltYXRlZFVua25vd24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6cmVxdWlyZWRFeHRlbnNp
b25zQXR0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNW
R05hbWVzOjpyZXF1aXJlZEV4dGVuc2lvbnNBdHRyLmxvY2FsTmFtZSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNWR0VsZW1lbnQ6OnN5bmNocm9uaXpl
UmVxdWlyZWRFeHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCk7CisgICAgfQorICAgIHJldHVybiBzX3Byb3BlcnR5SW5mbzsKK30KKworLy8g
RGVmaW5lIGN1c3RvbSBub24tYW5pbWF0ZWQgcHJvcGVydHkgJ3N5c3RlbUxhbmd1YWdlJy4KK2Nv
bnN0IFNWR1Byb3BlcnR5SW5mbyogU1ZHVGVzdHM6OnN5c3RlbUxhbmd1YWdlUHJvcGVydHlJbmZv
KCkKK3sKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBzX3Byb3BlcnR5SW5mbyA9
IDA7CisgICAgaWYgKCFzX3Byb3BlcnR5SW5mbykgeworICAgICAgICBzX3Byb3BlcnR5SW5mbyA9
IG5ldyBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRVbmtub3duLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6OnN5c3RlbUxhbmd1YWdlQXR0ciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpz
eXN0ZW1MYW5ndWFnZUF0dHIubG9jYWxOYW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmU1ZHRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFn
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAg
IH0KKyAgICByZXR1cm4gc19wcm9wZXJ0eUluZm87Cit9CisKIFNWR1Rlc3RzOjpTVkdUZXN0cygp
CiAgICAgOiBtX3JlcXVpcmVkRmVhdHVyZXMoU1ZHTmFtZXM6OnJlcXVpcmVkRmVhdHVyZXNBdHRy
KQogICAgICwgbV9yZXF1aXJlZEV4dGVuc2lvbnMoU1ZHTmFtZXM6OnJlcXVpcmVkRXh0ZW5zaW9u
c0F0dHIpCkBAIC0zOSw2ICs4MSwxNyBAQCBTVkdUZXN0czo6U1ZHVGVzdHMoKQogewogfQogCitT
VkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBTVkdUZXN0czo6YXR0cmlidXRlVG9Qcm9wZXJ0eU1h
cCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFw
LCBtYXAsICgpKTsKKyAgICBpZiAoIW1hcC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBtYXA7
CisgICAgbWFwLmFkZFByb3BlcnR5KHJlcXVpcmVkRmVhdHVyZXNQcm9wZXJ0eUluZm8oKSk7Cisg
ICAgbWFwLmFkZFByb3BlcnR5KHJlcXVpcmVkRXh0ZW5zaW9uc1Byb3BlcnR5SW5mbygpKTsKKyAg
ICBtYXAuYWRkUHJvcGVydHkoc3lzdGVtTGFuZ3VhZ2VQcm9wZXJ0eUluZm8oKSk7CisgICAgcmV0
dXJuIG1hcDsKK30KKwogYm9vbCBTVkdUZXN0czo6aGFzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYp
IGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBtZSEKQEAgLTExNSw0NSArMTY4LDMx
IEBAIHZvaWQgU1ZHVGVzdHM6OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMoSGEKICAgICBzdXBwb3J0
ZWRBdHRyaWJ1dGVzLmFkZChTVkdOYW1lczo6c3lzdGVtTGFuZ3VhZ2VBdHRyKTsKIH0KIAotdm9p
ZCBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUg
PT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoY29u
dGV4dEVsZW1lbnQpOwotICAgICAgICBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyhjb250
ZXh0RWxlbWVudCk7Ci0gICAgICAgIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoY29udGV4dEVs
ZW1lbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjpyZXF1aXJlZEZlYXR1cmVzQXR0cikKLSAgICAgICAgc3luY2hyb25pemVSZXF1aXJl
ZEZlYXR1cmVzKGNvbnRleHRFbGVtZW50KTsKLSAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6cmVxdWlyZWRFeHRlbnNpb25zQXR0cikKLSAgICAgICAgc3luY2hyb25pemVSZXF1aXJl
ZEV4dGVuc2lvbnMoY29udGV4dEVsZW1lbnQpOwotICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjpzeXN0ZW1MYW5ndWFnZUF0dHIpCi0gICAgICAgIHN5bmNocm9uaXplU3lzdGVtTGFu
Z3VhZ2UoY29udGV4dEVsZW1lbnQpOwotfQotCiB2b2lkIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJl
cXVpcmVkRmVhdHVyZXMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiB7CisgICAgQVNTRVJU
KGNvbnRleHRFbGVtZW50KTsKICAgICBpZiAoIW1fcmVxdWlyZWRGZWF0dXJlcy5zaG91bGRTeW5j
aHJvbml6ZSkKICAgICAgICAgcmV0dXJuOwogICAgIEF0b21pY1N0cmluZyB2YWx1ZShtX3JlcXVp
cmVkRmVhdHVyZXMudmFsdWUudmFsdWVBc1N0cmluZygpKTsKLSAgICBTVkdBbmltYXRlZFByb3Bl
cnR5U3luY2hyb25pemVyPHRydWU+OjpzeW5jaHJvbml6ZShjb250ZXh0RWxlbWVudCwgU1ZHTmFt
ZXM6OnJlcXVpcmVkRmVhdHVyZXNBdHRyLCB2YWx1ZSk7CisgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUoY29udGV4dEVsZW1lbnQsIHJlcXVpcmVk
RmVhdHVyZXNQcm9wZXJ0eUluZm8oKS0+YXR0cmlidXRlTmFtZSwgdmFsdWUpOwogfQogCiB2b2lk
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyhTVkdFbGVtZW50KiBjb250
ZXh0RWxlbWVudCkKIHsKKyAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwogICAgIGlmICghbV9y
ZXF1aXJlZEV4dGVuc2lvbnMuc2hvdWxkU3luY2hyb25pemUpCiAgICAgICAgIHJldHVybjsKICAg
ICBBdG9taWNTdHJpbmcgdmFsdWUobV9yZXF1aXJlZEV4dGVuc2lvbnMudmFsdWUudmFsdWVBc1N0
cmluZygpKTsKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPHRydWU+OjpzeW5j
aHJvbml6ZShjb250ZXh0RWxlbWVudCwgU1ZHTmFtZXM6OnJlcXVpcmVkRXh0ZW5zaW9uc0F0dHIs
IHZhbHVlKTsKKyAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPHRydWU+OjpzeW5j
aHJvbml6ZShjb250ZXh0RWxlbWVudCwgcmVxdWlyZWRFeHRlbnNpb25zUHJvcGVydHlJbmZvKCkt
PmF0dHJpYnV0ZU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBTVkdUZXN0czo6c3luY2hyb25pemVT
eXN0ZW1MYW5ndWFnZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKIHsKKyAgICBBU1NFUlQo
Y29udGV4dEVsZW1lbnQpOwogICAgIGlmICghbV9zeXN0ZW1MYW5ndWFnZS5zaG91bGRTeW5jaHJv
bml6ZSkKICAgICAgICAgcmV0dXJuOwogICAgIEF0b21pY1N0cmluZyB2YWx1ZShtX3N5c3RlbUxh
bmd1YWdlLnZhbHVlLnZhbHVlQXNTdHJpbmcoKSk7Ci0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5
bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUoY29udGV4dEVsZW1lbnQsIFNWR05hbWVzOjpz
eXN0ZW1MYW5ndWFnZUF0dHIsIHZhbHVlKTsKKyAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hy
b25pemVyPHRydWU+OjpzeW5jaHJvbml6ZShjb250ZXh0RWxlbWVudCwgc3lzdGVtTGFuZ3VhZ2VQ
cm9wZXJ0eUluZm8oKS0+YXR0cmlidXRlTmFtZSwgdmFsdWUpOwogfQogCiBTVkdTdHJpbmdMaXN0
JiBTVkdUZXN0czo6cmVxdWlyZWRGZWF0dXJlcygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGVzdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaAko
cmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBTVkdUZXN0c19oCiAKICNpZiBFTkFC
TEUoU1ZHKQorI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHkuaCIKICNpbmNsdWRlICJTVkdB
bmltYXRlZFByb3BlcnR5TWFjcm9zLmgiCiAjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdC5oIgogCkBA
IC00NSwxOCArNDYsMjcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRTdXBwb3J0ZWRBdHRyaWJ1
dGVzKEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4mKTsKICAgICBib29sIGhhbmRsZUF0dHJpYnV0ZUNo
YW5nZShjb25zdCBTVkdFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZvaWQg
c3luY2hyb25pemVQcm9wZXJ0aWVzKFNWR0VsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7
CisKKyAgICBzdGF0aWMgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgYXR0cmlidXRlVG9Qcm9w
ZXJ0eU1hcCgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHVGVzdHMoKTsKIAotcHJpdmF0ZToKLSAg
ICB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyhTVkdFbGVtZW50Kik7Ci0gICAgdm9p
ZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyhTVkdFbGVtZW50Kik7Ci0gICAgdm9pZCBz
eW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKFNWR0VsZW1lbnQqKTsKKyAgICB2b2lkIHN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7CisgICAgdm9p
ZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVu
dCk7CisgICAgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKFNWR0VsZW1lbnQqIGNvbnRl
eHRFbGVtZW50KTsKIAorcHJpdmF0ZToKKyAgICAvLyBDdXN0b20gJ3JlcXVpcmVkRmVhdHVyZXMn
IHByb3BlcnR5CisgICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogcmVxdWlyZWRGZWF0
dXJlc1Byb3BlcnR5SW5mbygpOwogICAgIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0
eTxTVkdTdHJpbmdMaXN0PiBtX3JlcXVpcmVkRmVhdHVyZXM7CisKKyAgICAvLyBDdXN0b20gJ3Jl
cXVpcmVkRXh0ZW5zaW9ucycgcHJvcGVydHkKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJ
bmZvKiByZXF1aXJlZEV4dGVuc2lvbnNQcm9wZXJ0eUluZm8oKTsKICAgICBTVkdTeW5jaHJvbml6
YWJsZUFuaW1hdGVkUHJvcGVydHk8U1ZHU3RyaW5nTGlzdD4gbV9yZXF1aXJlZEV4dGVuc2lvbnM7
CisKKyAgICAvLyBDdXN0b20gJ3N5c3RlbUxhbmd1YWdlJyBwcm9wZXJ0eQorICAgIHN0YXRpYyBj
b25zdCBTVkdQcm9wZXJ0eUluZm8qIHN5c3RlbUxhbmd1YWdlUHJvcGVydHlJbmZvKCk7CiAgICAg
U1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5PFNWR1N0cmluZ0xpc3Q+IG1fc3lzdGVt
TGFuZ3VhZ2U7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRl
bnRFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dENvbnRlbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjUgKzM3LDU4IEBA
CiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworIAorLy8gRGVm
aW5lIGN1c3RvbSBhbmltYXRlZCBwcm9wZXJ0eSAndGV4dExlbmd0aCcuCitjb25zdCBTVkdQcm9w
ZXJ0eUluZm8qIFNWR1RleHRDb250ZW50RWxlbWVudDo6dGV4dExlbmd0aFByb3BlcnR5SW5mbygp
Cit7CisgICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogc19wcm9wZXJ0eUluZm8gPSAw
OworICAgIGlmICghc19wcm9wZXJ0eUluZm8pIHsKKyAgICAgICAgc19wcm9wZXJ0eUluZm8gPSBu
ZXcgU1ZHUHJvcGVydHlJbmZvKEFuaW1hdGVkTGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6OnRleHRMZW5n
dGhBdHRyLmxvY2FsTmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJlNWR1RleHRDb250ZW50RWxlbWVudDo6c3luY2hyb25pemVUZXh0TGVuZ3RoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNWR1RleHRDb250
ZW50RWxlbWVudDo6bG9va3VwT3JDcmVhdGVUZXh0TGVuZ3RoV3JhcHBlcik7CisgICAgfQorICAg
IHJldHVybiBzX3Byb3BlcnR5SW5mbzsKK30KIAogLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5p
dGlvbnMKIERFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdUZXh0Q29udGVudEVsZW1lbnQs
IFNWR05hbWVzOjpsZW5ndGhBZGp1c3RBdHRyLCBMZW5ndGhBZGp1c3QsIGxlbmd0aEFkanVzdCwg
U1ZHTGVuZ3RoQWRqdXN0VHlwZSkKIERFRklORV9BTklNQVRFRF9CT09MRUFOKFNWR1RleHRDb250
ZW50RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogCitCRUdJ
Tl9SRUdJU1RFUl9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1RleHRDb250ZW50RWxlbWVudCkKKyAg
ICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWSh0ZXh0TGVuZ3RoKQorICAgIFJFR0lT
VEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGxlbmd0aEFkanVzdCkKKyAgICBSRUdJU1RFUl9M
T0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIFJF
R0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N0eWxlZEVsZW1lbnQpCisgICAg
UkVHSVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGVzdHMpCitFTkRfUkVHSVNU
RVJfQU5JTUFURURfUFJPUEVSVElFUworCiBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OlNWR1RleHRD
b250ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAgICwg
bV9zcGVjaWZpZWRUZXh0TGVuZ3RoKExlbmd0aE1vZGVPdGhlcikKICAgICAsIG1fdGV4dExlbmd0
aChMZW5ndGhNb2RlT3RoZXIpCisgICAgLCBtX3NwZWNpZmllZFRleHRMZW5ndGgoTGVuZ3RoTW9k
ZU90aGVyKQogICAgICwgbV9sZW5ndGhBZGp1c3QoU1ZHTGVuZ3RoQWRqdXN0U3BhY2luZykKIHsK
KyAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1RleHRDb250ZW50RWxlbWVudCgp
OwogfQogCi12b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6c3luY2hyb25pemVUZXh0TGVuZ3Ro
KCkKK3ZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzeW5jaHJvbml6ZVRleHRMZW5ndGgodm9p
ZCogY29udGV4dEVsZW1lbnQpCiB7Ci0gICAgaWYgKCFtX3RleHRMZW5ndGguc2hvdWxkU3luY2hy
b25pemUpCisgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKKyAgICBTVkdUZXh0Q29udGVudEVs
ZW1lbnQqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR1RleHRDb250ZW50RWxlbWVudCo+KGNv
bnRleHRFbGVtZW50KTsKKyAgICBpZiAoIW93bmVyVHlwZS0+bV90ZXh0TGVuZ3RoLnNob3VsZFN5
bmNocm9uaXplKQogICAgICAgICByZXR1cm47Ci0gICAgQXRvbWljU3RyaW5nIHZhbHVlKFNWR1By
b3BlcnR5VHJhaXRzPFNWR0xlbmd0aD46OnRvU3RyaW5nKG1fc3BlY2lmaWVkVGV4dExlbmd0aCkp
OwotICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5bmNocm9uaXpl
KHRoaXMsIFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0ciwgdmFsdWUpOworICAgIEF0b21pY1N0cmlu
ZyB2YWx1ZShTVkdQcm9wZXJ0eVRyYWl0czxTVkdMZW5ndGg+Ojp0b1N0cmluZyhvd25lclR5cGUt
Pm1fc3BlY2lmaWVkVGV4dExlbmd0aCkpOworICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJv
bml6ZXI8dHJ1ZT46OnN5bmNocm9uaXplKG93bmVyVHlwZSwgdGV4dExlbmd0aFByb3BlcnR5SW5m
bygpLT5hdHRyaWJ1dGVOYW1lLCB2YWx1ZSk7Cit9CisKK1Bhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQ
cm9wZXJ0eT4gU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojpsb29rdXBPckNyZWF0ZVRleHRMZW5ndGhX
cmFwcGVyKHZvaWQqIGNvbnRleHRFbGVtZW50KQoreworICAgIEFTU0VSVChjb250ZXh0RWxlbWVu
dCk7CisgICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50KiBvd25lclR5cGUgPSBzdGF0aWNfY2FzdDxT
VkdUZXh0Q29udGVudEVsZW1lbnQqPihjb250ZXh0RWxlbWVudCk7CisgICAgcmV0dXJuIFNWR0Fu
aW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdUZXh0Q29udGVudEVsZW1l
bnQsIFNWR0FuaW1hdGVkTGVuZ3RoLCBTVkdMZW5ndGgsIHRydWU+CisgICAgICAgICAgIChvd25l
clR5cGUsIHRleHRMZW5ndGhQcm9wZXJ0eUluZm8oKSwgb3duZXJUeXBlLT5tX3RleHRMZW5ndGgu
dmFsdWUpOwogfQogCiBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiBTVkdUZXh0Q29udGVu
dEVsZW1lbnQ6OnRleHRMZW5ndGhBbmltYXRlZCgpCkBAIC02OCw3ICsxMDEsOCBAQCBQYXNzUmVm
UHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiBTVkdUZXh0Q29uCiAgICAgfQogCiAgICAgbV90ZXh0TGVu
Z3RoLnNob3VsZFN5bmNocm9uaXplID0gdHJ1ZTsKLSAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR0FuaW1hdGVkTGVuZ3RoLCBTVkdMZW5ndGg+
KHRoaXMsIFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0ciwgU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRy
LmxvY2FsTmFtZSgpLCBtX3RleHRMZW5ndGgudmFsdWUpOworICAgIHJldHVybiBzdGF0aWNfcG9p
bnRlcl9jYXN0PFNWR0FuaW1hdGVkTGVuZ3RoPihsb29rdXBPckNyZWF0ZVRleHRMZW5ndGhXcmFw
cGVyKHRoaXMpKTsKKwogfQogCiB1bnNpZ25lZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmdldE51
bWJlck9mQ2hhcnMoKSBjb25zdApAQCAtMjM2LDQ1ICsyNzAsNiBAQCB2b2lkIFNWR1RleHRDb250
ZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgp
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplTGVuZ3RoQWRqdXN0KCk7Ci0gICAgICAgIHN5bmNocm9u
aXplVGV4dExlbmd0aCgpOwotICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQoKTsKLSAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBh
dHRyTmFtZSk7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHko
YXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIpIHsKLSAgICAgICAgc3lu
Y2hyb25pemVMZW5ndGhBZGp1c3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dGV4dExlbmd0aEF0dHIpIHsKLSAgICAgICAgc3luY2hy
b25pemVUZXh0TGVuZ3RoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsK
LSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7Ci0gICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywg
YXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci19Ci0KIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlmICghaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CkBAIC0yOTQsMTQgKzI4OSw2IEBAIHZvaWQgU1ZHVGV4
dENvbnRlbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGUKICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6
Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlcik7CiB9
CiAKLXZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKQotewotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0KLSAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyLCBBbmlt
YXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjpsZW5ndGhBZGp1c3RBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKLX0KLQogYm9vbCBTVkdU
ZXh0Q29udGVudEVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdAogewogICAg
IC8vIEFueSBlbGVtZW50IG9mIHRoZSA8dGV4dD4gc3VidHJlZSBpcyBhZHZlcnRpemVkIGFzIHVz
aW5nIHJlbGF0aXZlIGxlbmd0aHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENv
bnRlbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRD
b250ZW50RWxlbWVudC5oCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUZXh0Q29udGVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTUsNiArOTUsNyBAQCBw
dWJsaWM6CiAgICAgLy8gYXMgaXRzIGdldHRlciBuZWVkcyBzcGVjaWFsIGhhbmRsaW5nIChyZXR1
cm4gZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCksIGluc3RlYWQgb2YgbV90ZXh0TGVuZ3RoKS4KICAg
ICBTVkdMZW5ndGgmIHNwZWNpZmllZFRleHRMZW5ndGgoKSB7IHJldHVybiBtX3NwZWNpZmllZFRl
eHRMZW5ndGg7IH0KICAgICBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkTGVuZ3RoPiB0ZXh0TGVuZ3Ro
QW5pbWF0ZWQoKTsKKyAgICBzdGF0aWMgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiB0ZXh0TGVuZ3Ro
UHJvcGVydHlJbmZvKCk7CiAKIHByb3RlY3RlZDoKICAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CkBAIC0xMDQsOCArMTA1LDYgQEAgcHJv
dGVjdGVkOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwotICAgIHZvaWQgZmlsbFBhc3NlZEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJik7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1Jl
bGF0aXZlTGVuZ3RocygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQo
Ym9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9k
ZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CkBAIC0xMTMsMTQg
KzExMiwyMSBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRD
b250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVjbGFyYXRpb25zCi0gICAgdm9pZCBzeW5jaHJvbml6ZVRleHRMZW5ndGgoKTsKLSAgICBT
VkdMZW5ndGggbV9zcGVjaWZpZWRUZXh0TGVuZ3RoOworICAgIC8vIEN1c3RvbSAndGV4dExlbmd0
aCcgcHJvcGVydHkKKyAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZVRleHRMZW5ndGgodm9pZCog
Y29udGV4dEVsZW1lbnQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVy
dHk+IGxvb2t1cE9yQ3JlYXRlVGV4dExlbmd0aFdyYXBwZXIodm9pZCogY29udGV4dEVsZW1lbnQp
OwogICAgIG11dGFibGUgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5PFNWR0xlbmd0
aD4gbV90ZXh0TGVuZ3RoOwotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oTGVuZ3Ro
QWRqdXN0LCBsZW5ndGhBZGp1c3QsIFNWR0xlbmd0aEFkanVzdFR5cGUpCi0KLSAgICAvLyBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpIAorICAg
IFNWR0xlbmd0aCBtX3NwZWNpZmllZFRleHRMZW5ndGg7CisgIAorICAgIEJFR0lOX0RFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0Q29udGVudEVsZW1lbnQpCisgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfRU5VTUVSQVRJT04oTGVuZ3RoQWRqdXN0LCBsZW5ndGhBZGp1c3QsIFNWR0xl
bmd0aEFkanVzdFR5cGUpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKSAKKyAgICBFTkRf
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cworICAgIHZpcnR1
YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25p
emVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0
ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1
YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICszOCwxNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwogREVGSU5FX0FOSU1B
VEVEX1RSQU5TRk9STV9MSVNUKFNWR1RleHRFbGVtZW50LCBTVkdOYW1lczo6dHJhbnNmb3JtQXR0
ciwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCiAKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHVGV4dEVsZW1lbnQpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkodHJhbnNmb3JtKQorICAgIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQpCitFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElF
UworCiBpbmxpbmUgU1ZHVGV4dEVsZW1lbnQ6OlNWR1RleHRFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50KHRhZ05hbWUsIGRvYykKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6
dGV4dFRhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVGV4dEVsZW1l
bnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdUZXh0RWxlbWVudD4gU1ZHVGV4dEVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBA
IC0xNjAsNDEgKzE2Niw2IEBAIHZvaWQgU1ZHVGV4dEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdUZXh0RWxlbWVudDo6
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAg
ICBpZiAoYXR0ck5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVRyYW5z
Zm9ybSgpOwotICAgICAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR1RleHRQb3NpdGlvbmlu
Z0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplVHJhbnNmb3JtKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIFNWR1RleHRFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwOwotfQotCi12b2lkIFNWR1RleHRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7Ci0KLSAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dHJhbnNmb3JtQXR0ciwgQW5pbWF0
ZWRUcmFuc2Zvcm1MaXN0KTsKLX0KLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxMiAr
NTYsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5k
ZXJlcihOb2RlKikgY29uc3Q7CiAgICAgICAgICAgICAKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5
bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCi0gICAg
Ly8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9U
UkFOU0ZPUk1fTElTVChUcmFuc2Zvcm0sIHRyYW5zZm9ybSkKKyAgICBCRUdJTl9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMoU1ZHVGV4dEVsZW1lbnQpCisgICAgICAgIERFQ0xBUkVfQU5JTUFU
RURfVFJBTlNGT1JNX0xJU1QoVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCisgICAgRU5EX0RFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVElFUwogCiAgICAgLy8gVXNlZCBieSA8YW5pbWF0ZU1vdGlvbj4KICAg
ICBPd25QdHI8QWZmaW5lVHJhbnNmb3JtPiBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDY2
NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw2ICszNywxNCBAQCBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZH
VGV4dFBhdGhFCiBERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHVGV4dFBhdGhFbGVtZW50
LCBTVkdOYW1lczo6c3BhY2luZ0F0dHIsIFNwYWNpbmcsIHNwYWNpbmcsIFNWR1RleHRQYXRoU3Bh
Y2luZ1R5cGUpCiBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR1RleHRQYXRoRWxlbWVudCwgWExp
bmtOYW1lczo6aHJlZkF0dHIsIEhyZWYsIGhyZWYpCiAKK0JFR0lOX1JFR0lTVEVSX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHVGV4dFBhdGhFbGVtZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1B
VEVEX1BST1BFUlRZKHN0YXJ0T2Zmc2V0KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BS
T1BFUlRZKG1ldGhvZCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShzcGFj
aW5nKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKGhyZWYpCisgICAgUkVH
SVNURVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGV4dENvbnRlbnRFbGVtZW50KQor
RU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKKwogaW5saW5lIFNWR1RleHRQYXRoRWxl
bWVudDo6U1ZHVGV4dFBhdGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1RleHRDb250ZW50RWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKICAgICAsIG1fc3RhcnRPZmZzZXQoTGVuZ3RoTW9kZU90aGVyKQpAQCAtNDQsNiAr
NTIsNyBAQCBpbmxpbmUgU1ZHVGV4dFBhdGhFbGVtZW50OjpTVkdUZXh0UGF0aEVsCiAgICAgLCBt
X3NwYWNpbmcoU1ZHVGV4dFBhdGhTcGFjaW5nRXhhY3QpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05h
bWUoU1ZHTmFtZXM6OnRleHRQYXRoVGFnKSk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRp
ZXNGb3JTVkdUZXh0UGF0aEVsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdUZXh0UGF0aEVs
ZW1lbnQ+IFNWR1RleHRQYXRoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTExMiw2MiArMTIxLDYgQEAgdm9pZCBTVkdU
ZXh0UGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYQogICAgICAgICBSZW5kZXJTVkdSZXNvdXJj
ZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKG9iamVjdCk7CiB9
CiAKLXZvaWQgU1ZHVGV4dFBhdGhFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgp
KSB7Ci0gICAgICAgIHN5bmNocm9uaXplU3RhcnRPZmZzZXQoKTsKLSAgICAgICAgc3luY2hyb25p
emVNZXRob2QoKTsKLSAgICAgICAgc3luY2hyb25pemVTcGFjaW5nKCk7Ci0gICAgICAgIHN5bmNo
cm9uaXplSHJlZigpOwotICAgICAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN5bmNocm9uaXpl
UHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFp
c1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGV4dENvbnRlbnRF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyKSB7
Ci0gICAgICAgIHN5bmNocm9uaXplU3RhcnRPZmZzZXQoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICAKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1ldGhvZEF0dHIpIHsKLSAg
ICAgICAgc3luY2hyb25pemVNZXRob2QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAK
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwYWNpbmdBdHRyKSB7Ci0gICAgICAgIHN5
bmNocm9uaXplU3BhY2luZygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGlm
IChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci19Ci0KLUF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdUZXh0
UGF0aEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXA7Ci19Ci0KLXZvaWQgU1ZHVGV4dFBhdGhFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0K
LSAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpzdGFydE9mZnNldEF0dHIsIEFuaW1hdGVkTGVuZ3Ro
KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om1ldGhvZEF0
dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6c3BhY2luZ0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwotICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0
ZWRTdHJpbmcpOwotfQotCiBSZW5kZXJPYmplY3QqIFNWR1RleHRQYXRoRWxlbWVudDo6Y3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJu
IG5ldyAoYXJlbmEpIFJlbmRlclNWR1RleHRQYXRoKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDQ4ICsz
OSw2IEBAIGVudW0gU1ZHVGV4dFBhdGhTcGFjaW5nVHlwZSB7CiAgICAgU1ZHVGV4dFBhdGhTcGFj
aW5nRXhhY3QKIH07CiAKLWNsYXNzIFNWR1RleHRQYXRoRWxlbWVudCA6IHB1YmxpYyBTVkdUZXh0
Q29udGVudEVsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVVJJ
UmVmZXJlbmNlIHsKLXB1YmxpYzoKLSAgICAvLyBGb3J3YXJkIGRlY2xhcmUgZW51bWVyYXRpb25z
IGluIHRoZSBXM0MgbmFtaW5nIHNjaGVtZSwgZm9yIElETCBnZW5lcmF0aW9uLgotICAgIGVudW0g
ewotICAgICAgICBURVhUUEFUSF9NRVRIT0RUWVBFX1VOS05PV04gPSBTVkdUZXh0UGF0aE1ldGhv
ZFVua25vd24sCi0gICAgICAgIFRFWFRQQVRIX01FVEhPRFRZUEVfQUxJR04gPSBTVkdUZXh0UGF0
aE1ldGhvZEFsaWduLAotICAgICAgICBURVhUUEFUSF9NRVRIT0RUWVBFX1NUUkVUQ0ggPSBTVkdU
ZXh0UGF0aE1ldGhvZFN0cmV0Y2gsCi0gICAgICAgIFRFWFRQQVRIX1NQQUNJTkdUWVBFX1VOS05P
V04gPSBTVkdUZXh0UGF0aFNwYWNpbmdVbmtub3duLAotICAgICAgICBURVhUUEFUSF9TUEFDSU5H
VFlQRV9BVVRPID0gU1ZHVGV4dFBhdGhTcGFjaW5nQXV0bywKLSAgICAgICAgVEVYVFBBVEhfU1BB
Q0lOR1RZUEVfRVhBQ1QgPSBTVkdUZXh0UGF0aFNwYWNpbmdFeGFjdAotICAgIH07Ci0KLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTVkdUZXh0UGF0aEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAKLXByaXZhdGU6Ci0gICAgU1ZHVGV4dFBhdGhFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotCi0gICAgdmlydHVhbCB2b2lkIGlu
c2VydGVkSW50b0RvY3VtZW50KCk7Ci0KLSAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKik7Ci0gICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7Ci0gICAgdmly
dHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OwotICAgIHZp
cnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7
Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwotCi0g
ICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRF
RF9MRU5HVEgoU3RhcnRPZmZzZXQsIHN0YXJ0T2Zmc2V0KQotICAgIERFQ0xBUkVfQU5JTUFURURf
RU5VTUVSQVRJT04oTWV0aG9kLCBtZXRob2QsIFNWR1RleHRQYXRoTWV0aG9kVHlwZSkKLSAgICBE
RUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNwYWNpbmcsIHNwYWNpbmcsIFNWR1RleHRQYXRo
U3BhY2luZ1R5cGUpCi0KLSAgICAvLyBTVkdVUklSZWZlcmVuY2UKLSAgICBERUNMQVJFX0FOSU1B
VEVEX1NUUklORyhIcmVmLCBocmVmKQotfTsKLQogdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3Bl
cnR5VHJhaXRzPFNWR1RleHRQYXRoTWV0aG9kVHlwZT4gewogICAgIHN0YXRpYyBTVkdUZXh0UGF0
aE1ldGhvZFR5cGUgaGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJuIFNWR1RleHRQYXRoTWV0aG9k
U3RyZXRjaDsgfQpAQCAtMTM5LDYgKzk3LDQ0IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxT
VkdUZXh0UGF0aFNwYWMKICAgICB9CiB9OwogCitjbGFzcyBTVkdUZXh0UGF0aEVsZW1lbnQgOiBw
dWJsaWMgU1ZHVGV4dENvbnRlbnRFbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIFNWR1VSSVJlZmVyZW5jZSB7CitwdWJsaWM6CisgICAgLy8gRm9yd2FyZCBkZWNsYXJl
IGVudW1lcmF0aW9ucyBpbiB0aGUgVzNDIG5hbWluZyBzY2hlbWUsIGZvciBJREwgZ2VuZXJhdGlv
bi4KKyAgICBlbnVtIHsKKyAgICAgICAgVEVYVFBBVEhfTUVUSE9EVFlQRV9VTktOT1dOID0gU1ZH
VGV4dFBhdGhNZXRob2RVbmtub3duLAorICAgICAgICBURVhUUEFUSF9NRVRIT0RUWVBFX0FMSUdO
ID0gU1ZHVGV4dFBhdGhNZXRob2RBbGlnbiwKKyAgICAgICAgVEVYVFBBVEhfTUVUSE9EVFlQRV9T
VFJFVENIID0gU1ZHVGV4dFBhdGhNZXRob2RTdHJldGNoLAorICAgICAgICBURVhUUEFUSF9TUEFD
SU5HVFlQRV9VTktOT1dOID0gU1ZHVGV4dFBhdGhTcGFjaW5nVW5rbm93biwKKyAgICAgICAgVEVY
VFBBVEhfU1BBQ0lOR1RZUEVfQVVUTyA9IFNWR1RleHRQYXRoU3BhY2luZ0F1dG8sCisgICAgICAg
IFRFWFRQQVRIX1NQQUNJTkdUWVBFX0VYQUNUID0gU1ZHVGV4dFBhdGhTcGFjaW5nRXhhY3QKKyAg
ICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHVGV4dFBhdGhFbGVtZW50PiBjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisgCitwcml2YXRlOgorICAgIFNWR1Rl
eHRQYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKworICAgIHZp
cnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOworCisgICAgYm9vbCBpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOworICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKworICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmly
dHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7
CisKKyAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OworIAor
ICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0UGF0aEVsZW1lbnQp
CisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNl
dCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihNZXRob2QsIG1ldGhvZCwg
U1ZHVGV4dFBhdGhNZXRob2RUeXBlKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFU
SU9OKFNwYWNpbmcsIHNwYWNpbmcsIFNWR1RleHRQYXRoU3BhY2luZ1R5cGUpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfU1RSSU5HKEhyZWYsIGhyZWYpCisgICAgRU5EX0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVElFUworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0
aW9uaW5nRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0
MCwxOSBAQCBERUZJTkVfQU5JTUFURURfTEVOR1RIX0xJU1QoU1ZHVGV4dFBvc2l0CiBERUZJTkVf
QU5JTUFURURfTEVOR1RIX0xJU1QoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTmFtZXM6
OmR5QXR0ciwgRHksIGR5KQogREVGSU5FX0FOSU1BVEVEX05VTUJFUl9MSVNUKFNWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQsIFNWR05hbWVzOjpyb3RhdGVBdHRyLCBSb3RhdGUsIHJvdGF0ZSkKIAor
QkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0UG9zaXRpb25pbmdFbGVt
ZW50KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHgpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoeSkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRF
RF9QUk9QRVJUWShkeCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShkeSkK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShyb3RhdGUpCisgICAgUkVHSVNU
RVJfUEFSRU5UX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVGV4dENvbnRlbnRFbGVtZW50KQorRU5E
X1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKKwogU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVu
dDo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdUZXh0Q29udGVudEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpCiB7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50KCk7CiB9CiAKIGJvb2wgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVu
dDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBA
IC0xMzksNjIgKzE0OSw2IEBAIHZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6c3ZnQXR0
cmkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQotewotICAgIGlmIChhdHRyTmFtZSA9PSBhbnlRTmFtZSgpKSB7Ci0gICAgICAgIHN5bmNo
cm9uaXplWCgpOwotICAgICAgICBzeW5jaHJvbml6ZVkoKTsKLSAgICAgICAgc3luY2hyb25pemVE
eCgpOwotICAgICAgICBzeW5jaHJvbml6ZUR5KCk7Ci0gICAgICAgIHN5bmNocm9uaXplUm90YXRl
KCk7Ci0gICAgICAgIFNWR1RleHRDb250ZW50RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShh
dHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVk
QXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN5
bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6
ZVgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6eUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmR4QXR0cikgewotICAgICAg
ICBzeW5jaHJvbml6ZUR4KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmR5QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZUR5KCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJv
dGF0ZUF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVSb3RhdGUoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFNWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApCi17
Ci0gICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpmaWxsUGFzc2VkQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOwotCi0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGhMaXN0KTsK
LSAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmlt
YXRlZExlbmd0aExpc3QpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6ZHhBdHRyLCBBbmltYXRlZExlbmd0aExpc3QpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZHlBdHRyLCBBbmltYXRlZExlbmd0aExpc3QpOwotICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cm90YXRlQXR0ciwgQW5p
bWF0ZWROdW1iZXJMaXN0KTsKLX0KLQogU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCogU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudDo6ZWxlbWVudEZyb21SZW5kZXJlcihSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKQogewogICAgIGlmICghcmVuZGVyZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgJKHJldmlzaW9uIDkwNjY2KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzgsMTUgKzM4LDE0IEBAIHByb3RlY3RlZDoKICAgICBib29sIGlzU3VwcG9ydGVkQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2b2lkIGZpbGxQYXNzZWRBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYpOwogCi0g
ICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRF
RF9MRU5HVEhfTElTVChYLCB4KQotICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIX0xJU1QoWSwg
eSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSF9MSVNUKER4LCBkeCkKLSAgICBERUNMQVJF
X0FOSU1BVEVEX0xFTkdUSF9MSVNUKER5LCBkeSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJF
Ul9MSVNUKFJvdGF0ZSwgcm90YXRlKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X0xFTkdUSF9MSVNUKFgsIHgpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIX0xJU1Qo
WSwgeSkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEhfTElTVChEeCwgZHgpCisgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIX0xJU1QoRHksIGR5KQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX05VTUJFUl9MSVNUKFJvdGF0ZSwgcm90YXRlKQorICAgIEVORF9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDY2NikKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MCwxOCArNjAsNiBAQCB2b2lkIFNWR1RpdGxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvCiAg
ICAgICAgIGRvY3VtZW50KCktPnNldFRpdGxlRWxlbWVudChTdHJpbmdXaXRoRGlyZWN0aW9uKHRl
eHRDb250ZW50KCksIExUUiksIHRoaXMpOwogfQogCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgU1ZHVGl0bGVFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwotICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwOwogfQogCi12b2lkIFNWR1RpdGxlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCkKLXsgICAgICAgIAotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxQYXNz
ZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
KTsKLX0KLQotfQotCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmgJKHJldmlzaW9uIDkwNjY2KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MCw5ICs0MCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChi
b29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2Rl
KiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIHZpcnR1
YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyBy
ZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkocmV2aXNpb24gOTA2NjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYzLDYgKzYzLDE3IEBAIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHVXNlRWxlbWVudCwgU1YK
IERFRklORV9BTklNQVRFRF9TVFJJTkcoU1ZHVXNlRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0
dHIsIEhyZWYsIGhyZWYpCiBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdVc2VFbGVtZW50LCBT
VkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAKK0JFR0lOX1JFR0lTVEVSX0FO
SU1BVEVEX1BST1BFUlRJRVMoU1ZHVXNlRWxlbWVudCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklN
QVRFRF9QUk9QRVJUWSh4KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHkp
CisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkod2lkdGgpCisgICAgUkVHSVNU
RVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkoaGVpZ2h0KQorICAgIFJFR0lTVEVSX0xPQ0FMX0FO
SU1BVEVEX1BST1BFUlRZKGhyZWYpCisgICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVS
VFkoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCkKKyAgICBSRUdJU1RF
Ul9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXN0cykKK0VORF9SRUdJU1RFUl9BTklN
QVRFRF9QUk9QRVJUSUVTCisKIGlubGluZSBTVkdVc2VFbGVtZW50OjpTVkdVc2VFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV94
KExlbmd0aE1vZGVXaWR0aCkKQEAgLTczLDYgKzg0LDcgQEAgaW5saW5lIFNWR1VzZUVsZW1lbnQ6
OlNWR1VzZUVsZW1lbnQoY29ucwogICAgICwgbV9uZWVkc1NoYWRvd1RyZWVSZWNyZWF0aW9uKGZh
bHNlKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjp1c2VUYWcpKTsKKyAgICBy
ZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1VzZUVsZW1lbnQoKTsKIH0KIAogUGFzc1Jl
ZlB0cjxTVkdVc2VFbGVtZW50PiBTVkdVc2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMjQzLDgxICsyNTUsNiBAQCB2
b2lkIFNWR1VzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHVXNlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBpZiAoYXR0ck5hbWUgPT0gYW55
UU5hbWUoKSkgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgc3luY2hyb25pemVZ
KCk7Ci0gICAgICAgIHN5bmNocm9uaXplV2lkdGgoKTsKLSAgICAgICAgc3luY2hyb25pemVIZWln
aHQoKTsKLSAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0g
ICAgICAgIHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQ
cm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJs
ZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAg
ICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHko
YXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjp4QXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVgoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAg
ICAgICAgc3luY2hyb25pemVZKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgewotICAgICAgICBzeW5jaHJvbml6ZVdp
ZHRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmhlaWdodEF0dHIpIHsKLSAgICAgICAgc3luY2hyb25pemVIZWlnaHQoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBzeW5jaHJvbml6ZUV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAg
IHN5bmNocm9uaXplSHJlZigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNW
R1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXN0czo6
c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgU1ZHVXNlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQot
ewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNf
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKLSAgICByZXR1cm4gc19hdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcDsKLX0KLQotdm9pZCBTVkdVc2VFbGVtZW50OjpmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKQotewotICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7Ci0KLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbFBhc3NlZEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKLSAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRl
ZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5
QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwotICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Ci0gICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0aCk7
Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRy
LCBBbmltYXRlZFN0cmluZyk7Ci19Ci0KIHN0YXRpYyB2b2lkIHVwZGF0ZUNvbnRhaW5lclNpemUo
U1ZHRWxlbWVudEluc3RhbmNlKiB0YXJnZXRJbnN0YW5jZSkKIHsKICAgICAvLyBEZXB0aC1maXJz
dCB1c2VkIHRvIHdyaXRlIHRoZSBtZXRob2QgaW4gZWFybHkgZXhpdCBzdHlsZSwgbm8gcGFydGlj
dWxhciBvdGhlciByZWFzb24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgJKHJl
dmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNjMsOSArNjMsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmly
dHVhbCB2b2lkIHJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlID0gTm9DaGFuZ2UpOwogICAgIHZpcnR1
YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxl
Kik7CkBAIC0xMDYsMTcgKzEwMywxOSBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlQ29udGFp
bmVyT2Zmc2V0cygpOwogICAgIHZvaWQgdXBkYXRlQ29udGFpbmVyU2l6ZXMoKTsKIAotICAgIC8v
IEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfTEVO
R1RIKFgsIHgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKLSAgICBERUNMQVJF
X0FOSU1BVEVEX0xFTkdUSChXaWR0aCwgd2lkdGgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoSGVpZ2h0LCBoZWlnaHQpCi0KLSAgICAvLyBTVkdVUklSZWZlcmVuY2UKLSAgICBERUNMQVJF
X0FOSU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorICAgIEJFR0lOX0RFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdVc2VFbGVtZW50KQorICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX0xFTkdUSChYLCB4KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQor
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwgd2lkdGgpCisgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX1NUUklORyhIcmVmLCBocmVmKQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xF
QU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkK
KyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCisKKyAgICAvLyBTVkdUZXN0cwor
ICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSB7IFNWR1Rlc3Rz
OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJl
cXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5
c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlz
KTsgfQogCiAgICAgYm9vbCBtX3VwZGF0ZXNCbG9ja2VkOwogICAgIGJvb2wgbV9uZWVkc1NoYWRv
d1RyZWVSZWNyZWF0aW9uOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3Bw
CShyZXZpc2lvbiA5MDY2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDExICszNiwxOSBAQCBERUZJTkVfQU5JTUFURURfQk9P
TEVBTihTVkdWaWV3RWxlbWVudCwgCiBERUZJTkVfQU5JTUFURURfUkVDVChTVkdWaWV3RWxlbWVu
dCwgU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBWaWV3Qm94LCB2aWV3Qm94KQogREVGSU5FX0FOSU1B
VEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oU1ZHVmlld0VsZW1lbnQsIFNWR05hbWVzOjpwcmVzZXJ2
ZUFzcGVjdFJhdGlvQXR0ciwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRp
bykKIAorQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUyhTVkdWaWV3RWxlbWVudCkK
KyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9QRVJUWShleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorICAgIFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKHZpZXdCb3gpCisg
ICAgUkVHSVNURVJfTE9DQUxfQU5JTUFURURfUFJPUEVSVFkocHJlc2VydmVBc3BlY3RSYXRpbykK
KyAgICBSRUdJU1RFUl9QQVJFTlRfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdHlsZWRFbGVtZW50
KQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKKwogaW5saW5lIFNWR1ZpZXdFbGVt
ZW50OjpTVkdWaWV3RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQog
ICAgICwgbV92aWV3VGFyZ2V0KFNWR05hbWVzOjp2aWV3VGFyZ2V0QXR0cikKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShTVkdOYW1lczo6dmlld1RhZykpOworICAgIHJlZ2lzdGVyQW5pbWF0ZWRQ
cm9wZXJ0aWVzRm9yU1ZHVmlld0VsZW1lbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdWaWV3RWxl
bWVudD4gU1ZHVmlld0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC04Miw1MSArOTAsNiBAQCB2b2lkIFNWR1ZpZXdFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXZvaWQgU1ZHVmlld0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgaWYgKGF0dHJOYW1lID09IGFueVFOYW1lKCkpIHsKLSAg
ICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7Ci0gICAgICAgIFNW
R0ZpdFRvVmlld0JveDo6c3luY2hyb25pemVQcm9wZXJ0aWVzKGF0dHJOYW1lKTsKLSAgICAgICAg
U1ZHU3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1l
KSkgewotICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJO
YW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6dmlld1RhcmdldEF0dHIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAg
ICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChTVkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpdFRvVmlld0JveDo6c3luY2hyb25pemVQcm9wZXJ0
aWVzKGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotfQotCi1BdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHVmlld0VsZW1l
bnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLCAoKSk7Ci0gICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Ci19Ci0K
LXZvaWQgU1ZHVmlld0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCi17
Ci0gICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLQotICAgIFNWR1N0eWxl
ZEVsZW1lbnQ6OmZpbGxQYXNzZWRBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCk7Ci0gICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjp2aWV3Qm94QXR0ciwgQW5pbWF0ZWRSZWN0KTsKLSAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBBbmltYXRl
ZFByZXNlcnZlQXNwZWN0UmF0aW8pOwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgJKHJldmlzaW9uIDkwNjY2KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDIwICs0OCwxNCBAQCBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
IG1pc3NpbmcuCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSop
OwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0
IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIC8vIEFuaW1h
dGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwotCi0gICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZAotICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotIAotICAgIC8vIFNWR0ZpdFRvVmll
d0JveAotICAgIERFQ0xBUkVfQU5JTUFURURfUkVDVChWaWV3Qm94LCB2aWV3Qm94KQotICAgIERF
Q0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBw
cmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElF
UyhTVkdWaWV3RWxlbWVudCkKKyAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfUkVDVChWaWV3Qm94LCB2aWV3Qm94KQorICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2Vy
dmVBc3BlY3RSYXRpbykKKyAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAg
ICBTVkdTdHJpbmdMaXN0IG1fdmlld1RhcmdldDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVmlld1NwZWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdW
aWV3U3BlYy5jcHAJKHJldmlzaW9uIDkwNjY2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Zp
ZXdTcGVjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsMTYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogREVGSU5FX0FOSU1BVEVEX1JFQ1QoU1ZHVmlld1NwZWMsIFNWR05hbWVzOjp2aWV3
Qm94QXR0ciwgVmlld0JveCwgdmlld0JveCkKIERFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVD
VFJBVElPKFNWR1ZpZXdTcGVjLCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFBy
ZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCiAKK0JFR0lOX1JFR0lTVEVS
X0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVmlld1NwZWMpCisgICAgUkVHSVNURVJfTE9DQUxfQU5J
TUFURURfUFJPUEVSVFkodmlld0JveCkKKyAgICBSRUdJU1RFUl9MT0NBTF9BTklNQVRFRF9QUk9Q
RVJUWShwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJ
RVMKKwogU1ZHVmlld1NwZWM6OlNWR1ZpZXdTcGVjKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50
KQogICAgIDogbV9jb250ZXh0RWxlbWVudChjb250ZXh0RWxlbWVudCkKIHsKKyAgICBBU1NFUlQo
bV9jb250ZXh0RWxlbWVudCk7CisgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdW
aWV3U3BlYygpOwogfQogCiB2b2lkIFNWR1ZpZXdTcGVjOjpzZXRUcmFuc2Zvcm0oY29uc3QgU3Ry
aW5nJiB0cmFuc2Zvcm0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuaAkocmV2aXNpb24g
OTA2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuaAkod29ya2luZyBjb3B5
KQpAQCAtNTAsMTYgKzUwLDEzIEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdmlld1RhcmdldFN0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1RhcmdldFN0cmluZzsgfQogICAgIFNWR0VsZW1lbnQq
IHZpZXdUYXJnZXQoKSBjb25zdDsKIAotICAgIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxTVkdFbGVtZW50Kj4obV9jb250ZXh0RWxlbWVudCk7
IH0KLQogcHJpdmF0ZToKICAgICBTVkdFbGVtZW50KiBtX2NvbnRleHRFbGVtZW50OwogCi0gICAg
Ly8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCi0KLSAgICAvLyBTVkdGaXRUb1ZpZXdC
b3gKLSAgICBERUNMQVJFX0FOSU1BVEVEX1JFQ1QoVmlld0JveCwgdmlld0JveCkKLSAgICBERUNM
QVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oUHJlc2VydmVBc3BlY3RSYXRpbywgcHJl
c2VydmVBc3BlY3RSYXRpbykKKyAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMo
U1ZHVmlld1NwZWMpCisgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUkVDVChWaWV3Qm94LCB2aWV3
Qm94KQorICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BSRVNFUlZFQVNQRUNUUkFUSU8oUHJlc2Vy
dmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKKyAgICBFTkRfREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUSUVTCiAKICAgICBTVkdUcmFuc2Zvcm1MaXN0IG1fdHJhbnNmb3JtOwogICAg
IFN0cmluZyBtX3ZpZXdUYXJnZXRTdHJpbmc7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCShyZXZpc2lvbiA5MDY2NikK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuaAko
d29ya2luZyBjb3B5KQpAQCAtMjEsMTUgKzIxLDE0IEBACiAjZGVmaW5lIFNWR0FuaW1hdGVkUHJv
cGVydHlfaAogCiAjaWYgRU5BQkxFKFNWRykKLSNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiU1ZH
RWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR1Byb3BlcnR5SW5mby5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHRWxlbWVudDsK
LWNsYXNzIFNWR1Byb3BlcnR5OwogCiBjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5IDogcHVibGlj
IFJlZkNvdW50ZWQ8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gewogcHVibGljOgpAQCAtNjEsMjMgKzYw
LDQ0IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFRlYXJPZmZUeXBlLCB0eXBlbmFtZSBQcm9wZXJ0eVR5cGUsIGJvb2wgaXNEZXJpdmVkRnJvbVNW
R0VsZW1lbnQ+CisgICAgc3RydWN0IEhlbHBlcjsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRl
YXJPZmZUeXBlLCB0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
VGVhck9mZlR5cGU+IGxvb2t1cE9yQ3JlYXRlV3JhcHBlcihTVkdFbGVtZW50KiBlbGVtZW50LCBj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0
dHJpYnV0ZUlkZW50aWZpZXIsIFByb3BlcnR5VHlwZSYgcHJvcGVydHkpCi0gICAgewotICAgICAg
ICBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24ga2V5KGVsZW1lbnQsIGF0dHJpYnV0ZUlk
ZW50aWZpZXIpOwotICAgICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gd3JhcHBlciA9
IGFuaW1hdGVkUHJvcGVydHlDYWNoZSgpLT5nZXQoa2V5KTsKLSAgICAgICAgaWYgKCF3cmFwcGVy
KSB7Ci0gICAgICAgICAgICB3cmFwcGVyID0gVGVhck9mZlR5cGU6OmNyZWF0ZShlbGVtZW50LCBh
dHRyaWJ1dGVOYW1lLCBwcm9wZXJ0eSk7Ci0gICAgICAgICAgICBhbmltYXRlZFByb3BlcnR5Q2Fj
aGUoKS0+c2V0KGtleSwgd3JhcHBlcik7CisgICAgc3RydWN0IEhlbHBlcjxUZWFyT2ZmVHlwZSwg
UHJvcGVydHlUeXBlLCBmYWxzZT4geworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZWFyT2Zm
VHlwZT4gbG9va3VwT3JDcmVhdGVXcmFwcGVyKHZvaWQqLCBjb25zdCBTVkdQcm9wZXJ0eUluZm8q
LCBQcm9wZXJ0eVR5cGUmKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPFRlYXJPZmZUeXBlPigpOwogICAg
ICAgICB9CisgICAgfTsKIAotICAgICAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxUZWFy
T2ZmVHlwZT4od3JhcHBlcikucmVsZWFzZSgpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRlYXJP
ZmZUeXBlLCB0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+CisgICAgc3RydWN0IEhlbHBlcjxUZWFyT2Zm
VHlwZSwgUHJvcGVydHlUeXBlLCB0cnVlPiB7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRl
YXJPZmZUeXBlPiBsb29rdXBPckNyZWF0ZVdyYXBwZXIoU1ZHRWxlbWVudCogZWxlbWVudCwgY29u
c3QgU1ZHUHJvcGVydHlJbmZvKiBpbmZvLCBQcm9wZXJ0eVR5cGUmIHByb3BlcnR5KQorICAgICAg
ICB7CisgICAgICAgICAgICBBU1NFUlQoaW5mbyk7CisgICAgICAgICAgICBTVkdBbmltYXRlZFBy
b3BlcnR5RGVzY3JpcHRpb24ga2V5KGVsZW1lbnQsIGluZm8tPnByb3BlcnR5SWRlbnRpZmllcik7
CisgICAgICAgICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gd3JhcHBlciA9IGFuaW1h
dGVkUHJvcGVydHlDYWNoZSgpLT5nZXQoa2V5KTsKKyAgICAgICAgICAgIGlmICghd3JhcHBlcikg
eworICAgICAgICAgICAgICAgIHdyYXBwZXIgPSBUZWFyT2ZmVHlwZTo6Y3JlYXRlKGVsZW1lbnQs
IGluZm8tPmF0dHJpYnV0ZU5hbWUsIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBhbmltYXRl
ZFByb3BlcnR5Q2FjaGUoKS0+c2V0KGtleSwgd3JhcHBlcik7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxUZWFyT2ZmVHlwZT4od3JhcHBlciku
cmVsZWFzZSgpOworICAgICAgICB9CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93
bmVyVHlwZSwgdHlwZW5hbWUgVGVhck9mZlR5cGUsIHR5cGVuYW1lIFByb3BlcnR5VHlwZSwgYm9v
bCBpc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudD4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZWFyT2Zm
VHlwZT4gbG9va3VwT3JDcmVhdGVXcmFwcGVyKE93bmVyVHlwZSogZWxlbWVudCwgY29uc3QgU1ZH
UHJvcGVydHlJbmZvKiBpbmZvLCBQcm9wZXJ0eVR5cGUmIHByb3BlcnR5KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEhlbHBlcjxUZWFyT2ZmVHlwZSwgUHJvcGVydHlUeXBlLCBpc0Rlcml2ZWRGcm9t
U1ZHRWxlbWVudD46Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcihlbGVtZW50LCBpbmZvLCBwcm9wZXJ0
eSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVGVhck9mZlR5cGU+Ci0gICAgc3Rh
dGljIFRlYXJPZmZUeXBlKiBsb29rdXBXcmFwcGVyKFNWR0VsZW1lbnQqIGVsZW1lbnQsIGNvbnN0
IEF0b21pY1N0cmluZyYgYXR0cmlidXRlSWRlbnRpZmllcikKKyAgICBzdGF0aWMgVGVhck9mZlR5
cGUqIGxvb2t1cFdyYXBwZXIoU1ZHRWxlbWVudCogZWxlbWVudCwgY29uc3QgU1ZHUHJvcGVydHlJ
bmZvKiBpbmZvKQogICAgIHsKLSAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9u
IGtleShlbGVtZW50LCBhdHRyaWJ1dGVJZGVudGlmaWVyKTsKKyAgICAgICAgQVNTRVJUKGluZm8p
OworICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24ga2V5KGVsZW1lbnQsIGlu
Zm8tPnByb3BlcnR5SWRlbnRpZmllcik7CiAgICAgICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9j
YXN0PFRlYXJPZmZUeXBlPihhbmltYXRlZFByb3BlcnR5Q2FjaGUoKS0+Z2V0KGtleSkpLmdldCgp
OwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWRQcm9wZXJ0eU1hY3Jvcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlNYWNyb3MuaAkocmV2aXNpb24gOTA2NjYpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+Ci0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkIDIwMTAtMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtMjMsMzkgKzIzLDI0IEBACiAjZGVmaW5lIFNWR0FuaW1hdGVkUHJvcGVydHlNYWNyb3Nf
aAogCiAjaWYgRU5BQkxFKFNWRykKLSNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5U3luY2hy
b25pemVyLmgiCisjaW5jbHVkZSAiU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oIgogI2luY2x1
ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEdldE93bmVyRWxlbWVudEZvclR5cGUgaW1wbGVt
ZW50YXRpb24KLXRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgYm9vbCBpc0Rlcml2ZWRGcm9t
U1ZHRWxlbWVudD4KLXN0cnVjdCBHZXRPd25lckVsZW1lbnRGb3JUeXBlOwotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBPd25lclR5cGU+Ci1zdHJ1Y3QgR2V0T3duZXJFbGVtZW50Rm9yVHlwZTxPd25lclR5
cGUsIHRydWU+IHsKLSAgICBzdGF0aWMgU1ZHRWxlbWVudCogb3duZXJFbGVtZW50KE93bmVyVHlw
ZSogdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0eXBlOwotICAgIH0KLX07Ci0KLXRlbXBs
YXRlPHR5cGVuYW1lIE93bmVyVHlwZT4KLXN0cnVjdCBHZXRPd25lckVsZW1lbnRGb3JUeXBlPE93
bmVyVHlwZSwgZmFsc2U+IHsgICAgCi0gICAgc3RhdGljIFNWR0VsZW1lbnQqIG93bmVyRWxlbWVu
dChPd25lclR5cGUqIHR5cGUpCi0gICAgewotICAgICAgICBTVkdFbGVtZW50KiBjb250ZXh0ID0g
dHlwZS0+Y29udGV4dEVsZW1lbnQoKTsKLSAgICAgICAgQVNTRVJUKGNvbnRleHQpOwotICAgICAg
ICByZXR1cm4gY29udGV4dDsKLSAgICB9Ci19OwotCiAvLyBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVu
dCBpbXBsZW1lbnRhdGlvbgogdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgogc3RydWN0IElz
RGVyaXZlZEZyb21TVkdFbGVtZW50IHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRy
dWU7CiB9OwogCitjbGFzcyBTVkdUZXN0czsKK3RlbXBsYXRlPD4KK3N0cnVjdCBJc0Rlcml2ZWRG
cm9tU1ZHRWxlbWVudDxTVkdUZXN0cz4geworICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0g
ZmFsc2U7Cit9OworCiBjbGFzcyBTVkdWaWV3U3BlYzsKIHRlbXBsYXRlPD4KIHN0cnVjdCBJc0Rl
cml2ZWRGcm9tU1ZHRWxlbWVudDxTVkdWaWV3U3BlYz4gewpAQCAtODksNjAgKzc0LDEwOSBAQCBz
dHJ1Y3QgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5CiAgICAgYm9vbCBzaG91bGRT
eW5jaHJvbml6ZSA6IDE7CiB9OwogCi0jZGVmaW5lIERFRklORV9BTklNQVRFRF9QUk9QRVJUWShP
d25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgVGVhck9m
ZlR5cGUsIFByb3BlcnR5VHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotdm9p
ZCBPd25lclR5cGU6OnN5bmNocm9uaXplIyNVcHBlclByb3BlcnR5KCkgXAorLy8gUHJvcGVydHkg
cmVnaXN0cmF0aW9uIGhlbHBlcnMKKyNkZWZpbmUgQkVHSU5fUkVHSVNURVJfQU5JTUFURURfUFJP
UEVSVElFUyhPd25lclR5cGUpIFwKK1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAmIE93bmVyVHlw
ZTo6YXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpIFwKIHsgXAotICAgIGlmICghbV8jI0xvd2VyUHJv
cGVydHkuc2hvdWxkU3luY2hyb25pemUpIFwKLSAgICAgICAgIHJldHVybjsgXAotICAgIEF0b21p
Y1N0cmluZyB2YWx1ZShTVkdQcm9wZXJ0eVRyYWl0czxQcm9wZXJ0eVR5cGU+Ojp0b1N0cmluZyhM
b3dlclByb3BlcnR5IyNCYXNlVmFsdWUoKSkpOyBcCi0gICAgU1ZHRWxlbWVudCogY29udGV4dEVs
ZW1lbnQgPSBHZXRPd25lckVsZW1lbnRGb3JUeXBlPE93bmVyVHlwZSwgSXNEZXJpdmVkRnJvbVNW
R0VsZW1lbnQ8T3duZXJUeXBlPjo6dmFsdWU+Ojpvd25lckVsZW1lbnQodGhpcyk7IFwKLSAgICBT
VkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPElzRGVyaXZlZEZyb21TVkdFbGVtZW50PE93
bmVyVHlwZT46OnZhbHVlPjo6c3luY2hyb25pemUoY29udGV4dEVsZW1lbnQsIERPTUF0dHJpYnV0
ZSwgdmFsdWUpOyBcCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTVkdBdHRyaWJ1dGVUb1Byb3Bl
cnR5TWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlNYXAsICgpKTsgXAorICAgIHJldHVybiBzX2F0
dHJpYnV0ZVRvUHJvcGVydHlNYXA7IFwKIH0gXAogXAotUGFzc1JlZlB0cjxUZWFyT2ZmVHlwZT4g
T3duZXJUeXBlOjpMb3dlclByb3BlcnR5IyNBbmltYXRlZCgpIFwKK3N0YXRpYyB2b2lkIHJlZ2lz
dGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yIyNPd25lclR5cGUoKSBcCiB7IFwKLSAgICBtXyMjTG93
ZXJQcm9wZXJ0eS5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7IFwKLSAgICBTVkdFbGVtZW50KiBj
b250ZXh0RWxlbWVudCA9IEdldE93bmVyRWxlbWVudEZvclR5cGU8T3duZXJUeXBlLCBJc0Rlcml2
ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5cGU+Ojp2YWx1ZT46Om93bmVyRWxlbWVudCh0aGlzKTsg
XAotICAgIHJldHVybiBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBPckNyZWF0ZVdyYXBwZXI8
VGVhck9mZlR5cGUsIFByb3BlcnR5VHlwZT4oY29udGV4dEVsZW1lbnQsIERPTUF0dHJpYnV0ZSwg
U1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgbV8jI0xvd2VyUHJvcGVydHkudmFsdWUpOyBcCi19
CisgICAgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgbWFwID0gT3duZXJUeXBlOjphdHRyaWJ1
dGVUb1Byb3BlcnR5TWFwKCk7IFwKKyAgICBpZiAoIW1hcC5pc0VtcHR5KCkpIFwKKyAgICAgICAg
cmV0dXJuOyBcCisgICAgdHlwZWRlZiBPd25lclR5cGUgVXNlT3duZXJUeXBlOworCisjZGVmaW5l
IFJFR0lTVEVSX0xPQ0FMX0FOSU1BVEVEX1BST1BFUlRZKExvd2VyUHJvcGVydHkpIFwKKyAgICAg
bWFwLmFkZFByb3BlcnR5KFVzZU93bmVyVHlwZTo6TG93ZXJQcm9wZXJ0eSMjUHJvcGVydHlJbmZv
KCkpOworCisjZGVmaW5lIFJFR0lTVEVSX1BBUkVOVF9BTklNQVRFRF9QUk9QRVJUSUVTKENsYXNz
TmFtZSkgXAorICAgICBtYXAuYWRkUHJvcGVydGllcyhDbGFzc05hbWU6OmF0dHJpYnV0ZVRvUHJv
cGVydHlNYXAoKSk7IFwKKworI2RlZmluZSBFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElF
UyB9CisKKy8vIFByb3BlcnR5IGRlZmluaXRpb24gaGVscGVycyAodXNlZCBpbiBTVkcqLmNwcCBm
aWxlcykKKyNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkUHJvcGVydHlU
eXBlRW51bSwgT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZp
ZXIsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKK2NvbnN0IFNWR1Byb3BlcnR5SW5m
byogT3duZXJUeXBlOjpMb3dlclByb3BlcnR5IyNQcm9wZXJ0eUluZm8oKSB7IFwKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IFNWR1Byb3BlcnR5SW5mbywgc19wcm9wZXJ0eUluZm8sIFwK
KyAgICAgICAgICAgICAgICAgICAgICAgIChBbmltYXRlZFByb3BlcnR5VHlwZUVudW0sIFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBET01BdHRyaWJ1dGUsIFwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBcCisgICAgICAgICAgICAgICAgICAg
ICAgICAgJk93bmVyVHlwZTo6c3luY2hyb25pemUjI1VwcGVyUHJvcGVydHksIFwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAmT3duZXJUeXBlOjpsb29rdXBPckNyZWF0ZSMjVXBwZXJQcm9wZXJ0
eSMjV3JhcHBlcikpOyBcCisgICAgcmV0dXJuICZzX3Byb3BlcnR5SW5mbzsgXAorfSAKKworLy8g
UHJvcGVydHkgZGVjbGFyYXRpb24gaGVscGVycyAodXNlZCBpbiBTVkcqLmggZmlsZXMpCisjZGVm
aW5lIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhPd25lclR5cGUpIFwKK3B1Ymxp
YzogXAorICAgIHN0YXRpYyBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBhdHRyaWJ1dGVUb1By
b3BlcnR5TWFwKCk7IFwKKyAgICB2aXJ0dWFsIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAmIGxv
Y2FsQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpIFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIGF0
dHJpYnV0ZVRvUHJvcGVydHlNYXAoKTsgXAorICAgIH0gXAorICAgIHR5cGVkZWYgT3duZXJUeXBl
IFVzZU93bmVyVHlwZTsKIAogI2RlZmluZSBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFRlYXJP
ZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKIHB1
YmxpYzogXAotUHJvcGVydHlUeXBlJiBMb3dlclByb3BlcnR5KCkgY29uc3QgXAoteyBcCi0gICAg
cmV0dXJuIG1fIyNMb3dlclByb3BlcnR5LnZhbHVlOyBcCi19IFwKLVwKLVByb3BlcnR5VHlwZSYg
TG93ZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKCkgY29uc3QgXAoteyBcCi0gICAgcmV0dXJuIG1fIyNM
b3dlclByb3BlcnR5LnZhbHVlOyBcCi19IFwKLVwKLXZvaWQgc2V0IyNVcHBlclByb3BlcnR5IyNC
YXNlVmFsdWUoY29uc3QgUHJvcGVydHlUeXBlJiB0eXBlKSBcCi17IFwKLSAgICBtXyMjTG93ZXJQ
cm9wZXJ0eS52YWx1ZSA9IHR5cGU7IFwKLX0gXAotXAotUGFzc1JlZlB0cjxUZWFyT2ZmVHlwZT4g
TG93ZXJQcm9wZXJ0eSMjQW5pbWF0ZWQoKTsgXAorICAgIHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0
eUluZm8qIExvd2VyUHJvcGVydHkjI1Byb3BlcnR5SW5mbygpOyBcCisgICAgUHJvcGVydHlUeXBl
JiBMb3dlclByb3BlcnR5KCkgY29uc3QgXAorICAgIHsgXAorICAgICAgICByZXR1cm4gbV8jI0xv
d2VyUHJvcGVydHkudmFsdWU7IFwKKyAgICB9IFwKK1wKKyAgICBQcm9wZXJ0eVR5cGUmIExvd2Vy
UHJvcGVydHkjI0Jhc2VWYWx1ZSgpIGNvbnN0IFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIG1f
IyNMb3dlclByb3BlcnR5LnZhbHVlOyBcCisgICAgfSBcCitcCisgICAgdm9pZCBzZXQjI1VwcGVy
UHJvcGVydHkjI0Jhc2VWYWx1ZShjb25zdCBQcm9wZXJ0eVR5cGUmIHR5cGUpIFwKKyAgICB7IFwK
KyAgICAgICAgbV8jI0xvd2VyUHJvcGVydHkudmFsdWUgPSB0eXBlOyBcCisgICAgfSBcCitcCisg
ICAgUGFzc1JlZlB0cjxUZWFyT2ZmVHlwZT4gTG93ZXJQcm9wZXJ0eSMjQW5pbWF0ZWQoKSBcCisg
ICAgeyBcCisgICAgICAgIG1fIyNMb3dlclByb3BlcnR5LnNob3VsZFN5bmNocm9uaXplID0gdHJ1
ZTsgXAorICAgICAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxUZWFyT2ZmVHlwZT4obG9v
a3VwT3JDcmVhdGUjI1VwcGVyUHJvcGVydHkjI1dyYXBwZXIodGhpcykpOyBcCisgICAgfSBcCiBc
CiBwcml2YXRlOiBcCi0gICAgdm9pZCBzeW5jaHJvbml6ZSMjVXBwZXJQcm9wZXJ0eSgpOyBcCisg
ICAgdm9pZCBzeW5jaHJvbml6ZSMjVXBwZXJQcm9wZXJ0eSgpIFwKKyAgICB7IFwKKyAgICAgICAg
aWYgKCFtXyMjTG93ZXJQcm9wZXJ0eS5zaG91bGRTeW5jaHJvbml6ZSkgXAorICAgICAgICAgICAg
cmV0dXJuOyBcCisgICAgICAgIEF0b21pY1N0cmluZyB2YWx1ZShTVkdQcm9wZXJ0eVRyYWl0czxQ
cm9wZXJ0eVR5cGU+Ojp0b1N0cmluZyhtXyMjTG93ZXJQcm9wZXJ0eS52YWx1ZSkpOyBcCisgICAg
ICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8SXNEZXJpdmVkRnJvbVNWR0VsZW1l
bnQ8VXNlT3duZXJUeXBlPjo6dmFsdWU+OjpzeW5jaHJvbml6ZSh0aGlzLCBMb3dlclByb3BlcnR5
IyNQcm9wZXJ0eUluZm8oKS0+YXR0cmlidXRlTmFtZSwgdmFsdWUpOyBcCisgICAgfSBcCitcCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGUj
I1VwcGVyUHJvcGVydHkjI1dyYXBwZXIodm9pZCogbWFza2VkT3duZXJUeXBlKSBcCisgICAgeyBc
CisgICAgICAgIEFTU0VSVChtYXNrZWRPd25lclR5cGUpOyBcCisgICAgICAgIFVzZU93bmVyVHlw
ZSogb3duZXJUeXBlID0gc3RhdGljX2Nhc3Q8VXNlT3duZXJUeXBlKj4obWFza2VkT3duZXJUeXBl
KTsgXAorICAgICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVX
cmFwcGVyPFVzZU93bmVyVHlwZSwgVGVhck9mZlR5cGUsIFByb3BlcnR5VHlwZSwgSXNEZXJpdmVk
RnJvbVNWR0VsZW1lbnQ8VXNlT3duZXJUeXBlPjo6dmFsdWU+KG93bmVyVHlwZSwgTG93ZXJQcm9w
ZXJ0eSMjUHJvcGVydHlJbmZvKCksIG93bmVyVHlwZS0+bV8jI0xvd2VyUHJvcGVydHkudmFsdWUp
OyBcCisgICAgfSBcCitcCisgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemUjI1VwcGVyUHJvcGVy
dHkodm9pZCogbWFza2VkT3duZXJUeXBlKSBcCisgICAgeyBcCisgICAgICAgIEFTU0VSVChtYXNr
ZWRPd25lclR5cGUpOyBcCisgICAgICAgIFVzZU93bmVyVHlwZSogb3duZXJUeXBlID0gc3RhdGlj
X2Nhc3Q8VXNlT3duZXJUeXBlKj4obWFza2VkT3duZXJUeXBlKTsgXAorICAgICAgICBvd25lclR5
cGUtPnN5bmNocm9uaXplIyNVcHBlclByb3BlcnR5KCk7IFwKKyAgICB9IFwKIFwKICAgICBtdXRh
YmxlIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IG1fIyNM
b3dlclByb3BlcnR5OwogCisjZGVmaW5lIEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMg
CisKKy8vIExpc3Qgc3BlY2lmaWMgZGVmaW5pdGlvbi9kZWNsYXJhdGlvbiBoZWxwZXJzCiAjZGVm
aW5lIERFQ0xBUkVfQU5JTUFURURfTElTVF9QUk9QRVJUWShUZWFyT2ZmVHlwZSwgUHJvcGVydHlU
eXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCiBERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRZKFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJv
cGVydHkpIFwKLXZvaWQgZGV0YWNoQW5pbWF0ZWQjI1VwcGVyUHJvcGVydHkjI0xpc3RXcmFwcGVy
cyh1bnNpZ25lZCBuZXdMaXN0U2l6ZSk7Ci0KLSNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX0xJU1Rf
UFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZp
ZXIsIFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVy
dHkpIFwKLURFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwg
U1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgVGVhck9mZlR5cGUsIFByb3BlcnR5VHlwZSwgVXBw
ZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAotdm9pZCBPd25lclR5cGU6OmRldGFjaEFuaW1h
dGVkIyNVcHBlclByb3BlcnR5IyNMaXN0V3JhcHBlcnModW5zaWduZWQgbmV3TGlzdFNpemUpIFwK
K3ZvaWQgZGV0YWNoQW5pbWF0ZWQjI1VwcGVyUHJvcGVydHkjI0xpc3RXcmFwcGVycyh1bnNpZ25l
ZCBuZXdMaXN0U2l6ZSkgXAogeyBcCi0gICAgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQgPSBH
ZXRPd25lckVsZW1lbnRGb3JUeXBlPE93bmVyVHlwZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8
T3duZXJUeXBlPjo6dmFsdWU+Ojpvd25lckVsZW1lbnQodGhpcyk7IFwKLSAgICBTVkdBbmltYXRl
ZFByb3BlcnR5KiB3cmFwcGVyID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwV3JhcHBlcjxU
ZWFyT2ZmVHlwZT4oY29udGV4dEVsZW1lbnQsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSk7IFwK
LSAgICBpZiAoIXdyYXBwZXIpIFwKLSAgICAgICAgcmV0dXJuOyBcCi0gICAgc3RhdGljX2Nhc3Q8
VGVhck9mZlR5cGUqPih3cmFwcGVyKS0+ZGV0YWNoTGlzdFdyYXBwZXJzKG5ld0xpc3RTaXplKTsg
XAorICAgIGlmIChTVkdBbmltYXRlZFByb3BlcnR5KiB3cmFwcGVyID0gU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eTo6bG9va3VwV3JhcHBlcjxUZWFyT2ZmVHlwZT4odGhpcywgTG93ZXJQcm9wZXJ0eSMjUHJv
cGVydHlJbmZvKCkpKSBcCisgICAgICAgIHN0YXRpY19jYXN0PFRlYXJPZmZUeXBlKj4od3JhcHBl
ciktPmRldGFjaExpc3RXcmFwcGVycyhuZXdMaXN0U2l6ZSk7IFwKIH0KIAogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXpl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJvcGVydHlTeW5jaHJvbml6ZXIuaAkocmV2aXNpb24gOTA2NjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDkgKzI3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBI
ZWxwZXIgdGVtcGxhdGUgdXNlZCBmb3Igc3luY2hyb25pemluZyBTVkcgPC0+IFhNTCBwcm9wZXJ0
aWVzCiB0ZW1wbGF0ZTxib29sIGlzRGVyaXZlZEZyb21TVkdFbGVtZW50Pgotc3RydWN0IFNWR0Fu
aW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIgewotICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXpl
KFNWR0VsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJik7
Ci19Oworc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI7CiAKIHRlbXBsYXRl
PD4KIHN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPHRydWU+IHsKQEAgLTQ4
LDcgKzQ2LDcgQEAgc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dAogCiB0
ZW1wbGF0ZTw+CiBzdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjxmYWxzZT4g
ewotICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXplKFNWR0VsZW1lbnQqLCBjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikKKyAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6
ZSh2b2lkKiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpCiAgICAg
ewogICAgICAgICAvLyBuby1vcCwgZm9yIHR5cGVzIG5vdCBpbmhlcml0aW5nIGZyb20gRWxlbWVu
dCwgdGh1cyBub3RoaW5nIHRvIHN5bmNocm9uaXplCiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0
eU1hcC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShT
VkcpCisjaW5jbHVkZSAiU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oIgorCisjaW5jbHVkZSAi
U1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIlNWR1Byb3BlcnR5SW5mby5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YWRk
UHJvcGVydGllcyhTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwJiBtYXApCit7CisgICAgQXR0cmli
dXRlVG9Qcm9wZXJ0aWVzTWFwOjppdGVyYXRvciBlbmQgPSBtYXAubV9tYXAuZW5kKCk7CisgICAg
Zm9yIChBdHRyaWJ1dGVUb1Byb3BlcnRpZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLm1fbWFwLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBQcm9wZXJ0aWVzVmVjdG9yKiB2ZWN0
b3IgPSBpdC0+c2Vjb25kOworICAgICAgICBBU1NFUlQodmVjdG9yKTsKKworICAgICAgICBQcm9w
ZXJ0aWVzVmVjdG9yOjppdGVyYXRvciB2ZWN0b3JFbmQgPSB2ZWN0b3ItPmVuZCgpOworICAgICAg
ICBmb3IgKFByb3BlcnRpZXNWZWN0b3I6Oml0ZXJhdG9yIHZlY3Rvckl0ID0gdmVjdG9yLT5iZWdp
bigpOyB2ZWN0b3JJdCAhPSB2ZWN0b3JFbmQ7ICsrdmVjdG9ySXQpCisgICAgICAgICAgICBhZGRQ
cm9wZXJ0eSgqdmVjdG9ySXQpOworICAgIH0KK30KKwordm9pZCBTVkdBdHRyaWJ1dGVUb1Byb3Bl
cnR5TWFwOjphZGRQcm9wZXJ0eShjb25zdCBTVkdQcm9wZXJ0eUluZm8qIGluZm8pCit7CisgICAg
QVNTRVJUKGluZm8pOworICAgIEFTU0VSVChpbmZvLT5hdHRyaWJ1dGVOYW1lICE9IGFueVFOYW1l
KCkpOworICAgIGlmIChQcm9wZXJ0aWVzVmVjdG9yKiB2ZWN0b3IgPSBtX21hcC5nZXQoaW5mby0+
YXR0cmlidXRlTmFtZSkpIHsKKyAgICAgICAgdmVjdG9yLT5hcHBlbmQoaW5mbyk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgUHJvcGVydGllc1ZlY3RvciogdmVjdG9yID0gbmV3IFByb3Bl
cnRpZXNWZWN0b3I7CisgICAgdmVjdG9yLT5hcHBlbmQoaW5mbyk7CisgICAgbV9tYXAuc2V0KGlu
Zm8tPmF0dHJpYnV0ZU5hbWUsIHZlY3Rvcik7Cit9CisKK3ZvaWQgU1ZHQXR0cmlidXRlVG9Qcm9w
ZXJ0eU1hcDo6YW5pbWF0ZWRQcm9wZXJ0aWVzRm9yQXR0cmlidXRlKFNWR0VsZW1lbnQqIG93bmVy
VHlwZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgVmVjdG9yPFJlZlB0cjxT
VkdBbmltYXRlZFByb3BlcnR5PiA+JiBwcm9wZXJ0aWVzKQoreworICAgIEFTU0VSVChvd25lclR5
cGUpOworICAgIFByb3BlcnRpZXNWZWN0b3IqIHZlY3RvciA9IG1fbWFwLmdldChhdHRyaWJ1dGVO
YW1lKTsKKyAgICBpZiAoIXZlY3RvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgUHJvcGVydGll
c1ZlY3Rvcjo6aXRlcmF0b3IgdmVjdG9yRW5kID0gdmVjdG9yLT5lbmQoKTsKKyAgICBmb3IgKFBy
b3BlcnRpZXNWZWN0b3I6Oml0ZXJhdG9yIHZlY3Rvckl0ID0gdmVjdG9yLT5iZWdpbigpOyB2ZWN0
b3JJdCAhPSB2ZWN0b3JFbmQ7ICsrdmVjdG9ySXQpCisgICAgICAgIHByb3BlcnRpZXMuYXBwZW5k
KGFuaW1hdGVkUHJvcGVydHkob3duZXJUeXBlLCBhdHRyaWJ1dGVOYW1lLCAqdmVjdG9ySXQpKTsK
K30KKwordm9pZCBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwOjphbmltYXRlZFByb3BlcnR5VHlw
ZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBWZWN0b3I8
QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+JiBwcm9wZXJ0eVR5cGVzKQoreworICAgIFByb3BlcnRpZXNW
ZWN0b3IqIHZlY3RvciA9IG1fbWFwLmdldChhdHRyaWJ1dGVOYW1lKTsKKyAgICBpZiAoIXZlY3Rv
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgUHJvcGVydGllc1ZlY3Rvcjo6aXRlcmF0b3IgdmVj
dG9yRW5kID0gdmVjdG9yLT5lbmQoKTsKKyAgICBmb3IgKFByb3BlcnRpZXNWZWN0b3I6Oml0ZXJh
dG9yIHZlY3Rvckl0ID0gdmVjdG9yLT5iZWdpbigpOyB2ZWN0b3JJdCAhPSB2ZWN0b3JFbmQ7ICsr
dmVjdG9ySXQpCisgICAgICAgIHByb3BlcnR5VHlwZXMuYXBwZW5kKCgqdmVjdG9ySXQpLT5hbmlt
YXRlZFByb3BlcnR5VHlwZSk7Cit9CisKK3ZvaWQgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6
c3luY2hyb25pemVQcm9wZXJ0aWVzKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQoreworICAg
IEFTU0VSVChjb250ZXh0RWxlbWVudCk7CisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0aWVzTWFwOjpp
dGVyYXRvciBlbmQgPSBtX21hcC5lbmQoKTsKKyAgICBmb3IgKEF0dHJpYnV0ZVRvUHJvcGVydGll
c01hcDo6aXRlcmF0b3IgaXQgPSBtX21hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAg
ICAgICAgUHJvcGVydGllc1ZlY3RvciogdmVjdG9yID0gaXQtPnNlY29uZDsKKyAgICAgICAgQVNT
RVJUKHZlY3Rvcik7CisKKyAgICAgICAgUHJvcGVydGllc1ZlY3Rvcjo6aXRlcmF0b3IgdmVjdG9y
RW5kID0gdmVjdG9yLT5lbmQoKTsKKyAgICAgICAgZm9yIChQcm9wZXJ0aWVzVmVjdG9yOjppdGVy
YXRvciB2ZWN0b3JJdCA9IHZlY3Rvci0+YmVnaW4oKTsgdmVjdG9ySXQgIT0gdmVjdG9yRW5kOyAr
K3ZlY3Rvckl0KQorICAgICAgICAgICAgc3luY2hyb25pemVQcm9wZXJ0eShjb250ZXh0RWxlbWVu
dCwgaXQtPmZpcnN0LCAqdmVjdG9ySXQpOworICAgIH0gCit9CisKK2Jvb2wgU1ZHQXR0cmlidXRl
VG9Qcm9wZXJ0eU1hcDo6c3luY2hyb25pemVQcm9wZXJ0eShTVkdFbGVtZW50KiBjb250ZXh0RWxl
bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKK3sKKyAgICBBU1NFUlQo
Y29udGV4dEVsZW1lbnQpOworICAgIFByb3BlcnRpZXNWZWN0b3IqIHZlY3RvciA9IG1fbWFwLmdl
dChhdHRyaWJ1dGVOYW1lKTsKKyAgICBpZiAoIXZlY3RvcikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgUHJvcGVydGllc1ZlY3Rvcjo6aXRlcmF0b3IgdmVjdG9yRW5kID0gdmVjdG9yLT5l
bmQoKTsKKyAgICBmb3IgKFByb3BlcnRpZXNWZWN0b3I6Oml0ZXJhdG9yIHZlY3Rvckl0ID0gdmVj
dG9yLT5iZWdpbigpOyB2ZWN0b3JJdCAhPSB2ZWN0b3JFbmQ7ICsrdmVjdG9ySXQpCisgICAgICAg
IHN5bmNocm9uaXplUHJvcGVydHkoY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsICp2ZWN0
b3JJdCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBTVkdBdHRyaWJ1dGVUb1Byb3Bl
cnR5TWFwOjpzeW5jaHJvbml6ZVByb3BlcnR5KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBTVkdQcm9wZXJ0eUluZm8q
IGluZm8pCit7CisgICAgQVNTRVJUKGluZm8pOworICAgIEFTU0VSVF9VTlVTRUQoYXR0cmlidXRl
TmFtZSwgYXR0cmlidXRlTmFtZSA9PSBpbmZvLT5hdHRyaWJ1dGVOYW1lKTsKKyAgICBBU1NFUlQo
aW5mby0+c3luY2hyb25pemVQcm9wZXJ0eSk7CisgICAgKCppbmZvLT5zeW5jaHJvbml6ZVByb3Bl
cnR5KShjb250ZXh0RWxlbWVudCk7Cit9CisKK1Bhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0
eT4gU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcDo6YW5pbWF0ZWRQcm9wZXJ0eShTVkdFbGVtZW50
KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29u
c3QgU1ZHUHJvcGVydHlJbmZvKiBpbmZvKQoreworICAgIEFTU0VSVChpbmZvKTsKKyAgICBBU1NF
UlRfVU5VU0VEKGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZU5hbWUgPT0gaW5mby0+YXR0cmlidXRl
TmFtZSk7CisgICAgQVNTRVJUKGluZm8tPmxvb2t1cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVk
UHJvcGVydHkpOworICAgIHJldHVybiAoKmluZm8tPmxvb2t1cE9yQ3JlYXRlV3JhcHBlckZvckFu
aW1hdGVkUHJvcGVydHkpKGNvbnRleHRFbGVtZW50KTsKK30KKworfQorCisjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1
dGVUb1Byb3BlcnR5TWFwLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
IDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0
eU1hcF9oCisjZGVmaW5lIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXBfaAorCisjaWYgRU5BQkxF
KFNWRykKKyNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVN5bmNocm9uaXplci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTsKK2NsYXNzIFNWR0Vs
ZW1lbnQ7CitjbGFzcyBTVkdQcm9wZXJ0eUluZm87CisKK2NsYXNzIFNWR0F0dHJpYnV0ZVRvUHJv
cGVydHlNYXAgeworcHVibGljOgorICAgIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKSB7IH0K
KyAgICB+U1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpIHsgZGVsZXRlQWxsVmFsdWVzKG1fbWFw
KTsgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9tYXAuaXNFbXB0eSgp
OyB9CisKKyAgICB2b2lkIGFkZFByb3BlcnRpZXMoU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYp
OworICAgIHZvaWQgYWRkUHJvcGVydHkoY29uc3QgU1ZHUHJvcGVydHlJbmZvKik7CisKKyAgICB2
b2lkIGFuaW1hdGVkUHJvcGVydGllc0ZvckF0dHJpYnV0ZShTVkdFbGVtZW50KiBjb250ZXh0RWxl
bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgVmVjdG9yPFJlZlB0cjxT
VkdBbmltYXRlZFByb3BlcnR5PiA+Jik7CisgICAgdm9pZCBhbmltYXRlZFByb3BlcnR5VHlwZUZv
ckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBWZWN0b3I8QW5p
bWF0ZWRQcm9wZXJ0eVR5cGU+Jik7CisKKyAgICB2b2lkIHN5bmNocm9uaXplUHJvcGVydGllcyhT
VkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7CisgICAgYm9vbCBzeW5jaHJvbml6ZVByb3BlcnR5
KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoU1ZHRWxl
bWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUs
IGNvbnN0IFNWR1Byb3BlcnR5SW5mbyopOworICAgIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eT4gYW5pbWF0ZWRQcm9wZXJ0eShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgU1ZHUHJvcGVydHlJbmZvKik7CisK
KyAgICB0eXBlZGVmIFZlY3Rvcjxjb25zdCBTVkdQcm9wZXJ0eUluZm8qPiBQcm9wZXJ0aWVzVmVj
dG9yOworICAgIHR5cGVkZWYgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBQcm9wZXJ0aWVzVmVjdG9y
Kj4gQXR0cmlidXRlVG9Qcm9wZXJ0aWVzTWFwOworICAgIEF0dHJpYnV0ZVRvUHJvcGVydGllc01h
cCBtX21hcDsKK307CisKK30KKworI2VuZGlmCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5SW5mby5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgU1ZHUHJvcGVy
dHlJbmZvX2gKKyNkZWZpbmUgU1ZHUHJvcGVydHlJbmZvX2gKKworI2lmIEVOQUJMRShTVkcpCisj
aW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTsKKworZW51
bSBBbmltYXRlZFByb3BlcnR5VHlwZSB7CisgICAgQW5pbWF0ZWRBbmdsZSwKKyAgICBBbmltYXRl
ZEJvb2xlYW4sCisgICAgQW5pbWF0ZWRDb2xvciwKKyAgICBBbmltYXRlZEVudW1lcmF0aW9uLAor
ICAgIEFuaW1hdGVkSW50ZWdlciwKKyAgICBBbmltYXRlZExlbmd0aCwKKyAgICBBbmltYXRlZExl
bmd0aExpc3QsCisgICAgQW5pbWF0ZWROdW1iZXIsCisgICAgQW5pbWF0ZWROdW1iZXJMaXN0LAor
ICAgIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIsCisgICAgQW5pbWF0ZWRQYXRoLAorICAg
IEFuaW1hdGVkUG9pbnRzLAorICAgIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbywKKyAgICBB
bmltYXRlZFJlY3QsCisgICAgQW5pbWF0ZWRTdHJpbmcsCisgICAgQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0LAorICAgIEFuaW1hdGVkVW5rbm93bgorfTsKKworc3RydWN0IFNWR1Byb3BlcnR5SW5mbyB7
CisgICAgdHlwZWRlZiB2b2lkICgqU3luY2hyb25pemVQcm9wZXJ0eSkodm9pZCopOworICAgIHR5
cGVkZWYgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiAoKkxvb2t1cE9yQ3JlYXRlV3Jh
cHBlckZvckFuaW1hdGVkUHJvcGVydHkpKHZvaWQqKTsKKworICAgIFNWR1Byb3BlcnR5SW5mbyhB
bmltYXRlZFByb3BlcnR5VHlwZSBuZXdUeXBlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuZXdBdHRy
aWJ1dGVOYW1lLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1By
b3BlcnR5SWRlbnRpZmllciwgU3luY2hyb25pemVQcm9wZXJ0eSBuZXdTeW5jaHJvbml6ZVByb3Bl
cnR5LAorICAgICAgICAgICAgICAgICAgICBMb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JBbmltYXRl
ZFByb3BlcnR5IG5ld0xvb2t1cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVydHkpCisg
ICAgICAgIDogYW5pbWF0ZWRQcm9wZXJ0eVR5cGUobmV3VHlwZSkKKyAgICAgICAgLCBhdHRyaWJ1
dGVOYW1lKG5ld0F0dHJpYnV0ZU5hbWUpCisgICAgICAgICwgcHJvcGVydHlJZGVudGlmaWVyKG5l
d1Byb3BlcnR5SWRlbnRpZmllcikKKyAgICAgICAgLCBzeW5jaHJvbml6ZVByb3BlcnR5KG5ld1N5
bmNocm9uaXplUHJvcGVydHkpCisgICAgICAgICwgbG9va3VwT3JDcmVhdGVXcmFwcGVyRm9yQW5p
bWF0ZWRQcm9wZXJ0eShuZXdMb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JBbmltYXRlZFByb3BlcnR5
KQorICAgIHsKKyAgICB9CisKKyAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBhbmltYXRlZFByb3Bl
cnR5VHlwZTsKKyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lOworICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlJZGVudGlmaWVyOworICAgIFN5bmNocm9uaXplUHJv
cGVydHkgc3luY2hyb25pemVQcm9wZXJ0eTsKKyAgICBMb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JB
bmltYXRlZFByb3BlcnR5IGxvb2t1cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVydHk7
Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKQorI2VuZGlmIC8vIFNWR1Byb3BlcnR5
SW5mb19oCg==
</data>
<flag name="review"
          id="94823"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>