<?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>200553</bug_id>
          
          <creation_ts>2019-08-08 16:32:44 -0700</creation_ts>
          <short_desc>shouldRespectImageOrientation should be a value in ImageOrientation</short_desc>
          <delta_ts>2019-08-13 19:00:18 -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>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>89052</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1559721</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-08 16:32:44 -0700</bug_when>
    <thetext>Currently we have 

1. enum ImageOrientationEnum {

   };

which list the EXIF image orientation values.

2. enum RespectImageOrientationEnum {

   };

which tells whether the image EXIF image orientation is respected or not. The function RenderElement::shouldRespectImageOrientation() returns RespectImageOrientation for the ImageDocument or if the settings().shouldRespectImageOrientation() is true. Otherwise it returns DoNotRespectImageOrientation.

3. struct ImageOrientationDescription {
   
   };

which combines ImageOrientationEnum and RespectImageOrientationEnum in one structure and can be used with ImagePaintingOptions.

4. class ImageOrientation {

   }

which is a wrapper for ImageOrientationEnum.

5. ImageOrientationEnum RenderStyle::imageOrientation()
   {

   }

which returns the css image-orientation property but it still is under a feature control flag CSS_IMAGE_ORIENTATION. Otherwise it returns DefaultImageOrientation which is OriginTopLeft, i.e. no image orientation.

Instead of having ImageOrientationEnum, ImageOrientationDescription, ImageOrientation and RespectImageOrientationEnum we are going to have a single structure ImageOrientation which is a wrapper for ImageOrientationEnum. The RespectImageOrientation will be represented as a new enum value &apos;FromImage&apos;. The struct will have a constructor and casting operator such that assigning an enum value and comparing with an enum value will be done implicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559733</commentid>
    <comment_count>1</comment_count>
      <attachid>375863</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-08 16:59:01 -0700</bug_when>
    <thetext>Created attachment 375863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559740</commentid>
    <comment_count>2</comment_count>
      <attachid>375865</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-08 17:14:25 -0700</bug_when>
    <thetext>Created attachment 375865
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559744</commentid>
    <comment_count>3</comment_count>
      <attachid>375868</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-08 17:23:29 -0700</bug_when>
    <thetext>Created attachment 375868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559752</commentid>
    <comment_count>4</comment_count>
      <attachid>375871</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-08 17:54:30 -0700</bug_when>
    <thetext>Created attachment 375871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560532</commentid>
    <comment_count>5</comment_count>
      <attachid>376089</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-12 13:10:41 -0700</bug_when>
    <thetext>Created attachment 376089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560547</commentid>
    <comment_count>6</comment_count>
      <attachid>376089</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-08-12 14:00:30 -0700</bug_when>
    <thetext>Comment on attachment 376089
Patch

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

We&apos;re going to force call sites to be explicit about whether they want from-image.

&gt; Source/WebCore/platform/graphics/ImageOrientation.h:56
&gt; +        Default           = None,
&gt; +
&gt; +        EXIFFirst         = OriginTopLeft,
&gt; +        EXIFLast          = OriginLeftBottom,
&gt; +
&gt; +        First             = FromImage,
&gt; +        Last              = EXIFLast

Maybe moved these out and just define them where they get used.

&gt; Source/WebCore/platform/graphics/ImageOrientation.h:71
&gt; +    operator int() const { return static_cast&lt;int&gt;(m_orientation); }

Remove this.

&gt; Source/WebCore/platform/graphics/ImageOrientation.h:-79
&gt; -    ImageOrientationEnum imageOrientation() { return m_orientation; }

Keep this, call it .value()? Callers should switch on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560826</commentid>
    <comment_count>7</comment_count>
      <attachid>376177</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-13 09:44:56 -0700</bug_when>
    <thetext>Created attachment 376177
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560830</commentid>
    <comment_count>8</comment_count>
      <attachid>376089</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-13 10:04:36 -0700</bug_when>
    <thetext>Comment on attachment 376089
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/ImageOrientation.h:56
&gt;&gt; +        Last              = EXIFLast
&gt; 
&gt; Maybe moved these out and just define them where they get used.

The first and last values are made private static constants inside the struct.

&gt;&gt; Source/WebCore/platform/graphics/ImageOrientation.h:71
&gt;&gt; +    operator int() const { return static_cast&lt;int&gt;(m_orientation); }
&gt; 
&gt; Remove this.

I changed it to be:
    operator Orientation() const { return m_orientation; }

This can make this code possible:
    if (orientation == ImageOrientation::None)

And this also:
    switch (orientation) {
    case ImageOrientation::None:
    // Compiler will complain if an enum value is missed or out of range value is used.
    ...
    }

&gt;&gt; Source/WebCore/platform/graphics/ImageOrientation.h:-79
&gt;&gt; -    ImageOrientationEnum imageOrientation() { return m_orientation; }
&gt; 
&gt; Keep this, call it .value()? Callers should switch on this.

I think the enum casting operator makes sense for this class since it is just a wrapper around the enum value.

So I think
    if (orientation == ImageOrientation::None)

Looks natural and it is better than 

    if (orientation.value() == ImageOrientation::None)

Or

    if (orientation == ImageOrientation(ImageOrientation::None))

The casting operator and the ImageOrientation(Orientation) constructor the hide fact that ImageOrientation is struct and make it look like an enum which is the common case for the ImageOrientation usage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560835</commentid>
    <comment_count>9</comment_count>
      <attachid>376178</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-13 10:11:16 -0700</bug_when>
    <thetext>Created attachment 376178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560847</commentid>
    <comment_count>10</comment_count>
      <attachid>376181</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-13 10:28:33 -0700</bug_when>
    <thetext>Created attachment 376181
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560956</commentid>
    <comment_count>11</comment_count>
      <attachid>376181</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-13 14:11:55 -0700</bug_when>
    <thetext>Comment on attachment 376181
Patch

Rejecting attachment 376181 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 376181, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 5000 characters of output:
e.xcodeproj/project.pbxproj.rej
patching file Source/WebCore/css/CSSPrimitiveValueMappings.h
patching file Source/WebCore/dom/DataTransfer.cpp
patching file Source/WebCore/html/HTMLCanvasElement.cpp
patching file Source/WebCore/loader/cache/CachedImage.cpp
patching file Source/WebCore/page/DragController.cpp
patching file Source/WebCore/platform/DragImage.cpp
patching file Source/WebCore/platform/DragImage.h
patching file Source/WebCore/platform/graphics/BitmapImage.cpp
patching file Source/WebCore/platform/graphics/BitmapImage.h
patching file Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp
patching file Source/WebCore/platform/graphics/CrossfadeGeneratedImage.h
patching file Source/WebCore/platform/graphics/CustomPaintImage.cpp
patching file Source/WebCore/platform/graphics/CustomPaintImage.h
patching file Source/WebCore/platform/graphics/GeneratedImage.h
patching file Source/WebCore/platform/graphics/GradientImage.cpp
patching file Source/WebCore/platform/graphics/GradientImage.h
patching file Source/WebCore/platform/graphics/GraphicsContext.cpp
patching file Source/WebCore/platform/graphics/GraphicsContext.h
patching file Source/WebCore/platform/graphics/GraphicsContextImpl.cpp
patching file Source/WebCore/platform/graphics/Image.cpp
patching file Source/WebCore/platform/graphics/Image.h
patching file Source/WebCore/platform/graphics/ImageFrame.h
patching file Source/WebCore/platform/graphics/ImageOrientation.cpp
rm &apos;Source/WebCore/platform/graphics/ImageOrientation.cpp&apos;
patching file Source/WebCore/platform/graphics/ImageOrientation.h
patching file Source/WebCore/platform/graphics/ImageSource.cpp
patching file Source/WebCore/platform/graphics/NamedImageGeneratedImage.cpp
patching file Source/WebCore/platform/graphics/NamedImageGeneratedImage.h
patching file Source/WebCore/platform/graphics/NativeImage.h
patching file Source/WebCore/platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm
patching file Source/WebCore/platform/graphics/cairo/CairoOperations.cpp
patching file Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp
patching file Source/WebCore/platform/graphics/cairo/NativeImageCairo.cpp
patching file Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp
patching file Source/WebCore/platform/graphics/cg/ImageDecoderCG.cpp
patching file Source/WebCore/platform/graphics/cg/NativeImageCG.cpp
patching file Source/WebCore/platform/graphics/cg/PDFDocumentImage.cpp
patching file Source/WebCore/platform/graphics/cg/PDFDocumentImage.h
patching file Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
patching file Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp
patching file Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h
patching file Source/WebCore/platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp
patching file Source/WebCore/platform/graphics/gstreamer/VideoTextureCopierGStreamer.h
patching file Source/WebCore/platform/graphics/win/Direct2DOperations.cpp
patching file Source/WebCore/platform/graphics/win/ImageCGWin.cpp
patching file Source/WebCore/platform/graphics/win/ImageCairoWin.cpp
patching file Source/WebCore/platform/graphics/win/ImageDecoderDirect2D.cpp
patching file Source/WebCore/platform/graphics/win/ImageDirect2D.cpp
patching file Source/WebCore/platform/graphics/win/NativeImageDirect2D.cpp
patching file Source/WebCore/platform/gtk/DragImageGtk.cpp
patching file Source/WebCore/platform/image-decoders/ScalableImageDecoderFrame.h
patching file Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp
patching file Source/WebCore/platform/ios/DragImageIOS.mm
patching file Source/WebCore/platform/mac/DragImageMac.mm
patching file Source/WebCore/platform/win/DragImageCGWin.cpp
patching file Source/WebCore/platform/win/DragImageCairoWin.cpp
patching file Source/WebCore/platform/win/DragImageDirect2D.cpp
patching file Source/WebCore/rendering/RenderBoxModelObject.cpp
patching file Source/WebCore/rendering/RenderElement.cpp
patching file Source/WebCore/rendering/RenderElement.h
patching file Source/WebCore/rendering/RenderEmbeddedObject.cpp
patching file Source/WebCore/rendering/RenderImage.cpp
patching file Source/WebCore/rendering/RenderLayerBacking.cpp
patching file Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp
patching file Source/WebCore/rendering/style/RenderStyle.h
patching file Source/WebCore/rendering/style/StyleRareInheritedData.h
patching file Source/WebCore/svg/graphics/SVGImage.cpp
patching file Source/WebCore/svg/graphics/SVGImage.h
patching file Source/WebCore/svg/graphics/SVGImageForContainer.cpp
patching file Source/WebCore/svg/graphics/SVGImageForContainer.h
patching file Source/WebKit/ChangeLog
Hunk #1 succeeded at 1 with fuzz 1.
patching file Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Simon Fraser&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: https://webkit-queues.webkit.org/results/12906694</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561008</commentid>
    <comment_count>12</comment_count>
      <attachid>376224</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-13 16:43:47 -0700</bug_when>
    <thetext>Created attachment 376224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561036</commentid>
    <comment_count>13</comment_count>
      <attachid>376224</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-13 18:59:01 -0700</bug_when>
    <thetext>Comment on attachment 376224
Patch

Clearing flags on attachment: 376224

Committed r248657: &lt;https://trac.webkit.org/changeset/248657&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561037</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-13 18:59:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561038</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-13 19:00:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/54284527&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375863</attachid>
            <date>2019-08-08 16:59:01 -0700</date>
            <delta_ts>2019-08-08 17:14:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200553-20190808165900.patch</filename>
            <type>text/plain</type>
            <size>89611</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1NSBAQAorMjAxOS0wOC0wOCAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIHNob3VsZFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uIHNob3VsZCBiZSBhIHZhbHVlIGluIEltYWdlT3JpZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDU1
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaXMgYSBzdGVwIHRvd2FyZHMgaW1wbGVtZW50aW5nIHRoZSBjc3MgaW1hZ2Utb3JpZW50
YXRpb24uCisKKyAgICAgICAgSW5zdGVhZCBvZiBoYXZpbmcgSW1hZ2VPcmllbnRhdGlvbkVudW0s
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiwKKyAgICAgICAgSW1hZ2VPcmllbnRhdGlvbiBh
bmQgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHdlIGFyZSBnb2luZyB0byBoYXZlIGEKKyAg
ICAgICAgc2luZ2xlIHN0cnVjdHVyZSBuYW1lZCAnSW1hZ2VPcmllbnRhdGlvbicgd2hpY2ggaXMg
YSB3cmFwcGVyIGZvcgorICAgICAgICBJbWFnZU9yaWVudGF0aW9uRW51bS4gVGhlIHN0cnVjdCB3
aWxsIGhhdmUgYSBjb25zdHJ1Y3RvciBhbmQgY2FzdGluZworICAgICAgICBvcGVyYXRvciBzdWNo
IHRoYXQgYXNzaWduaW5nIGFuIGVudW0gdmFsdWUgYW5kIGNvbXBhcmluZyB3aXRoIGFuIGVudW0K
KyAgICAgICAgdmFsdWUgd2lsbCBiZSBkb25lIGltcGxpY2l0bHkuCisKKyAgICAgICAgVGhlIFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uIHdpbGwgYmUgcmVwcmVzZW50ZWQgYXMgYSBuZXcgZW51bSB2
YWx1ZSBuYW1lZAorICAgICAgICAnRnJvbUltYWdlJyBpbiBJbWFnZU9yaWVudGF0aW9uRW51bS4K
KworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRHJhZ0ltYWdlIGNvbnN0KToKKyAgICAgICAg
KiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52
YXNFbGVtZW50OjpwYWludCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjppbWFnZVNpemVGb3JSZW5kZXJlciBj
b25zdCk6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnQ29udHJvbGxlcjo6ZG9JbWFnZURyYWcpOgorICAgICAgICAqIHBsYXRmb3JtL0Ry
YWdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNo
b3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9EcmFnSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Ny
b3NzZmFkZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpk
cmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YWRpZW50SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50
SW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVBhaW50aW5nT3B0aW9uczo6SW1hZ2VQYWludGluZ09wdGlvbnMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd0ltYWdlSW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3
VGlsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlT3JpZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRp
b246OkltYWdlT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlv
bjo6ZnJvbUVYSUZPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0
aW9uOjpvcGVyYXRvciBpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRh
dGlvbjo6dXNlc1dpZHRoQXNIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VP
cmllbnRhdGlvbjo6dHJhbnNmb3JtRnJvbURlZmF1bHQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VPcmllbnRhdGlvbjo6aXNWYWxpZE9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlT3JpZW50YXRpb246OmlzVmFsaWRFWElGT3JpZW50YXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uOjpJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uOjpzZXRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb246OnJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbjo6c2V0SW1hZ2VPcmllbnRhdGlvbkVudW0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uOjppbWFnZU9yaWVudGF0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb246OmZyb21FWElGVmFsdWUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbjo6b3BlcmF0b3Ig
SW1hZ2VPcmllbnRhdGlvbkVudW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VPcmllbnRhdGlvbjo6b3BlcmF0b3I9PSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uOjpvcGVyYXRvciE9IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZVNvdXJjZTo6ZHVtcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFt
ZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkSW1hZ2VH
ZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZl
SW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZG
T2JqQzo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05h
dGl2ZUltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd05hdGl2ZUltYWdlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6b3JpZW50YXRpb25Gcm9tUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXJDRzo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXggY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRy
YXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RyYWdJbWFn
ZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFn
SW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1h
Z2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VEaXJlY3QyRC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
RWxlbWVudDo6aW1hZ2VPcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJFbGVtZW50OjpzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1i
ZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxh
Y2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQmFja2luZzo6aXNEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZSBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpzZXRJbWFnZU9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjppbml0aWFsSW1hZ2VPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6aW1hZ2VPcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3Rm9yQ29u
dGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhdyk6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6CisKIDIwMTktMDgtMDgg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBh
ZGRyZXNzIHBvc3QtbGFuZGluZyByZXZpZXcgY29tbWVudHMgZm9yIHIyNDg0MzEuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4MTcsNyArMTgxNyw2IEBAIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZURlY29kZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNw
cAotcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQ4NDQyKQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTc5MCw3ICsxMTc5MCw2IEBACiAJCUE4NzFERkUxMEExNTM3NkIwMEIxMkE2OCAv
KiBSZW5kZXJXaWRnZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbmRlcldpZGdldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4NzQ4QkRG
MTJDQkYyREMwMDFGQkE0MSAvKiBIYXNoVG9vbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSGFzaFRvb2xzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4NzQ4
RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlT3JpZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQTg3NDhENzQxMkNDM0Y4OTAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VPcmllbnRhdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4ODA1QUYxMTZDOTZBRUEwMDBF
OUQ5OCAvKiBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnB1dFN0
cmVhbVByZXByb2Nlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODgyREEx
RjE1OTM4NDZBMDAwMTE1RUQgLyogQ1NTVG9TdHlsZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDU1NUb1N0eWxlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTg4MkRBMjIxNTkzODQ4RDAwMDExNUVEIC8qIENTU1RvU3R5bGVNYXAuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTVG9TdHlsZU1hcC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ1NDcsNyArMjQ1NDYsNiBAQAogCQkJCTU1NzZBNTYy
MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCAqLywKIAkJCQk1NTc2QTU2MzFEODhB
NzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5oICovLAogCQkJCUJDN0Y0NEE3MEI5RTMyNEUwMEE5
RDA4MSAvKiBJbWFnZU9ic2VydmVyLmggKi8sCi0JCQkJQTg3NDhENzQxMkNDM0Y4OTAwMUZCQTQx
IC8qIEltYWdlT3JpZW50YXRpb24uY3BwICovLAogCQkJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0
MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggKi8sCiAJCQkJNDkyOTFFNEExMzQxNzJDODAwRTc1M0RF
IC8qIEltYWdlUmVuZGVyaW5nTW9kZS5oICovLAogCQkJCTU1NDY3NTc3MUZEMUZDMUEwMDNCMTBC
MCAvKiBJbWFnZVNvdXJjZS5jcHAgKi8sCkBAIC0yNTU0MiwxMSArMjU1NDAsMTEgQEAKIAkJCQlD
MjRBNTdCQjIxRkVBRkVBMDA0QzZERDEgLyogV0hMU0xQcmVwYXJlLmggKi8sCiAJCQkJNTIyRTFB
MTcyMjk3RDZENDAwRTVEMzZBIC8qIFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHAg
Ki8sCiAJCQkJNTIyRTFBMTkyMjk3RDZENDAwRTVEMzZBIC8qIFdITFNMUHJlc2VydmVWYXJpYWJs
ZUxpZmV0aW1lcy5oICovLAotCQkJCTUyNkIzRjAxMjJGQjdCREQwMDc2RDM3RCAvKiBXSExTTFBy
dW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwICovLAotCQkJCTUyNkIz
RjAzMjJGQjdCREUwMDc2RDM3RCAvKiBXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJh
cnlGdW5jdGlvbnMuaCAqLywKIAkJCQlDMjFCRjczQTIxQ0Q4RDcwMDAyMjc5NzkgLyogV0hMU0xQ
cm9ncmFtLmggKi8sCiAJCQkJMUNBQTgyRjYyMjQyQUUwNTAwRTg0QkJCIC8qIFdITFNMUHJvcGVy
dHlSZXNvbHZlci5jcHAgKi8sCiAJCQkJMUNBQTgyRjcyMjQyQUUwNTAwRTg0QkJCIC8qIFdITFNM
UHJvcGVydHlSZXNvbHZlci5oICovLAorCQkJCTUyNkIzRjAxMjJGQjdCREQwMDc2RDM3RCAvKiBX
SExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwICovLAorCQkJ
CTUyNkIzRjAzMjJGQjdCREUwMDc2RDM3RCAvKiBXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFy
ZExpYnJhcnlGdW5jdGlvbnMuaCAqLywKIAkJCQkxQ0EwQzJFMDIxRUVCNUY1MDBBMTE4NjAgLyog
V0hMU0xSZWN1cnNpb25DaGVja2VyLmNwcCAqLywKIAkJCQkxQ0EwQzJERTIxRUVCNUY0MDBBMTE4
NjAgLyogV0hMU0xSZWN1cnNpb25DaGVja2VyLmggKi8sCiAJCQkJQzIzNEE5QUQyMUU5MkMxOTAw
M0M5ODREIC8qIFdITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuY3BwICovLApJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDMsNyArNTQzLDcg
QEAgRHJhZ0ltYWdlUmVmIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRHJhZ0ltYQogICAgIGxvY2F0aW9u
ID0gbV9kcmFnTG9jYXRpb247CiAKICAgICBpZiAobV9kcmFnSW1hZ2UpCi0gICAgICAgIHJldHVy
biBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UobV9kcmFnSW1hZ2UtPmltYWdlKCksIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZy
b21JbWFnZShtX2RyYWdJbWFnZS0+aW1hZ2UoKSwgSW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVsdCk7
CiAKICAgICBpZiAobV9kcmFnSW1hZ2VFbGVtZW50KSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJh
bWUgPSBtX2RyYWdJbWFnZUVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjEwLDE3ICs2MTAsMTAgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQoR3Jh
cGhpY3NDbwogCiAgICAgICAgIGlmIChzaG91bGRQYWludCkgewogICAgICAgICAgICAgaWYgKGhh
c0NyZWF0ZWRJbWFnZUJ1ZmZlcigpKSB7Ci0gICAgICAgICAgICAgICAgSW1hZ2VCdWZmZXIqIGlt
YWdlQnVmZmVyID0gYnVmZmVyKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGltYWdlQnVmZmVyKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX3ByZXNlbnRlZEltYWdlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNj
cmlwdGlvbjsKLSNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgICAgICAgICAg
ICAgICAgICAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51
bShyZW5kZXJlcigpLT5zdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7Ci0jZW5kaWYKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCptX3ByZXNlbnRlZEltYWdlLCBz
bmFwcGVkSW50UmVjdChyKSwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlw
dGlvbikpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgc25hcHBlZEludFJlY3Qo
cikpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobV9wcmVzZW50ZWRJ
bWFnZSkKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKm1fcHJlc2VudGVk
SW1hZ2UsIHNuYXBwZWRJbnRSZWN0KHIpLCByZW5kZXJlcigpLT5pbWFnZU9yaWVudGF0aW9uKCkp
OworICAgICAgICAgICAgICAgIGVsc2UgaWYgKEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGJ1
ZmZlcigpKQorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1h
Z2VCdWZmZXIsIHNuYXBwZWRJbnRSZWN0KHIpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgaWYgKGlzR1BVQmFzZWQoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgwLDcgKzI4MCw3
IEBAIEZsb2F0U2l6ZSBDYWNoZWRJbWFnZTo6aW1hZ2VTaXplRm9yUmVuZGUKICAgICBpZiAoIW1f
aW1hZ2UpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBpZiAoaXM8Qml0bWFwSW1hZ2U+KCpt
X2ltYWdlKSAmJiByZW5kZXJlciAmJiByZW5kZXJlci0+c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50
YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKKyAgICBpZiAoaXM8Qml0bWFwSW1h
Z2U+KCptX2ltYWdlKSAmJiByZW5kZXJlciAmJiByZW5kZXJlci0+aW1hZ2VPcmllbnRhdGlvbigp
ID09IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0
PEJpdG1hcEltYWdlPigqbV9pbWFnZSkuc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpOwogCiAg
ICAgaWYgKGlzPFNWR0ltYWdlPigqbV9pbWFnZSkgJiYgc2l6ZVR5cGUgPT0gVXNlZFNpemUpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjQ4NDQy
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExOTcsMTAgKzExOTcsMTAgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZG9JbWFnZURy
YWcoRWxlbWVudAogICAgIGlmICghZWxlbWVudC5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlv
bihlbGVtZW50LnJlbmRlcmVyKCktPnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCksIGVs
ZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOworICAgIEltYWdl
T3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBlbGVtZW50LnJlbmRlcmVyKCktPmltYWdlT3JpZW50
YXRpb24oKTsKIAogICAgIEltYWdlKiBpbWFnZSA9IGdldEltYWdlKGVsZW1lbnQpOwotICAgIGlm
IChpbWFnZSAmJiAhbGF5b3V0UmVjdC5pc0VtcHR5KCkgJiYgc2hvdWxkVXNlQ2FjaGVkSW1hZ2VG
b3JEcmFnSW1hZ2UoKmltYWdlKSAmJiAoZHJhZ0ltYWdlID0gRHJhZ0ltYWdlIHsgY3JlYXRlRHJh
Z0ltYWdlRnJvbUltYWdlKGltYWdlLCBlbGVtZW50LnJlbmRlcmVyKCkgPyBvcmllbnRhdGlvbkRl
c2NyaXB0aW9uIDogSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpIH0pKSB7CisgICAgaWYg
KGltYWdlICYmICFsYXlvdXRSZWN0LmlzRW1wdHkoKSAmJiBzaG91bGRVc2VDYWNoZWRJbWFnZUZv
ckRyYWdJbWFnZSgqaW1hZ2UpICYmIChkcmFnSW1hZ2UgPSBEcmFnSW1hZ2UgeyBjcmVhdGVEcmFn
SW1hZ2VGcm9tSW1hZ2UoaW1hZ2UsIG9yaWVudGF0aW9uKSB9KSkgewogICAgICAgICBkcmFnSW1h
Z2UgPSBEcmFnSW1hZ2UgeyBmaXREcmFnSW1hZ2VUb01heFNpemUoZHJhZ0ltYWdlLmdldCgpLCBs
YXlvdXRSZWN0LnNpemUoKSwgbWF4RHJhZ0ltYWdlU2l6ZSgpKSB9OwogICAgICAgICBJbnRTaXpl
IGZpdHRlZFNpemUgPSBkcmFnSW1hZ2VTaXplKGRyYWdJbWFnZS5nZXQoKSk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAy
LDIwICsxMDIsMTUgQEAgc3RhdGljIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tUwog
ICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uOwotI2lmIEVOQUJMRShDU1NfSU1BR0Vf
T1JJRU5UQVRJT04pCisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbjsKICAgICBpZiAo
bm9kZSkgewogICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIo
KTsKICAgICAgICAgaWYgKCFyZW5kZXJlciB8fCAhaXM8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIp
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0byYgcmVuZGVyRWxl
bWVudCA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpyZW5kZXJlcik7Ci0gICAgICAgIG9yaWVu
dGF0aW9uLnNldFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKHJlbmRlckVsZW1lbnQuc2hvdWxkUmVz
cGVjdEltYWdlT3JpZW50YXRpb24oKSk7Ci0gICAgICAgIG9yaWVudGF0aW9uLnNldEltYWdlT3Jp
ZW50YXRpb25FbnVtKHJlbmRlckVsZW1lbnQuc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwor
ICAgICAgICBvcmllbnRhdGlvbiA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpyZW5kZXJlciku
aW1hZ2VPcmllbnRhdGlvbigpOwogICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG5vZGUp
OwotI2VuZGlmCisKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJ
bnRvSW1hZ2UoV1RGTW92ZShzbmFwc2hvdCksIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKICAg
ICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMwNSw3ICszMDAsNyBA
QCBEcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLURyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2Uq
LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0lt
YWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRHJhZ0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJh
Z0ltYWdlLmgJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ry
YWdJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIERyYWdJbWFnZVJlZiBz
Y2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYKIERyYWdJbWFnZVJlZiBwbGF0Zm9ybUFkanVzdERy
YWdJbWFnZUZvckRldmljZVNjYWxlRmFjdG9yKERyYWdJbWFnZVJlZiwgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IpOwogRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFn
SW1hZ2VSZWYsIGZsb2F0IGRlbHRhKTsKIAotRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZy
b21JbWFnZShJbWFnZSosIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbik7CitEcmFnSW1hZ2VS
ZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VPcmllbnRhdGlvbik7CiBE
cmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlRmlsZW5hbWUoY29u
c3QgU3RyaW5nJik7CiAKIFdFQkNPUkVfRVhQT1JUIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1h
Z2VGb3JOb2RlKEZyYW1lJiwgTm9kZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigp
CiB9CiAjZW5kaWYKIAotSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIERlY29k
aW5nTW9kZSBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlw
dGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBEZWNvZGluZ01vZGUg
ZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIGlmIChk
ZXN0UmVjdC5pc0VtcHR5KCkgfHwgc3JjUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBJ
bWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkBAIC0yNjgsOCArMjY4LDcgQEAgSW1hZ2VEcmF3
UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaQogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIAotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24oZGVzY3JpcHRpb24uaW1h
Z2VPcmllbnRhdGlvbigpKTsKLSAgICBpZiAoZGVzY3JpcHRpb24ucmVzcGVjdEltYWdlT3JpZW50
YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKKyAgICBpZiAob3JpZW50YXRpb24g
PT0gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlKQogICAgICAgICBvcmllbnRhdGlvbiA9IGZy
YW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIAogICAgIGRyYXdOYXRpdmVJ
bWFnZShpbWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc2l6ZSgpKSwg
b3AsIG1vZGUsIG9yaWVudGF0aW9uKTsKQEAgLTMwNiw3ICszMDUsNyBAQCB2b2lkIEJpdG1hcElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvCiAgICAgICAgIC8vIFRlbXBvcmFyaWx5IHJlc2V0
IGltYWdlIG9ic2VydmVyLCB3ZSBkb24ndCB3YW50IHRvIHJlY2VpdmUgYW55IGNoYW5nZUluUmVj
dCgpIGNhbGxzIGR1ZSB0byB0aGlzIHJlbGF5b3V0LgogICAgICAgICBzZXRJbWFnZU9ic2VydmVy
KG51bGxwdHIpOwogCi0gICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHRpbGVSZWN0LCB0
aWxlUmVjdCwgb3AsIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgp
LCB0aWxlUmVjdCwgdGlsZVJlY3QsIG9wLCBibGVuZE1vZGUsIERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXMsIEltYWdlT3JpZW50YXRpb246OkRlZmF1bHQpOwogCiAgICAgICAgIHNldEltYWdlT2Jz
ZXJ2ZXIob2JzZXJ2ZXIpOwogICAgICAgICBidWZmZXItPmNvbnZlcnRUb0x1bWluYW5jZU1hc2so
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDcgKzE2MSw3IEBAIHByb3Rl
Y3RlZDoKICAgICAvLyB8ZGVzdHJveUFsbHwgYWxvbmcuCiAgICAgdm9pZCBkZXN0cm95RGVjb2Rl
ZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lBbGwgPSB0cnVlKTsKIAotICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBE
ZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAg
SW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSBv
dmVycmlkZTsKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1Nv
dXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgb3ZlcnJpZGU7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJh
d0Nyb3NzZgogICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotSW1hZ2VE
cmF3UmVzdWx0IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBE
ZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK0ltYWdlRHJhd1Jlc3Vs
dCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdN
b2RlLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihjb250ZXh0KTsKICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihj
b21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNp
b24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6
CiAgICAgRmxvYXRTaXplIHNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Nyb3NzZmFk
ZVNpemU7IH0KIAogcHJvdGVjdGVkOgotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXco
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9h
dFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAogICAgIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlKElt
YWdlJiBmcm9tSW1hZ2UsIEltYWdlJiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBG
bG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5j
cHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0N1c3RvbVBhaW50SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNyArMTcwLDcgQEAg
SW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdAogICAgIHJldHVybiBJbWFn
ZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBDdXN0b21QYWludElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQogewog
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihkZXN0Q29udGV4dCk7CiAg
ICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1v
ZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJ
bWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1
c3RvbVBhaW50SW1hZ2UuaAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3
ICs1Miw3IEBAIHByaXZhdGU6CiAKICAgICBJbWFnZURyYXdSZXN1bHQgZG9DdXN0b21QYWludChH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmKTsKIAotICAgIEltYWdlRHJhd1Jlc3Vs
dCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGlu
Z01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgZmluYWw7CisgICAgSW1hZ2VEcmF3
UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERl
Y29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7CiAgICAgdm9pZCBkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7CiAKICAgICBXZWFrUHRyPFBhaW50V29ya2xl
dEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24+IG1fcGFpbnREZWZpbml0aW9uOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5o
CShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
ZW5lcmF0ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIC8qZGVzdHJveUFsbCovID0gdHJ1ZSkg
b3ZlcnJpZGUgeyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlID0gMDsKKyAgICBJbWFnZURyYXdSZXN1
bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2Rp
bmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZSA9IDA7CiAgICAgdm9pZCBkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9y
bSwKICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgb3ZlcnJpZGUgPSAwOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdl
LmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhZGllbnRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgR3Jh
ZGllbnRJbWFnZTo6R3JhZGllbnRJbWFnZShHcmFkaWVudCYgZwogCiBHcmFkaWVudEltYWdlOjp+
R3JhZGllbnRJbWFnZSgpID0gZGVmYXVsdDsKIAotSW1hZ2VEcmF3UmVzdWx0IEdyYWRpZW50SW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24pCitJbWFnZURyYXdSZXN1bHQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGRlc3RDb250ZXh0KTsKICAgICBk
ZXN0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJ
bWFnZS5oCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBHcmFkaWVudEltYWdlKEdyYWRpZW50JiwgY29uc3QgRmxvYXRT
aXplJik7CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24pIGZpbmFsOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24p
IGZpbmFsOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFs
OwogICAgIGJvb2wgaXNHcmFkaWVudEltYWdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIHZvaWQgZHVtcChXVEY6OlRleHRTdHJlYW0mKSBjb25zdCBmaW5hbDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMzLDcgKzczMyw3IEBA
IEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWEKICAgICAgICAgcmV0dXJu
IG1faW1wbC0+ZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50
aW5nT3B0aW9ucyk7CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJw
b2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1f
aW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0
aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9y
LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMu
bV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlw
dGlvbik7CisgICAgcmV0dXJuIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdP
cHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwg
aW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbik7CiB9CiAKIEltYWdlRHJhd1Jlc3Vs
dCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9h
dFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKQEAgLTc0NSw3ICs3NDUsNyBAQCBJ
bWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsCiAgICAgICAgIHJldHVybiBt
X2ltcGwtPmRyYXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6
ZSwgc3BhY2luZywgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogCiAgICAgSW50ZXJwb2xhdGlvblF1
YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICByZXR1cm4g
aW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3Bh
Y2luZywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWlu
dGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fZGVjb2RpbmdN
b2RlKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291
cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVP
cGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdP
cHRpb25zLm1fZGVjb2RpbmdNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9u
KTsKIH0KIAogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAko
cmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMSwyOSArMjExLDI5IEBAIHN0cnVj
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CiB9OwogCiBzdHJ1Y3QgSW1hZ2VQYWludGluZ09wdGlv
bnMgewotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJs
ZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVz
Y3JpcHRpb24gPSBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgSW50ZXJwb2xhdGlvblF1
YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBJbnRlcnBvbGF0aW9uRGVmYXVsdCkKKyAgICBJ
bWFnZVBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9
IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5v
cm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25v
dXMsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25l
LCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRp
b25EZWZhdWx0KQogICAgICAgICA6IG1fY29tcG9zaXRlT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0
b3IpCiAgICAgICAgICwgbV9ibGVuZE1vZGUoYmxlbmRNb2RlKQogICAgICAgICAsIG1fZGVjb2Rp
bmdNb2RlKGRlY29kaW5nTW9kZSkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uRGVzY3JpcHRpb24o
b3JpZW50YXRpb25EZXNjcmlwdGlvbikKKyAgICAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0
aW9uKQogICAgICAgICAsIG1faW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlvblF1YWxp
dHkpCiAgICAgewogICAgIH0KIAotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCBJbnRlcnBvbGF0aW9uUXVh
bGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0LCBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5k
TW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5n
TW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpCisgICAgSW1hZ2VQYWludGluZ09wdGlv
bnMoSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50
ZXJwb2xhdGlvblF1YWxpdHkgPSBJbnRlcnBvbGF0aW9uRGVmYXVsdCwgQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgYmxl
bmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUgPSBE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKQogICAgICAgICA6IG1fY29tcG9zaXRlT3BlcmF0b3Io
Y29tcG9zaXRlT3BlcmF0b3IpCiAgICAgICAgICwgbV9ibGVuZE1vZGUoYmxlbmRNb2RlKQogICAg
ICAgICAsIG1fZGVjb2RpbmdNb2RlKGRlY29kaW5nTW9kZSkKLSAgICAgICAgLCBtX29yaWVudGF0
aW9uRGVzY3JpcHRpb24ob3JpZW50YXRpb25EZXNjcmlwdGlvbikKKyAgICAgICAgLCBtX29yaWVu
dGF0aW9uKG9yaWVudGF0aW9uKQogICAgICAgICAsIG1faW50ZXJwb2xhdGlvblF1YWxpdHkoaW50
ZXJwb2xhdGlvblF1YWxpdHkpCiAgICAgewogICAgIH0KIAotICAgIEltYWdlUGFpbnRpbmdPcHRp
b25zKEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5LCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbigpLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1h
bCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMp
CisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMoSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xh
dGlvblF1YWxpdHksIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0
aW9uOjpOb25lLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0
ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVj
b2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpCiAgICAg
ICAgIDogbV9jb21wb3NpdGVPcGVyYXRvcihjb21wb3NpdGVPcGVyYXRvcikKICAgICAgICAgLCBt
X2JsZW5kTW9kZShibGVuZE1vZGUpCiAgICAgICAgICwgbV9kZWNvZGluZ01vZGUoZGVjb2RpbmdN
b2RlKQotICAgICAgICAsIG1fb3JpZW50YXRpb25EZXNjcmlwdGlvbihvcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKQorICAgICAgICAsIG1fb3JpZW50YXRpb24ob3JpZW50YXRpb24pCiAgICAgICAgICwg
bV9pbnRlcnBvbGF0aW9uUXVhbGl0eShpbnRlcnBvbGF0aW9uUXVhbGl0eSkKICAgICB7CiAgICAg
fQpAQCAtMjQzLDcgKzI0Myw3IEBAIHN0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9ucyB7CiAgICAg
Q29tcG9zaXRlT3BlcmF0b3IgbV9jb21wb3NpdGVPcGVyYXRvcjsKICAgICBCbGVuZE1vZGUgbV9i
bGVuZE1vZGU7CiAgICAgRGVjb2RpbmdNb2RlIG1fZGVjb2RpbmdNb2RlOwotICAgIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbiBtX29yaWVudGF0aW9uRGVzY3JpcHRpb247CisgICAgSW1hZ2VP
cmllbnRhdGlvbiBtX29yaWVudGF0aW9uOwogICAgIEludGVycG9sYXRpb25RdWFsaXR5IG1faW50
ZXJwb2xhdGlvblF1YWxpdHk7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmNwcAkocmV2aXNpb24g
MjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDEzICs0MCwxMyBAQCBHcmFwaGljc0Nv
bnRleHRJbXBsOjp+R3JhcGhpY3NDb250ZXh0SW1wCiBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3ND
b250ZXh0SW1wbDo6ZHJhd0ltYWdlSW1wbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdl
JiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
IHsKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxp
dHlGb3JUaGlzU2NvcGUoY29udGV4dCwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0
aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXcoY29udGV4dCwgZGVzdGluYXRpb24s
IHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQ
YWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fZGVjb2Rp
bmdNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24pOwor
ICAgIHJldHVybiBpbWFnZS5kcmF3KGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdl
UGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQ
YWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbik7CiB9CiAKIEltYWdlRHJhd1Jlc3VsdCBHcmFw
aGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09w
dGlvbnMpCiB7CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRp
b25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1faW50
ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoY29udGV4dCwg
ZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2Rl
LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSk7CisgICAgcmV0dXJuIGltYWdl
LmRyYXdUaWxlZChjb250ZXh0LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2lu
ZywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGlu
Z09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fZGVjb2RpbmdNb2Rl
LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uKTsKIH0KIAogSW1hZ2VEcmF3UmVz
dWx0IEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9y
LCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250
ZXh0JgogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcoKnRoaXMpOwogfQogCi1JbWFn
ZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBG
bG9hdFNpemUmIHNjYWxlZFRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUgZGVjb2Rp
bmdNb2RlKQorSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0
JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQ
b2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2Rp
bmdNb2RlIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAg
ICBDb2xvciBjb2xvciA9IHNpbmdsZVBpeGVsU29saWRDb2xvcigpOwogICAgIGlmIChjb2xvci5p
c1ZhbGlkKCkpIHsKQEAgLTE4NCw3ICsxODQsNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRy
YXdUaWxlZChHcmFwaGljCiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFkoKGRlc3RSZWN0Lnko
KSAtIG9uZVRpbGVSZWN0LnkoKSkgLyBzY2FsZS5oZWlnaHQoKSk7CiAgICAgICAgIHZpc2libGVT
cmNSZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0aCgpKTsKICAgICAg
ICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdodCgpIC8gc2NhbGUuaGVp
Z2h0KCkpOwotICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1Jl
Y3QsIG9wLCBibGVuZE1vZGUsIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKCkpOworICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1Jl
Y3QsIG9wLCBibGVuZE1vZGUsIGRlY29kaW5nTW9kZSwgb3JpZW50YXRpb24pOwogICAgIH0KIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0xOTYsNyArMTk2LDcgQEAgSW1hZ2VEcmF3UmVz
dWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpYwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Qu
c2V0WSgoZGVzdFJlY3QueSgpIC0gb25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsK
ICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKDEpOwogICAgICAgICAgICAgdmlz
aWJsZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdodCgpIC8gc2NhbGUuaGVpZ2h0KCkp
OwotICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0
LCBvcCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZp
c2libGVTcmNSZWN0LCBvcCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgb3JpZW50
YXRpb24pOwogICAgICAgICB9CiAgICAgICAgIGlmIChzaXplKCkuaGVpZ2h0KCkgPT0gMSAmJiBp
bnRlcnNlY3Rpb24ob25lVGlsZVJlY3QsIGRlc3RSZWN0KS53aWR0aCgpID09IGRlc3RSZWN0Lndp
ZHRoKCkpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCB2aXNpYmxlU3JjUmVjdDsKQEAgLTIwNCw3
ICsyMDQsNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljCiAgICAg
ICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRZKDApOwogICAgICAgICAgICAgdmlzaWJsZVNyY1Jl
Y3Quc2V0V2lkdGgoZGVzdFJlY3Qud2lkdGgoKSAvIHNjYWxlLndpZHRoKCkpOwogICAgICAgICAg
ICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KDEpOwotICAgICAgICAgICAgcmV0dXJuIGRyYXco
Y3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBvcCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRl
Y29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAg
cmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBvcCwgQmxlbmRNb2Rl
OjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgb3JpZW50YXRpb24pOwogICAgICAgICB9CiAgICAgfQog
I2VuZGlmCkBAIC0yMzYsNyArMjM2LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGls
ZWQoR3JhcGhpYwogICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBmcm9tUmVjdCh0b0Zsb2F0UG9p
bnQoY3VycmVudFRpbGVSZWN0LmxvY2F0aW9uKCkgLSBvbmVUaWxlUmVjdC5sb2NhdGlvbigpKSwg
Y3VycmVudFRpbGVSZWN0LnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZnJvbVJlY3Quc2NhbGUo
MSAvIHNjYWxlLndpZHRoKCksIDEgLyBzY2FsZS5oZWlnaHQoKSk7CiAKLSAgICAgICAgICAgICAg
ICByZXN1bHQgPSBkcmF3KGN0eHQsIHRvUmVjdCwgZnJvbVJlY3QsIG9wLCBCbGVuZE1vZGU6Ok5v
cm1hbCwgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gZHJhdyhjdHh0LCB0b1JlY3QsIGZyb21SZWN0LCBvcCwgQmxl
bmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgb3JpZW50YXRpb24pOwogICAgICAgICAgICAg
ICAgIGlmIChyZXN1bHQgPT0gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1ZXN0RGVjb2RpbmcpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgdG9YICs9
IGN1cnJlbnRUaWxlUmVjdC53aWR0aCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsOCArMTkwLDggQEAg
cHJvdGVjdGVkOgogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1l
TWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IpIHsgfQogI2Vu
ZGlmCi0gICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24pID0gMDsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9p
bnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlKTsKKyAgICB2aXJ0dWFs
IEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pID0gMDsKKyAgICBJbWFnZURy
YXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNp
emUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKICAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3Rvciwg
VGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRvcik7CiAKICAg
ICAvLyBTdXBwb3J0aW5nIHRpbGVkIGRyYXdpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAkod29ya2luZyBjb3B5KQpA
QCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogICAgIFN1YnNhbXBsaW5nTGV2ZWwgbV9zdWJzYW1w
bGluZ0xldmVsIHsgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCB9OwogICAgIERlY29kaW5nT3B0
aW9ucyBtX2RlY29kaW5nT3B0aW9uczsKIAotICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRh
dGlvbiB7IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uIH07CisgICAgSW1hZ2VPcmllbnRhdGlvbiBt
X29yaWVudGF0aW9uIHsgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSB9OwogICAgIFNlY29uZHMgbV9k
dXJhdGlvbjsKICAgICBib29sIG1faGFzQWxwaGEgeyB0cnVlIH07CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uaAko
cmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VPcmllbnRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMDcgKzI0LDEwNyBAQAogICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIEltYWdlT3JpZW50YXRpb25faAotI2RlZmluZSBJbWFnZU9y
aWVudGF0aW9uX2gKKyNwcmFnbWEgb25jZQogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CisjaW5jbHVk
ZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAKLWNsYXNzIEFm
ZmluZVRyYW5zZm9ybTsKLWNsYXNzIEZsb2F0U2l6ZTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Ly8gVGhpcyBlbnVtIGludGVudGlvbmFsbHkgbWF0Y2hlcyB0aGUgb3JpZW50YXRpb24gdmFsdWVz
IGZyb20gdGhlIEVYSUYgc3BlYy4KLS8vIFNlZSBKRUlUQSBDUC0zNDUxLCBwYWdlIDE4LiBodHRw
Oi8vd3d3LmV4aWYub3JnL0V4aWYyLTIuUERGCi1lbnVtIEltYWdlT3JpZW50YXRpb25FbnVtIHsK
LSAgICAvLyAiVG9wTGVmdCIgbWVhbnMgdGhhdCB0aGUgMCByb3cgc3RhcnRzIGF0IHRoZSBUb3As
IHRoZSAwIGNvbHVtbiBzdGFydHMgYXQgdGhlIExlZnQuCi0gICAgT3JpZ2luVG9wTGVmdCA9IDEs
IC8vIGRlZmF1bHQKLSAgICBPcmlnaW5Ub3BSaWdodCA9IDIsIC8vIG1pcnJvciBhbG9uZyB5LWF4
aXMKLSAgICBPcmlnaW5Cb3R0b21SaWdodCA9IDMsIC8vIDE4MCBkZWdyZWUgcm90YXRpb24KLSAg
ICBPcmlnaW5Cb3R0b21MZWZ0ID0gNCwgLy8gbWlycm9yIGFsb25nIHRoZSB4LWF4aXMKLSAgICBP
cmlnaW5MZWZ0VG9wID0gNSwgLy8gbWlycm9yIGFsb25nIHgtYXhpcyArIDI3MCBkZWdyZWUgQ1cg
cm90YXRpb24KLSAgICBPcmlnaW5SaWdodFRvcCA9IDYsIC8vIDkwIGRlZ3JlZSBDVyByb3RhdGlv
bgotICAgIE9yaWdpblJpZ2h0Qm90dG9tID0gNywgLy8gbWlycm9yIGFsb25nIHgtYXhpcyArIDkw
IGRlZ3JlZSBDVyByb3RhdGlvbgotICAgIE9yaWdpbkxlZnRCb3R0b20gPSA4LCAvLyAyNzAgZGVn
cmVlIENXIHJvdGF0aW9uCi0gICAgLy8gQWxsIG90aGVyIHZhbHVlcyBhcmUgInJlc2VydmVkIiBh
cyBvZiBFWElGIDIuMgotICAgIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uID0gT3JpZ2luVG9wTGVm
dCwKLX07CitzdHJ1Y3QgSW1hZ2VPcmllbnRhdGlvbiB7CisgICAgZW51bSBJbWFnZU9yaWVudGF0
aW9uRW51bSB7CisgICAgICAgIEZyb21JbWFnZSAgICAgICAgID0gMCwKKworICAgICAgICAvLyBU
aGlzIHJhbmdlIGludGVudGlvbmFsbHkgbWF0Y2hlcyB0aGUgb3JpZW50YXRpb24gdmFsdWVzIGZy
b20gdGhlIEVYSUYgc3BlYy4KKyAgICAgICAgLy8gU2VlIEpFSVRBIENQLTM0NTEsIHBhZ2UgMTgu
IGh0dHA6Ly93d3cuZXhpZi5vcmcvRXhpZjItMi5QREYKKyAgICAgICAgT3JpZ2luVG9wTGVmdCAg
ICAgPSAxLCAvLyBkZWZhdWx0CisgICAgICAgIE9yaWdpblRvcFJpZ2h0ICAgID0gMiwgLy8gbWly
cm9yIGFsb25nIHktYXhpcworICAgICAgICBPcmlnaW5Cb3R0b21SaWdodCA9IDMsIC8vIDE4MCBk
ZWdyZWUgcm90YXRpb24KKyAgICAgICAgT3JpZ2luQm90dG9tTGVmdCAgPSA0LCAvLyBtaXJyb3Ig
YWxvbmcgdGhlIHgtYXhpcworICAgICAgICBPcmlnaW5MZWZ0VG9wICAgICA9IDUsIC8vIG1pcnJv
ciBhbG9uZyB4LWF4aXMgKyAyNzAgZGVncmVlIENXIHJvdGF0aW9uCisgICAgICAgIE9yaWdpblJp
Z2h0VG9wICAgID0gNiwgLy8gOTAgZGVncmVlIENXIHJvdGF0aW9uCisgICAgICAgIE9yaWdpblJp
Z2h0Qm90dG9tID0gNywgLy8gbWlycm9yIGFsb25nIHgtYXhpcyArIDkwIGRlZ3JlZSBDVyByb3Rh
dGlvbgorICAgICAgICBPcmlnaW5MZWZ0Qm90dG9tICA9IDgsIC8vIDI3MCBkZWdyZWUgQ1cgcm90
YXRpb24KKworICAgICAgICBOb25lICAgICAgICAgICAgICA9IE9yaWdpblRvcExlZnQsCisgICAg
ICAgIERlZmF1bHQgICAgICAgICAgID0gTm9uZSwKKworICAgICAgICBFWElGRmlyc3QgICAgICAg
ICA9IE9yaWdpblRvcExlZnQsCisgICAgICAgIEVYSUZMYXN0ICAgICAgICAgID0gT3JpZ2luTGVm
dEJvdHRvbSwKKworICAgICAgICBGaXJzdCAgICAgICAgICAgICA9IEZyb21JbWFnZSwKKyAgICAg
ICAgTGFzdCAgICAgICAgICAgICAgPSBFWElGTGFzdAorICAgIH07CiAKLWVudW0gUmVzcGVjdElt
YWdlT3JpZW50YXRpb25FbnVtIHsKLSAgICBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID0g
MCwKLSAgICBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9IDEKLX07CisgICAgSW1hZ2VPcmllbnRh
dGlvbigpID0gZGVmYXVsdDsKIAotc3RydWN0IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiB7
Ci0gICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
RW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwKLSAgICAgICAgSW1hZ2VPcmllbnRh
dGlvbkVudW0gb3JpZW50YXRpb24pCi0gICAgICAgIDogbV9yZXNwZWN0T3JpZW50YXRpb24oc2hv
dWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihvcmll
bnRhdGlvbikKKyAgICBJbWFnZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb25FbnVtIG9yaWVu
dGF0aW9uKQorICAgICAgICA6IG1fb3JpZW50YXRpb24ob3JpZW50YXRpb24pCiAgICAgewogICAg
IH0KIAotICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpCi0gICAgICAgIDogbV9yZXNw
ZWN0T3JpZW50YXRpb24oRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKLSAgICAgICAgLCBt
X29yaWVudGF0aW9uKERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKQorICAgIGV4cGxpY2l0IEltYWdl
T3JpZW50YXRpb24oaW50IG9yaWVudGF0aW9uKQorICAgICAgICA6IEltYWdlT3JpZW50YXRpb24o
aXNWYWxpZE9yaWVudGF0aW9uKG9yaWVudGF0aW9uKSA/IHN0YXRpY19jYXN0PEltYWdlT3JpZW50
YXRpb25FbnVtPihvcmllbnRhdGlvbikgOiBOb25lKQogICAgIHsKICAgICB9CiAKLSAgICBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3Vs
ZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAgICAgICA6IG1fcmVzcGVjdE9yaWVudGF0aW9u
KHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAgICAgICAsIG1fb3JpZW50YXRpb24o
RGVmYXVsdEltYWdlT3JpZW50YXRpb24pCisgICAgc3RhdGljIEltYWdlT3JpZW50YXRpb24gZnJv
bUVYSUZPcmllbnRhdGlvbihpbnQgb3JpZW50YXRpb24pCiAgICAgeworICAgICAgICByZXR1cm4g
aXNWYWxpZEVYSUZPcmllbnRhdGlvbihvcmllbnRhdGlvbikgPyBzdGF0aWNfY2FzdDxJbWFnZU9y
aWVudGF0aW9uRW51bT4ob3JpZW50YXRpb24pIDogTm9uZTsKICAgICB9CiAKLSAgICB2b2lkIHNl
dFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91
bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgeyBtX3Jlc3BlY3RPcmllbnRhdGlvbiA9IHNob3Vs
ZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uOyB9Ci0gICAgUmVzcGVjdEltYWdlT3JpZW50YXRpb25F
bnVtIHJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgeyByZXR1cm4gbV9yZXNwZWN0T3JpZW50YXRp
b247IH0KLQotICAgIHZvaWQgc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oSW1hZ2VPcmllbnRhdGlv
bkVudW0gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9Ci0gICAg
SW1hZ2VPcmllbnRhdGlvbkVudW0gaW1hZ2VPcmllbnRhdGlvbigpIHsgcmV0dXJuIG1fb3JpZW50
YXRpb247IH0KKyAgICBvcGVyYXRvciBpbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KG1fb3JpZW50YXRpb24pOyB9CiAKLSAgICBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0g
bV9yZXNwZWN0T3JpZW50YXRpb247Ci0gICAgSW1hZ2VPcmllbnRhdGlvbkVudW0gbV9vcmllbnRh
dGlvbjsKLX07Ci0KLWNsYXNzIEltYWdlT3JpZW50YXRpb24gewotcHVibGljOgotICAgIEltYWdl
T3JpZW50YXRpb24oKQotICAgICAgICA6IG1fb3JpZW50YXRpb24oRGVmYXVsdEltYWdlT3JpZW50
YXRpb24pCisgICAgYm9vbCB1c2VzV2lkdGhBc0hlaWdodCgpIGNvbnN0CiAgICAgeworICAgICAg
ICBBU1NFUlQoaXNWYWxpZEVYSUZPcmllbnRhdGlvbihtX29yaWVudGF0aW9uKSk7CisgICAgICAg
IC8vIFZhbHVlcyA1IHRocm91Z2ggOCBhbGwgZmxpcCB0aGUgd2lkdGgvaGVpZ2h0LgorICAgICAg
ICByZXR1cm4gbV9vcmllbnRhdGlvbiA+PSBPcmlnaW5MZWZ0VG9wOwogICAgIH0KIAotICAgIGV4
cGxpY2l0IEltYWdlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbkVudW0gb3JpZW50YXRpb24p
Ci0gICAgICAgIDogbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKKyAgICBBZmZpbmVUcmFuc2Zv
cm0gdHJhbnNmb3JtRnJvbURlZmF1bHQoY29uc3QgRmxvYXRTaXplJiBkcmF3blNpemUpIGNvbnN0
CiAgICAgeworICAgICAgICBmbG9hdCB3ID0gZHJhd25TaXplLndpZHRoKCk7CisgICAgICAgIGZs
b2F0IGggPSBkcmF3blNpemUuaGVpZ2h0KCk7CisKKyAgICAgICAgc3dpdGNoIChtX29yaWVudGF0
aW9uKSB7CisgICAgICAgIGNhc2UgRnJvbUltYWdlOgorICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CisgICAgICAg
IGNhc2UgT3JpZ2luVG9wTGVmdDoKKyAgICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0o
KTsKKyAgICAgICAgY2FzZSBPcmlnaW5Ub3BSaWdodDoKKyAgICAgICAgICAgIHJldHVybiBBZmZp
bmVUcmFuc2Zvcm0oLTEsICAwLCAgMCwgIDEsICB3LCAwKTsKKyAgICAgICAgY2FzZSBPcmlnaW5C
b3R0b21SaWdodDoKKyAgICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oLTEsICAwLCAg
MCwgLTEsICB3LCBoKTsKKyAgICAgICAgY2FzZSBPcmlnaW5Cb3R0b21MZWZ0OgorICAgICAgICAg
ICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSggMSwgIDAsICAwLCAtMSwgIDAsIGgpOworICAgICAg
ICBjYXNlIE9yaWdpbkxlZnRUb3A6CisgICAgICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3Jt
KCAwLCAgMSwgIDEsICAwLCAgMCwgMCk7CisgICAgICAgIGNhc2UgT3JpZ2luUmlnaHRUb3A6Cisg
ICAgICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCAwLCAgMSwgLTEsICAwLCAgdywgMCk7
CisgICAgICAgIGNhc2UgT3JpZ2luUmlnaHRCb3R0b206CisgICAgICAgICAgICByZXR1cm4gQWZm
aW5lVHJhbnNmb3JtKCAwLCAtMSwgLTEsICAwLCAgdywgaCk7CisgICAgICAgIGNhc2UgT3JpZ2lu
TGVmdEJvdHRvbToKKyAgICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oIDAsIC0xLCAg
MSwgIDAsICAwLCBoKTsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CiAgICAgfQogCi0gICAgYm9vbCB1
c2VzV2lkdGhBc0hlaWdodCgpIGNvbnN0Citwcml2YXRlOgorICAgIHN0YXRpYyBib29sIGlzVmFs
aWRPcmllbnRhdGlvbihpbnQgb3JpZW50YXRpb24pCiAgICAgewotICAgICAgICAvLyBWYWx1ZXMg
NSB0aHJvdWdoIDggYWxsIGZsaXAgdGhlIHdpZHRoL2hlaWdodC4KLSAgICAgICAgcmV0dXJuIG1f
b3JpZW50YXRpb24gPj0gT3JpZ2luTGVmdFRvcDsKKyAgICAgICAgcmV0dXJuIG9yaWVudGF0aW9u
ID49IHN0YXRpY19jYXN0PGludD4oRmlyc3QpICYmIG9yaWVudGF0aW9uIDw9IHN0YXRpY19jYXN0
PGludD4oTGFzdCk7CiAgICAgfQogCi0gICAgLy8gSW1hZ2VPcmllbnRhdGlvbkVudW0gY3VycmVu
dGx5IG1hdGNoZXMgRVhJRiB2YWx1ZXMsIGhvd2V2ZXIgY29kZSBvdXRzaWRlCi0gICAgLy8gdGhp
cyBmdW5jdGlvbiBzaG91bGQgbmV2ZXIgYXNzdW1lIHRoYXQuCi0gICAgc3RhdGljIEltYWdlT3Jp
ZW50YXRpb24gZnJvbUVYSUZWYWx1ZShpbnQgZXhpZlZhbHVlKQotICAgIHsKLSAgICAgICAgLy8g
VmFsdWVzIGRpcmVjdCBmcm9tIGltYWdlcyBtYXkgYmUgaW52YWxpZCwgaW4gd2hpY2ggY2FzZSB3
ZSB1c2UgdGhlIGRlZmF1bHQuCi0gICAgICAgIGlmIChleGlmVmFsdWUgPCBPcmlnaW5Ub3BMZWZ0
IHx8IGV4aWZWYWx1ZSA+IE9yaWdpbkxlZnRCb3R0b20pCi0gICAgICAgICAgICByZXR1cm4gSW1h
Z2VPcmllbnRhdGlvbigpOwotICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbihzdGF0aWNf
Y2FzdDxJbWFnZU9yaWVudGF0aW9uRW51bT4oZXhpZlZhbHVlKSk7Ci0gICAgfQotCi0gICAgLy8g
VGhpcyB0cmFuc2Zvcm0gY2FuIGJlIHVzZWQgZm9yIGRyYXdpbmcgYW4gaW1hZ2UgYWNjb3JkaW5n
IHRvIHRoZSBvcmllbnRhdGlvbi4KLSAgICAvLyBJdCBzaG91bGQgYmUgdXNlZCBpbiBhIHJpZ2h0
LWhhbmRlZCBjb29yZGluYXRlIHN5c3RlbS4KLSAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3Jt
RnJvbURlZmF1bHQoY29uc3QgRmxvYXRTaXplJiBkcmF3blNpemUpIGNvbnN0OwotCi0gICAgaW5s
aW5lIG9wZXJhdG9yIEltYWdlT3JpZW50YXRpb25FbnVtKCkgY29uc3QgeyByZXR1cm4gbV9vcmll
bnRhdGlvbjsgfQotICAgIAotICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSW1hZ2VP
cmllbnRhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLm1fb3JpZW50YXRpb24gPT0g
bV9vcmllbnRhdGlvbjsgfQotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSW1hZ2VP
cmllbnRhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Cisg
ICAgc3RhdGljIGJvb2wgaXNWYWxpZEVYSUZPcmllbnRhdGlvbihpbnQgb3JpZW50YXRpb24pCisg
ICAgeworICAgICAgICByZXR1cm4gb3JpZW50YXRpb24gPj0gc3RhdGljX2Nhc3Q8aW50PihFWElG
Rmlyc3QpICYmIG9yaWVudGF0aW9uIDw9IHN0YXRpY19jYXN0PGludD4oRVhJRkxhc3QpOworICAg
IH0KIAotcHJpdmF0ZToKLSAgICAvLyBGSVhNRTogVGhpcyBvbmx5IG5lZWRzIHRvIGJlIG9uZSBi
eXRlLgotICAgIEltYWdlT3JpZW50YXRpb25FbnVtIG1fb3JpZW50YXRpb247CisgICAgSW1hZ2VP
cmllbnRhdGlvbkVudW0gbV9vcmllbnRhdGlvbiB7IE5vbmUgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEltYWdlT3JpZW50YXRpb25faApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAkocmV2aXNp
b24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODksNyArNjg5LDcgQEAgdm9pZCBJbWFnZVNvdXJj
ZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykKICAgICB0cy5kdW1wUHJvcGVydHkoInNvbGlkLWNvbG9y
Iiwgc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkpOwogCiAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmll
bnRhdGlvbiA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4KDApOwotICAgIGlmIChvcmllbnRhdGlv
biAhPSBPcmlnaW5Ub3BMZWZ0KQorICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbWFnZU9yaWVudGF0
aW9uOjpOb25lKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoIm9yaWVudGF0aW9uIiwgb3JpZW50
YXRpb24pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAJKHJldmlzaW9uIDI0
ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5l
cmF0ZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlOjpOYW1lZEltYWdlR2VuZQogICAgIHNldENvbnRhaW5lclNpemUoc2l6
ZSk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5k
TW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KQorSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJs
ZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQogewogI2lmIFVTRShORVdf
VEhFTUUpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgJKHJl
dmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1
YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01v
ZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CiAKICAgICBOYW1lZEltYWdlR2VuZXJhdGVkSW1h
Z2UoU3RyaW5nIG5hbWUsIGNvbnN0IEZsb2F0U2l6ZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCShyZXZpc2lvbiAyNDg0NDIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIEludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5h
dGl2ZUltYWcKIGJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYp
OwogQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1h
Z2VQdHImKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBJbnRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgY29uc3QgSW1hZ2VPcmll
bnRhdGlvbiYpOwordm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBJbnRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bik7CiB2b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
KTsKICAgICAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVy
QVZGT2JqQy5tbQkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNTMxLDcgKzUzMSw3IEBAIGJvb2wgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6ZnJh
bWVJc0NvbXBsZXQKIAogSW1hZ2VPcmllbnRhdGlvbiBJbWFnZURlY29kZXJBVkZPYmpDOjpmcmFt
ZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEltYWdlT3Jp
ZW50YXRpb24oKTsKKyAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZTsKIH0KIAogU2Vj
b25kcyBJbWFnZURlY29kZXJBVkZPYmpDOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5k
ZXgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAkocmV2aXNpb24gMjQ4NDQyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
by5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NCw3ICszNTQsNyBAQCB2b2lkIEltYWdlQnVmZmVy
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgCiB7CiAgICAgQmFja2luZ1N0b3JlQ29weSBjb3B5TW9k
ZSA9ICZkZXN0aW5hdGlvbkNvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUg
OiBEb250Q29weUJhY2tpbmdTdG9yZTsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gY29weUlt
YWdlKGNvcHlNb2RlKTsKLSAgICBkZXN0aW5hdGlvbkNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUsIERl
Y29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKSk7
CisgICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGU6OlN5
bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpEZWZhdWx0KSk7CiB9CiAKIHZvaWQgSW1hZ2VC
dWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcAkocmV2
aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
TmF0aXZlSW1hZ2VDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgQ29s
b3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoYwogICAgIHJldHVybiBjb2xvckZy
b21QcmVtdWx0aXBsaWVkQVJHQigqcGl4ZWwpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bnRTaXplJiBpbWFnZVNpemUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUgYmxlbmRNb2RlLCBjb25zdCBJbWFnZU9yaWVudGF0aW9uJiBvcmllbnRhdGlvbikK
K3ZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCiB7CiAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGlt
YWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUs
IG9yaWVudGF0aW9uKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9uIDI0ODQ0
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY28KICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29u
dGV4dCwgYWRqdXN0ZWREZXN0UmVjdC54KCksIGFkanVzdGVkRGVzdFJlY3QueSgpKTsKICAgICBh
ZGp1c3RlZERlc3RSZWN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoKSk7CiAKLSAgICBpZiAob3Jp
ZW50YXRpb24gIT0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pIHsKKyAgICBpZiAob3JpZW50YXRp
b24gIT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkgewogICAgICAgICBDR0NvbnRleHRDb25jYXRD
VE0oY29udGV4dCwgb3JpZW50YXRpb24udHJhbnNmb3JtRnJvbURlZmF1bHQoYWRqdXN0ZWREZXN0
UmVjdC5zaXplKCkpKTsKICAgICAgICAgaWYgKG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0
KCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBkZXN0aW5hdGlvbiByZWN0IHdpbGwgaGF2ZSBpdCdz
IHdpZHRoIGFuZCBoZWlnaHQgYWxyZWFkeSByZXZlcnNlZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9m
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE1NiwxMSArMTU2LDExIEBAIHN0YXRpYyBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uRnJv
bVAKICAgICBBU1NFUlQoaW1hZ2VQcm9wZXJ0aWVzKTsKICAgICBDRk51bWJlclJlZiBvcmllbnRh
dGlvblByb3BlcnR5ID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGltYWdlUHJv
cGVydGllcywga0NHSW1hZ2VQcm9wZXJ0eU9yaWVudGF0aW9uKTsKICAgICBpZiAoIW9yaWVudGF0
aW9uUHJvcGVydHkpCi0gICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7CisgICAgICAg
IHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpOb25lOwogICAgIAogICAgIGludCBleGlmVmFsdWU7
CiAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShvcmllbnRhdGlvblByb3BlcnR5LCBrQ0ZOdW1iZXJJbnRU
eXBlLCAmZXhpZlZhbHVlKTsKLSAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6ZnJvbUVYSUZW
YWx1ZShleGlmVmFsdWUpOworICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpmcm9tRVhJRk9y
aWVudGF0aW9uKGV4aWZWYWx1ZSk7CiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCkBAIC0zNTAs
NyArMzUwLDcgQEAgSW1hZ2VPcmllbnRhdGlvbiBJbWFnZURlY29kZXJDRzo6ZnJhbWVPcgogewog
ICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1h
Z2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBpbmRl
eCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKICAgICBpZiAoIXByb3BlcnRpZXMpCi0g
ICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7CisgICAgICAgIHJldHVybiBJbWFnZU9y
aWVudGF0aW9uOjpOb25lOwogICAgIAogICAgIHJldHVybiBvcmllbnRhdGlvbkZyb21Qcm9wZXJ0
aWVzKHByb3BlcnRpZXMuZ2V0KCkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAJKHJldmlzaW9uIDI0ODQ0
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIENvbG9yIG5hdGl2ZUltYWdlU2lu
Z2xlUGl4ZWxTb2xpZENvbG9yKGMKICAgICByZXR1cm4gQ29sb3IocGl4ZWxbMF0gKiAyNTUgLyBw
aXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhl
bFszXSwgcGl4ZWxbM10pOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNT
aXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIGNvbnN0IEltYWdlT3Jp
ZW50YXRpb24mIG9yaWVudGF0aW9uKQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3Jj
U2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBJbWFnZU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKQogewogICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVz
IGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUoKS4KICAgICBJbnRTaXplIHN1YnNh
bXBsZWRJbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTcsNyArMjU3
LDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFnZQogICAgIGRlY29k
ZWRTaXplQ2hhbmdlZChpbnRlcm5hbFNpemUudW5jbGFtcGVkQXJlYSgpICogNCk7CiB9CiAKLUlt
YWdlRHJhd1Jlc3VsdCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IFBERkRvY3VtZW50SW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSwg
RGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIGlmICghbV9kb2N1bWVudCB8
fCAhbV9oYXNQYWdlKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5n
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJ
bWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BERkRvY3VtZW50SW1hZ2UuaAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5z
aW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxv
YXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7CiAgICAgRmxvYXRTaXplIHNpemUoKSBj
b25zdCBvdmVycmlkZTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8g
YmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFx
dWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAkocmV2aXNpb24g
MjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NjEs
NyArOTYxLDcgQEAgTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbQogfQog
I2VuZGlmIC8vIFVTRShHU1RSRUFNRVJfR0wpCiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZTo6c2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihjb25zdCBJbWFnZU9yaWVudGF0
aW9uJiBvcmllbnRhdGlvbikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
c2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQog
ewogICAgIGlmIChtX3ZpZGVvU291cmNlT3JpZW50YXRpb24gPT0gb3JpZW50YXRpb24pCiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2UuaAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICBOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAot
ICAgIHZvaWQgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihjb25zdCBJbWFnZU9yaWVudGF0aW9u
Jik7CisgICAgdm9pZCBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24p
OwogICAgIEdzdEVsZW1lbnQqIHBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9waXBlbGluZS5n
ZXQoKTsgfQogCiAgICAgdmlydHVhbCBib29sIGhhbmRsZVN5bmNNZXNzYWdlKEdzdE1lc3NhZ2Uq
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2lu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyAr
NzksNyBAQCBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNCiAgICAgaWYg
KHNpemUpCiAgICAgICAgIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShnYywgRmxvYXRSZWN0
KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksICpzaXplLCBD
b21wb3NpdGVDb3B5KTsKICAgICBlbHNlCi0gICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgwLjBm
LCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4w
ZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbXBvc2l0
ZUNvcHksIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgw
LjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3Qo
MC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbXBv
c2l0ZUNvcHksIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJ
bWFnZU9yaWVudGF0aW9uOjpEZWZhdWx0KTsKIAogICAgIC8vIERvIGNsZWFudXAKICAgICBDR0Nv
bnRleHRSZWxlYXNlKGNnQ29udGV4dCk7CkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmMKICAgICAgICAgaWYgKGltYWdlICYmIENHSW1hZ2VH
ZXRIZWlnaHQoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkg
JiYgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUu
d2lkdGgoKSkpIHsKICAgICAgICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRG
cmFtZTsKICAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsKLSAgICAgICAgICAgIGRyYXco
Y3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3Jj
U2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdN
b2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAg
ICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53
aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFs
LCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpEZWZhdWx0KTsK
ICAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gY3VycmVudEZyYW1lOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6
ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyYwogCiAgICAgLy8gTm8gaW1hZ2Ugb2YgdGhlIGNvcnJlY3Qg
c2l6ZSB3YXMgZm91bmQsIGZhbGxiYWNrIHRvIGRyYXdpbmcgdGhlIGN1cnJlbnQgZnJhbWUKICAg
ICBGbG9hdFNpemUgaW1hZ2VTaXplID0gQml0bWFwSW1hZ2U6OnNpemUoKTsKLSAgICBkcmF3KGN0
eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1h
Z2VTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAg
ZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRo
KCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwg
RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVsdCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAJKHJldmlzaW9uIDI0
ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJv
V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBib29sIEJpdG1hcEltYWdl
OjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNCiAgICAgaWYgKHNpemUpCiAgICAgICAgIGRyYXdGcmFt
ZU1hdGNoaW5nU291cmNlU2l6ZShnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1X
aWR0aCwgYm1wSW5mby5ibUhlaWdodCksICpzaXplLCBDb21wb3NpdGVDb3B5KTsKICAgICBlbHNl
Ci0gICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgs
IGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRo
KCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbXBvc2l0ZUNvcHksIEJsZW5kTW9kZTo6Tm9ybWFs
LCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24o
KSk7CisgICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lk
dGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndp
ZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbXBvc2l0ZUNvcHksIEJsZW5kTW9kZTo6Tm9y
bWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpEZWZhdWx0
KTsKIAogICAgIC8vIERvIGNsZWFudXAKICAgICBjYWlyb19kZXN0cm95KHRhcmdldFJlZik7CkBA
IC0xMDAsNyArMTAwLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3Vy
YwogICAgICAgICBpZiAoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UuZ2V0
KCkpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90
PihzcmNTaXplLndpZHRoKCkpKSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0g
bV9jdXJyZW50RnJhbWU7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7Ci0gICAgICAg
ICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndp
ZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWws
IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigp
KTsKKyAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYs
IHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1v
ZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6
RGVmYXVsdCk7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgQml0
bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmMKIAogICAgIC8vIE5vIGltYWdlIG9mIHRo
ZSBjb3JyZWN0IHNpemUgd2FzIGZvdW5kLCBmYWxsYmFjayB0byBkcmF3aW5nIHRoZSBjdXJyZW50
IGZyYW1lCiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IEJpdG1hcEltYWdlOjpzaXplKCk7Ci0g
ICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndp
ZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1h
bCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KCkpOworICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdl
U2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2Rl
OjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246OkRl
ZmF1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGlyZWN0MkQuY3BwCShy
ZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBC
aXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyYwogICAgICAgICBpZiAoaW1hZ2UgJiYg
Y2xhbXBUbzxpbnQ+KGltYWdlU2l6ZS5oZWlnaHQoKSkgPT0gc3RhdGljX2Nhc3Q8aW50PihzcmNT
aXplLmhlaWdodCgpKSAmJiBjbGFtcFRvPGludD4oaW1hZ2VTaXplLndpZHRoKCkpID09IHN0YXRp
Y19jYXN0PGludD4oc3JjU2l6ZS53aWR0aCgpKSkgewogICAgICAgICAgICAgc2l6ZV90IGN1cnJl
bnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBp
OwotICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwg
c3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9k
ZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24oKSk7CisgICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgw
LjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVP
cCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3Jp
ZW50YXRpb246OkRlZmF1bHQpOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBjdXJyZW50
RnJhbWU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTg5LDcgKzg5LDcgQEAg
dm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyYwogCiAgICAgLy8gTm8gaW1h
Z2Ugb2YgdGhlIGNvcnJlY3Qgc2l6ZSB3YXMgZm91bmQsIGZhbGxiYWNrIHRvIGRyYXdpbmcgdGhl
IGN1cnJlbnQgZnJhbWUKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gQml0bWFwSW1hZ2U6OnNp
emUoKTsKLSAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFn
ZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9k
ZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24oKSk7CisgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4w
ZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBC
bGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRh
dGlvbjo6RGVmYXVsdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZl
SW1hZ2VEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTAyLDcgKzEwMiw3IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENv
bG9yKGMKICAgICByZXR1cm4gQ29sb3IoKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50
U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBi
bGVuZE1vZGUsIGNvbnN0IEltYWdlT3JpZW50YXRpb24mIG9yaWVudGF0aW9uKQordm9pZCBkcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRl
T3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7
CiAgICAgYXV0byBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAko
cmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFn
ZUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgRHJhZ0ltYWdlUmVmIGRp
c3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbgogICAgIHJldHVybiBpbWFnZTsKIH0KIAotRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1hZ2UsIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbikKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2Uo
SW1hZ2UqIGltYWdlLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIHJldHVybiBpbWFnZS0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzgs
NyArNzgsNyBAQCBEcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmCiAKIHN0
YXRpYyBmbG9hdCBtYXhpbXVtQWxsb3dlZERyYWdJbWFnZUFyZWEgPSA2MDAgKiAxMDI0OwogCi1E
cmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWFnZSwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uKQorRHJhZ0ltYWdlUmVmIGNyZWF0ZURy
YWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1hZ2UsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRp
b24pCiB7CiAgICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPndpZHRoKCkgfHwgIWltYWdlLT5oZWln
aHQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTk2LDkgKzk2LDcgQEAgRHJhZ0ltYWdlUmVm
IGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbQogICAgICAgICBHcmFwaGljc0NvbnRleHQgY29u
dGV4dChyZW5kZXJlckNvbnRleHQuQ0dDb250ZXh0KTsKICAgICAgICAgY29udGV4dC50cmFuc2xh
dGUoMCwgaW1hZ2VTaXplLmhlaWdodCk7CiAgICAgICAgIGNvbnRleHQuc2NhbGUoeyBhZGp1c3Rl
ZEltYWdlU2NhbGUsIC1hZGp1c3RlZEltYWdlU2NhbGUgfSk7Ci0gICAgICAgIEltYWdlUGFpbnRp
bmdPcHRpb25zIHBhaW50aW5nT3B0aW9uczsKLSAgICAgICAgcGFpbnRpbmdPcHRpb25zLm1fb3Jp
ZW50YXRpb25EZXNjcmlwdGlvbiA9IG9yaWVudGF0aW9uOwotICAgICAgICBjb250ZXh0LmRyYXdJ
bWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoKSwgcGFpbnRpbmdPcHRpb25zKTsKKyAgICAgICAgY29u
dGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFBvaW50KCksIEltYWdlUGFpbnRpbmdPcHRpb25z
KG9yaWVudGF0aW9uKSk7CiAgICAgfV07CiAgICAgcmV0dXJuIGltYWdlQ29weS5DR0ltYWdlOwog
fQpAQCAtMjc0LDcgKzI3Miw3IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzY2FsZURyYWdJbWFn
ZShSZXQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNy
ZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSosIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
bikKK1JldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2Uq
LCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIHJldHVybiBudWxscHRyOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCShyZXZpc2lvbiAyNDg0
NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MiwxOSArOTIsMTggQEAgUmV0YWluUHRyPE5TSW1hZ2U+IGRpc3NvbHZl
RHJhZ0ltYWdlVG9GcgogICAgIHJldHVybiBkaXNzb2x2ZWRJbWFnZTsKIH0KICAgICAgICAgCi1S
ZXRhaW5QdHI8TlNJbWFnZT4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWFnZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQorUmV0YWluUHRyPE5TSW1h
Z2U+IGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1hZ2UsIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCiB7CiAgICAgRmxvYXRTaXplIHNpemUgPSBpbWFnZS0+c2l6ZSgpOwog
CiAgICAgaWYgKGlzPEJpdG1hcEltYWdlPigqaW1hZ2UpKSB7Ci0gICAgICAgIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb247CiAgICAgICAgIEJpdG1hcEltYWdlJiBiaXRtYXBJbWFnZSA9IGRv
d25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2UpOwogICAgICAgICBJbnRTaXplIHNpemVSZXNwZWN0
aW5nT3JpZW50YXRpb24gPSBiaXRtYXBJbWFnZS5zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCk7
CiAKLSAgICAgICAgaWYgKGRlc2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0g
UmVzcGVjdEltYWdlT3JpZW50YXRpb24pCisgICAgICAgIGlmIChvcmllbnRhdGlvbiA9PSBJbWFn
ZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UpCiAgICAgICAgICAgICBvcmllbnRhdGlvbiA9IGJpdG1h
cEltYWdlLm9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCk7CiAKLSAgICAgICAgaWYgKG9yaWVu
dGF0aW9uICE9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKSB7CisgICAgICAgIGlmIChvcmllbnRh
dGlvbiAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKSB7CiAgICAgICAgICAgICAvLyBDb25zdHJ1
Y3QgYSBjb3JyZWN0bHktcm90YXRlZCBjb3B5IG9mIHRoZSBpbWFnZSB0byB1c2UgYXMgdGhlIGRy
YWcgaW1hZ2UuCiAgICAgICAgICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoRmxvYXRQb2ludCgpLCBz
aXplUmVzcGVjdGluZ09yaWVudGF0aW9uKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTgsNyArMTE4LDcgQEAgZXhpdDoKICAgICByZXR1cm4gaGJtcC5sZWFrKCk7CiB9CiAg
ICAgCi1EcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICBIV25kREMgZGMo
MCk7CiAgICAgYXV0byB3b3JraW5nREMgPSBhZG9wdEdESU9iamVjdCg6OkNyZWF0ZUNvbXBhdGli
bGVEQyhkYykpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNh
aXJvV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJh
Z0ltYWdlQ2Fpcm9XaW4uY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYs
NyArMTQ2LDcgQEAgZXhpdDoKICAgICByZXR1cm4gaGJtcC5sZWFrKCk7CiB9CiAgICAgCi1EcmFn
SW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbikKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2Uo
SW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICBIV25kREMgZGMoMCk7CiAgICAg
YXV0byB3b3JraW5nREMgPSBhZG9wdEdESU9iamVjdCg6OkNyZWF0ZUNvbXBhdGlibGVEQyhkYykp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZURpcmVjdDJELmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlRGly
ZWN0MkQuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRHJhZ0ltYWdlRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBA
IERyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYKICAgICByZXR1cm4gaGJt
cC5sZWFrKCk7CiB9CiAKLURyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1h
Z2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorRHJhZ0ltYWdlUmVmIGNyZWF0
ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAg
IEhXbmREQyBkYyhudWxscHRyKTsKICAgICBhdXRvIHdvcmtpbmdEQyA9IGFkb3B0R0RJT2JqZWN0
KDo6Q3JlYXRlQ29tcGF0aWJsZURDKGRjKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJldmlzaW9uIDI0ODQ0MikKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk1NSw3ICs5NTUsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludEZpbGxMYXllCiAKICAgICAgICAgICAgIGF1dG8gaW50ZXJwb2xhdGlvbiA9IGNob29zZUlu
dGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsICppbWFnZSwgJmJnTGF5ZXIsIGdlb21ldHJ5LnRp
bGVTaXplKCkpOwogICAgICAgICAgICAgYXV0byBkZWNvZGluZ01vZGUgPSBkZWNvZGluZ01vZGVG
b3JJbWFnZURyYXcoKmltYWdlLCBwYWludEluZm8pOwotICAgICAgICAgICAgYXV0byBkcmF3UmVz
dWx0ID0gY29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCks
IHRvTGF5b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNp
emUoKSwgZ2VvbWV0cnkuc3BhY2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0
ZU9wLCBiZ0xheWVyLmJsZW5kTW9kZSgpLCBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbigpLCBpbnRlcnBvbGF0aW9uKSk7CisgICAgICAgICAgICBhdXRvIGRyYXdSZXN1
bHQgPSBjb250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwg
dG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6
ZSgpLCBnZW9tZXRyeS5zcGFjZVNpemUoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRl
T3AsIGJnTGF5ZXIuYmxlbmRNb2RlKCksIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbjo6
RGVmYXVsdCwgaW50ZXJwb2xhdGlvbikpOwogICAgICAgICAgICAgaWYgKGRyYXdSZXN1bHQgPT0g
SW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1ZXN0RGVjb2RpbmcpIHsKICAgICAgICAgICAgICAgICBB
U1NFUlQoYmdJbWFnZS0+aXNDYWNoZWRJbWFnZSgpKTsKICAgICAgICAgICAgICAgICBiZ0ltYWdl
LT5jYWNoZWRJbWFnZSgpLT5hZGRDbGllbnRXYWl0aW5nRm9yQXN5bmNEZWNvZGluZygqdGhpcyk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCShyZXZp
c2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMzAsMTYgKzIwMzAsMTggQEAgYm9vbCBSZW5kZXJFbGVt
ZW50OjpjaGVja0ZvclJlcGFpbnREdXJpbgogICAgIHJldHVybiAhc2V0dGluZ3MoKS5yZXBhaW50
T3V0c2lkZUxheW91dEVuYWJsZWQoKTsKIH0KIAotUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVt
IFJlbmRlckVsZW1lbnQ6OnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgY29uc3QKK0lt
YWdlT3JpZW50YXRpb24gUmVuZGVyRWxlbWVudDo6aW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0CiB7
CiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKICAgICAvLyBUaGlz
IGNhbiBvbmx5IGJlIGVuYWJsZWQgZm9yIHBvcnRzIHdoaWNoIGhvbm9yIHRoZSBvcmllbnRhdGlv
biBmbGFnIGluIHRoZWlyIGRyYXdpbmcgY29kZS4KICAgICBpZiAoZG9jdW1lbnQoKS5pc0ltYWdl
RG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uOworICAg
ICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlOwogI2VuZGlmCiAgICAgLy8g
UmVzcGVjdCB0aGUgaW1hZ2UncyBvcmllbnRhdGlvbiBpZiBpdCdzIGJlaW5nIHVzZWQgYXMgYSBm
dWxsLXBhZ2UgaW1hZ2Ugb3IgaXQncwogICAgIC8vIGFuIDxpbWc+IGFuZCB0aGUgc2V0dGluZyB0
byByZXNwZWN0IGl0IGV2ZXJ5d2hlcmUgaXMgc2V0LgotICAgIHJldHVybiBzZXR0aW5ncygpLnNo
b3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgJiYgaXM8SFRNTEltYWdlRWxlbWVudD4oZWxl
bWVudCgpKSA/IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uIDogRG9Ob3RSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbjsKKyAgICBpZiAoc2V0dGluZ3MoKS5zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bigpICYmIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkpCisgICAgICAgIHJldHVybiBJ
bWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2U7CisgICAgcmV0dXJuIHN0eWxlKCkuaW1hZ2VPcmll
bnRhdGlvbigpOwogfQogCiB2b2lkIFJlbmRlckVsZW1lbnQ6OmFkanVzdEZyYWdtZW50ZWRGbG93
U3RhdGVPbkNvbnRhaW5pbmdCbG9ja0NoYW5nZUlmTmVlZGVkKCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjA0
LDcgKzIwNCw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrRm9y
Rml4ZWRQb3NpdGlvbigpIGNvbnN0OwogICAgIFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2tG
b3JBYnNvbHV0ZVBvc2l0aW9uKCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZU9yaWVudGF0aW9uIGltYWdlT3JpZW50YXRpb24o
KSBjb25zdDsKIAogICAgIHZvaWQgcmVtb3ZlRnJvbVJlbmRlckZyYWdtZW50ZWRGbG93KCk7CiAg
ICAgdmlydHVhbCB2b2lkIHJlc2V0RW5jbG9zaW5nRnJhZ21lbnRlZEZsb3dBbmRDaGlsZEluZm9J
bmNsdWRpbmdEZXNjZW5kYW50cyhSZW5kZXJGcmFnbWVudGVkRmxvdyopOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCShyZXZp
c2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsOCArMjI0LDcgQEAgdm9pZCBSZW5kZXJF
bWJlZGRlZE9iamVjdDo6cGFpbnRTbmFwc2hvdAogICAgICAgICByZXR1cm47CiAKICAgICBJbnRl
cnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uID0gY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxp
dHkoY29udGV4dCwgaW1hZ2UsICZpbWFnZSwgYWxpZ25lZFJlY3Quc2l6ZSgpKTsKLSAgICBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihzaG91bGRSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbigpLCBzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7Ci0gICAg
Y29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9u
cyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCBpbnRlcnBvbGF0aW9uKSk7CisgICAgY29udGV4dC5k
cmF3SW1hZ2UoaW1hZ2UsIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhpbWFnZU9y
aWVudGF0aW9uKCksIGludGVycG9sYXRpb24pKTsKIH0KIAogdm9pZCBSZW5kZXJFbWJlZGRlZE9i
amVjdDo6cGFpbnRDb250ZW50cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjksMTEgKzQ2OSw3IEBAIHZvaWQgUmVu
ZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmYKICAgICAgICAgICAgICAgICAgICAgY2Vu
dGVyWSA9IDA7CiAgICAgICAgICAgICAgICAgaW1hZ2VPZmZzZXQgPSBMYXlvdXRTaXplKGxlZnRC
b3JkZXIgKyBsZWZ0UGFkICsgY2VudGVyWCArIG1pc3NpbmdJbWFnZUJvcmRlcldpZHRoLCB0b3BC
b3JkZXIgKyB0b3BQYWQgKyBjZW50ZXJZICsgbWlzc2luZ0ltYWdlQm9yZGVyV2lkdGgpOwogCi0g
ICAgICAgICAgICAgICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVz
Y3JpcHRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSk7Ci0jaWYgRU5BQkxFKENT
U19JTUFHRV9PUklFTlRBVElPTikKLSAgICAgICAgICAgICAgICBvcmllbnRhdGlvbkRlc2NyaXB0
aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsK
LSNlbmRpZgotICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc25hcFJl
Y3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGlt
YWdlU2l6ZSksIGRldmljZVNjYWxlRmFjdG9yKSwgb3JpZW50YXRpb25EZXNjcmlwdGlvbik7Cisg
ICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBzbmFwUmVjdFRvRGV2aWNl
UGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VTaXplKSwg
ZGV2aWNlU2NhbGVGYWN0b3IpLCBpbWFnZU9yaWVudGF0aW9uKCkpOwogICAgICAgICAgICAgICAg
IGVycm9yUGljdHVyZURyYXduID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIApAQCAtNjM1LDkgKzYz
MSw4IEBAIEltYWdlRHJhd1Jlc3VsdCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmUKICAgICBpZiAo
aXM8Qml0bWFwSW1hZ2U+KGltYWdlKSkKICAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCpp
bWFnZSkudXBkYXRlRnJvbVNldHRpbmdzKHNldHRpbmdzKCkpOwogCi0gICAgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdEltYWdl
T3JpZW50YXRpb24oKSwgc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogICAgIGF1dG8gZGVj
b2RpbmdNb2RlID0gZGVjb2RpbmdNb2RlRm9ySW1hZ2VEcmF3KCppbWFnZSwgcGFpbnRJbmZvKTsK
LSAgICBhdXRvIGRyYXdSZXN1bHQgPSBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZSgqaW1n
LCByZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
OjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgb3JpZW50YXRpb25EZXNjcmlwdGlvbiwgaW50ZXJwb2xh
dGlvbikpOworICAgIGF1dG8gZHJhd1Jlc3VsdCA9IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0lt
YWdlKCppbWcsIHJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdNb2RlLCBpbWFnZU9yaWVudGF0aW9uKCksIGludGVy
cG9sYXRpb24pKTsKICAgICBpZiAoZHJhd1Jlc3VsdCA9PSBJbWFnZURyYXdSZXN1bHQ6OkRpZFJl
cXVlc3REZWNvZGluZykKICAgICAgICAgaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZEltYWdlKCktPmFk
ZENsaWVudFdhaXRpbmdGb3JBc3luY0RlY29kaW5nKCp0aGlzKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDI0
ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDc2LDcgKzI0NzYsNyBAQCBib29sIFJlbmRlckxheWVyQmFj
a2luZzo6aXNEaXJlY3RseUNvbXBvCiAgICAgICAgIGlmICghaXM8Qml0bWFwSW1hZ2U+KGltYWdl
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAoZG93bmNhc3Q8Qml0
bWFwSW1hZ2U+KCppbWFnZSkub3JpZW50YXRpb25Gb3JDdXJyZW50RnJhbWUoKSAhPSBEZWZhdWx0
SW1hZ2VPcmllbnRhdGlvbikKKyAgICAgICAgaWYgKGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1h
Z2UpLm9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgIT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9u
ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIChQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKFdQRSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NSw4ICsxNDUsNyBAQCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWlu
dFNuYXBzCiAgICAgICAgIHJldHVybjsKIAogICAgIEludGVycG9sYXRpb25RdWFsaXR5IGludGVy
cG9sYXRpb24gPSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250ZXh0LCAqaW1hZ2UsIGlt
YWdlLCBhbGlnbmVkUmVjdC5zaXplKCkpOwotICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
biBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCks
IHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1h
Z2UsIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0
aW9uLCBpbnRlcnBvbGF0aW9uKSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBhbGln
bmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoaW1hZ2VPcmllbnRhdGlvbigpLCBpbnRlcnBv
bGF0aW9uKSk7CiB9CiAKIEN1cnNvckRpcmVjdGl2ZSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6
Z2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgQ3Vyc29yJiBvdmVycmlkZUN1cnNv
cikgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzUyLDcgKzc1Miw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBX
ZWJDb3JlOjppc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKCkpOyB9CiAgICAg
Ym9vbCBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6
OmlzRmxpcHBlZFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKCkpOyB9CiAKLSAgICBJbWFnZU9yaWVu
dGF0aW9uRW51bSBpbWFnZU9yaWVudGF0aW9uKCkgY29uc3Q7CisgICAgSW1hZ2VPcmllbnRhdGlv
biBpbWFnZU9yaWVudGF0aW9uKCkgY29uc3Q7CiAKICAgICBJbWFnZVJlbmRlcmluZyBpbWFnZVJl
bmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdlUmVuZGVyaW5nPihtX3Jh
cmVJbmhlcml0ZWREYXRhLT5pbWFnZVJlbmRlcmluZyk7IH0KIApAQCAtOTUxLDcgKzk1MSw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKLSAg
ICB2b2lkIHNldEltYWdlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbkVudW0gdikgeyBTRVRf
VkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGltYWdlT3JpZW50YXRpb24sIHN0YXRpY19jYXN0PGlu
dD4odikpOyB9CisgICAgdm9pZCBzZXRJbWFnZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24g
dikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGltYWdlT3JpZW50YXRpb24sIHN0YXRp
Y19jYXN0PGludD4odikpOyB9CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0SW1hZ2VSZW5kZXJpbmco
SW1hZ2VSZW5kZXJpbmcgdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGltYWdlUmVu
ZGVyaW5nLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odikpOyB9CkBAIC0xNTgyLDcgKzE1ODIsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIE9wdGlvblNldDxUZXh0RW1waGFzaXNQb3NpdGlvbj4gaW5p
dGlhbFRleHRFbXBoYXNpc1Bvc2l0aW9uKCkgeyByZXR1cm4geyBUZXh0RW1waGFzaXNQb3NpdGlv
bjo6T3ZlciwgVGV4dEVtcGhhc2lzUG9zaXRpb246OlJpZ2h0IH07IH0KICAgICBzdGF0aWMgUnVi
eVBvc2l0aW9uIGluaXRpYWxSdWJ5UG9zaXRpb24oKSB7IHJldHVybiBSdWJ5UG9zaXRpb246OkJl
Zm9yZTsgfQogICAgIHN0YXRpYyBMaW5lQm94Q29udGFpbiBpbml0aWFsTGluZUJveENvbnRhaW4o
KSB7IHJldHVybiBMaW5lQm94Q29udGFpbkJsb2NrIHwgTGluZUJveENvbnRhaW5JbmxpbmUgfCBM
aW5lQm94Q29udGFpblJlcGxhY2VkOyB9Ci0gICAgc3RhdGljIEltYWdlT3JpZW50YXRpb25FbnVt
IGluaXRpYWxJbWFnZU9yaWVudGF0aW9uKCkgeyByZXR1cm4gT3JpZ2luVG9wTGVmdDsgfQorICAg
IHN0YXRpYyBJbWFnZU9yaWVudGF0aW9uIGluaXRpYWxJbWFnZU9yaWVudGF0aW9uKCkgeyByZXR1
cm4gSW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVsdDsgfQogICAgIHN0YXRpYyBJbWFnZVJlbmRlcmlu
ZyBpbml0aWFsSW1hZ2VSZW5kZXJpbmcoKSB7IHJldHVybiBJbWFnZVJlbmRlcmluZzo6QXV0bzsg
fQogICAgIHN0YXRpYyBJbWFnZVJlc29sdXRpb25Tb3VyY2UgaW5pdGlhbEltYWdlUmVzb2x1dGlv
blNvdXJjZSgpIHsgcmV0dXJuIEltYWdlUmVzb2x1dGlvblNvdXJjZTo6U3BlY2lmaWVkOyB9CiAg
ICAgc3RhdGljIEltYWdlUmVzb2x1dGlvblNuYXAgaW5pdGlhbEltYWdlUmVzb2x1dGlvblNuYXAo
KSB7IHJldHVybiBJbWFnZVJlc29sdXRpb25TbmFwOjpOb25lOyB9CkBAIC0yMDkxLDEyICsyMDkx
LDEyIEBAIGlubGluZSBib29sIFJlbmRlclN0eWxlOjpoYXNJbmxpbmVDb2x1bW4KICAgICByZXR1
cm4gYXhpcyA9PSBDb2x1bW5BeGlzOjpBdXRvIHx8IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PT0gKGF4aXMgPT0gQ29sdW1uQXhpczo6SG9yaXpvbnRhbCk7CiB9CiAKLWlubGluZSBJbWFnZU9y
aWVudGF0aW9uRW51bSBSZW5kZXJTdHlsZTo6aW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0Citpbmxp
bmUgSW1hZ2VPcmllbnRhdGlvbiBSZW5kZXJTdHlsZTo6aW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0
CiB7CiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8SW1hZ2VPcmllbnRhdGlvbkVudW0+KG1fcmFyZUluaGVyaXRlZERhdGEtPmltYWdlT3Jp
ZW50YXRpb24pOworICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKG1fcmFyZUluaGVyaXRlZERh
dGEtPmltYWdlT3JpZW50YXRpb24pOwogI2Vsc2UKLSAgICByZXR1cm4gRGVmYXVsdEltYWdlT3Jp
ZW50YXRpb247CisgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246OkRlZmF1bHQ7CiAjZW5kaWYK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZp
c2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNyArMjAyLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IFNWR0lt
YWdlOjpkcmF3Rm9yQ29udGFpbgogCiAgICAgZnJhbWVWaWV3KCktPnNjcm9sbFRvRnJhZ21lbnQo
aW5pdGlhbEZyYWdtZW50VVJMKTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCByZXN1bHQgPSBkcmF3
KGNvbnRleHQsIGRzdFJlY3QsIHNjYWxlZFNyYywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwor
ICAgIEltYWdlRHJhd1Jlc3VsdCByZXN1bHQgPSBkcmF3KGNvbnRleHQsIGRzdFJlY3QsIHNjYWxl
ZFNyYywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywg
SW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVsdCk7CiAKICAgICBzZXRJbWFnZU9ic2VydmVyKG9ic2Vy
dmVyKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjIxLDcgKzIyMSw3IEBAIE5hdGl2ZUltYWdl
UHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckMKICAgICBpZiAoIWJ1ZmZlcikgLy8gZmFpbGVk
IHRvIGFsbG9jYXRlIGltYWdlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgZHJhdyhi
dWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCByZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJs
ZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24oKSk7CisgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCBy
ZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpEZWZhdWx0KTsKIAogICAgIC8vIEZJ
WE1FOiBXSyhCdWcgMTEzNjU3KTogV2Ugc2hvdWxkIHVzZSBEb250Q29weUJhY2tpbmdTdG9yZSBo
ZXJlLgogICAgIHJldHVybiBidWZmZXItPmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKS0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCBOYXRpdmVJbWFn
ZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2UoY29uCiAgICAgUGxhdGZvcm1Db250ZXh0RGlyZWN0
MkQgcGxhdGZvcm1Db250ZXh0KG5hdGl2ZUltYWdlVGFyZ2V0LmdldCgpKTsKICAgICBHcmFwaGlj
c0NvbnRleHQgbG9jYWxDb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6
Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAKLSAgICBkcmF3KGxvY2Fs
Q29udGV4dCwgcmVjdCgpLCByZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6
Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24oKSk7CisgICAgZHJhdyhsb2NhbENvbnRleHQsIHJlY3QoKSwgcmVjdCgpLCBDb21wb3Np
dGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91
cywgSW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVsdCk7CiAKICAgICByZXR1cm4gbmF0aXZlSW1hZ2U7
CiB9CkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250
YWluZXIoRwogICAgIGltYWdlLT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRT
cmNSZWN0LCB1bnNjYWxlZFBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3Np
dGVPcCwgYmxlbmRNb2RlKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikK
K0ltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdN
b2RlLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1
cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmgJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzdGFydEFuaW1hdGlvblRpbWVyRmlyZWQoKTsKIAogICAgIGV4cGxp
Y2l0IFNWR0ltYWdlKEltYWdlT2JzZXJ2ZXImKTsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHRvUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIGZpbmFsOworICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgdG9SZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01v
ZGUsIEltYWdlT3JpZW50YXRpb24pIGZpbmFsOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3Rm9y
Q29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXpl
LCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogICAgIHZvaWQgZHJhd1BhdHRlcm5Gb3JDb250YWluZXIo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCBj
b250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLAogICAgICAgICBDb21wb3NpdGVPcGVyYXRv
ciwgY29uc3QgRmxvYXRSZWN0JiwgQmxlbmRNb2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAkocmV2aXNpb24g
MjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFp
bmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBGbG9hdFNpemUgU1ZHSW1h
Z2VGb3JDb250YWluZXI6OnNpemUoKSBjCiB9CiAKIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZUZv
ckNvbnRhaW5lcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwKLSAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbikKKyAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGlu
Z01vZGUsIEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgcmV0dXJuIG1faW1hZ2UtPmRyYXdGb3JD
b250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX2NvbnRhaW5lclpvb20sIG1faW5p
dGlhbEZyYWdtZW50VVJMLCBkc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcCwgYmxlbmRNb2Rl
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZUZvckNvbnRhaW5lci5oCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyAr
NTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1faW1hZ2UtPmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNp
b25zKGludHJpbnNpY1dpZHRoLCBpbnRyaW5zaWNIZWlnaHQsIGludHJpbnNpY1JhdGlvKTsKICAg
ICB9CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
LCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgZmluYWw7CisgICAg
SW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdN
b2RlLCBJbWFnZU9yaWVudGF0aW9uKSBmaW5hbDsKIAogICAgIHZvaWQgZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNp
b24gMjQ4NDQ3KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMyBAQAorMjAxOS0wOC0wOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxh
d2FAYXBwbGUuY29tPgorCisgICAgICAgIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uIHNo
b3VsZCBiZSBhIHZhbHVlIGluIEltYWdlT3JpZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDU1MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjppbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24pOgor
CiAyMDE5LTA4LTA4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtGVFddIEdldCBXZWJLaXQsIFdlYktpdDIsIGFuZCBNaW5pQnJvd3NlciBidWlsZGluZyBh
bmQgZXhlY3V0aW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI2MzgsOCArMjYzOCw3IEBAIHN0YXRpYyB2b2lkIGltYWdlUG9zaXRpb25JbmZvcm1hdGlvbihX
ZWIKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9IHJlbmRlckltYWdlLnNob3VsZFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uKCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoKmlt
YWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdo
dCgpKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJl
Y3QoMCwgMCwgYml0bWFwU2l6ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSwgcmVuZGVy
SW1hZ2UuaW1hZ2VPcmllbnRhdGlvbigpKTsKICAgICBpbmZvLmltYWdlID0gc2hhcmVkQml0bWFw
OwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375865</attachid>
            <date>2019-08-08 17:14:25 -0700</date>
            <delta_ts>2019-08-08 17:23:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200553-20190808171424.patch</filename>
            <type>text/plain</type>
            <size>95565</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2MyBAQAorMjAxOS0wOC0wOCAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIHNob3VsZFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uIHNob3VsZCBiZSBhIHZhbHVlIGluIEltYWdlT3JpZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDU1
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaXMgYSBzdGVwIHRvd2FyZHMgaW1wbGVtZW50aW5nIHRoZSBjc3MgaW1hZ2Utb3JpZW50
YXRpb24uCisKKyAgICAgICAgSW5zdGVhZCBvZiBoYXZpbmcgSW1hZ2VPcmllbnRhdGlvbkVudW0s
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiwKKyAgICAgICAgSW1hZ2VPcmllbnRhdGlvbiBh
bmQgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHdlIGFyZSBnb2luZyB0byBoYXZlIGEKKyAg
ICAgICAgc2luZ2xlIHN0cnVjdHVyZSBuYW1lZCAnSW1hZ2VPcmllbnRhdGlvbicgd2hpY2ggaXMg
YSB3cmFwcGVyIGZvcgorICAgICAgICBJbWFnZU9yaWVudGF0aW9uRW51bS4gVGhlIHN0cnVjdCB3
aWxsIGhhdmUgYSBjb25zdHJ1Y3RvciBhbmQgY2FzdGluZworICAgICAgICBvcGVyYXRvciBzdWNo
IHRoYXQgYXNzaWduaW5nIGFuIGVudW0gdmFsdWUgYW5kIGNvbXBhcmluZyB3aXRoIGFuIGVudW0K
KyAgICAgICAgdmFsdWUgd2lsbCBiZSBkb25lIGltcGxpY2l0bHkuCisKKyAgICAgICAgVGhlIFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uIHdpbGwgYmUgcmVwcmVzZW50ZWQgYXMgYSBuZXcgZW51bSB2
YWx1ZSBuYW1lZAorICAgICAgICAnRnJvbUltYWdlJyBpbiBJbWFnZU9yaWVudGF0aW9uRW51bS4K
KworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRHJhZ0ltYWdlIGNvbnN0KToKKyAgICAgICAg
KiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52
YXNFbGVtZW50OjpwYWludCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjppbWFnZVNpemVGb3JSZW5kZXJlciBj
b25zdCk6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnQ29udHJvbGxlcjo6ZG9JbWFnZURyYWcpOgorICAgICAgICAqIHBsYXRmb3JtL0Ry
YWdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNo
b3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9EcmFnSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Ny
b3NzZmFkZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpk
cmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YWRpZW50SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50
SW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVBhaW50aW5nT3B0aW9uczo6SW1hZ2VQYWludGluZ09wdGlvbnMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd0ltYWdlSW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3
VGlsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlT3JpZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRp
b246OkltYWdlT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlv
bjo6ZnJvbUVYSUZPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0
aW9uOjpvcGVyYXRvciBpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRh
dGlvbjo6dXNlc1dpZHRoQXNIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VP
cmllbnRhdGlvbjo6dHJhbnNmb3JtRnJvbURlZmF1bHQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VPcmllbnRhdGlvbjo6aXNWYWxpZE9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlT3JpZW50YXRpb246OmlzVmFsaWRFWElGT3JpZW50YXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uOjpJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uOjpzZXRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb246OnJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbjo6c2V0SW1hZ2VPcmllbnRhdGlvbkVudW0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uOjppbWFnZU9yaWVudGF0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb246OmZyb21FWElGVmFsdWUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbjo6b3BlcmF0b3Ig
SW1hZ2VPcmllbnRhdGlvbkVudW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VPcmllbnRhdGlvbjo6b3BlcmF0b3I9PSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uOjpvcGVyYXRvciE9IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZVNvdXJjZTo6ZHVtcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFt
ZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkSW1hZ2VH
ZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZl
SW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZG
T2JqQzo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05h
dGl2ZUltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd05hdGl2ZUltYWdlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6b3JpZW50YXRpb25Gcm9tUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXJDRzo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXggY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRy
YXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6aGFuZGxlTWVzc2FnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0VmlkZW9Tb3VyY2VPcmll
bnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjp1cGRhdGVUZXh0dXJlTWFwcGVyRmxhZ3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1l
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OnVw
ZGF0ZVRleHR1cmVTcGFjZU1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RleHR1cmVD
b3BpZXJHU3RyZWFtZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJl
YW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0Ry
YWdJbWFnZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW06CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9t
SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVE
cmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VEaXJl
Y3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRWxlbWVudDo6aW1hZ2VPcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJFbGVtZW50OjpzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWlu
dFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6aXNEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZSBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjpzZXRJbWFnZU9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aW1hZ2VPcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgICogc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3
Rm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9TVkdJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhdyk6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6CisKIDIwMTkt
MDgtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCBhZGRyZXNzIHBvc3QtbGFuZGluZyByZXZpZXcgY29tbWVudHMgZm9yIHIyNDg0MzEuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4MTcsNyArMTgxNyw2IEBAIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQ4NDQyKQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTc5MCw3ICsxMTc5MCw2IEBACiAJCUE4NzFERkUxMEExNTM3NkIwMEIx
MkE2OCAvKiBSZW5kZXJXaWRnZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbmRlcldpZGdldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4
NzQ4QkRGMTJDQkYyREMwMDFGQkE0MSAvKiBIYXNoVG9vbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSGFzaFRvb2xzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlT3JpZW50YXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQTg3NDhENzQxMkNDM0Y4OTAwMUZCQTQxIC8qIEltYWdlT3JpZW50
YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VPcmll
bnRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4ODA1QUYxMTZDOTZB
RUEwMDBFOUQ5OCAvKiBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnB1dFN0cmVhbVByZXByb2Nlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
ODgyREExRjE1OTM4NDZBMDAwMTE1RUQgLyogQ1NTVG9TdHlsZU1hcC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NUb1N0eWxlTWFwLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTg4MkRBMjIxNTkzODQ4RDAwMDExNUVEIC8qIENTU1RvU3R5bGVN
YXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTVG9TdHlsZU1hcC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ1NDcsNyArMjQ1NDYsNiBAQAogCQkJCTU1
NzZBNTYyMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCAqLywKIAkJCQk1NTc2QTU2
MzFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5oICovLAogCQkJCUJDN0Y0NEE3MEI5RTMy
NEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVyLmggKi8sCi0JCQkJQTg3NDhENzQxMkNDM0Y4OTAw
MUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uY3BwICovLAogCQkJCUE4NzQ4RDY2MTJDQzM3NjMw
MDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggKi8sCiAJCQkJNDkyOTFFNEExMzQxNzJDODAw
RTc1M0RFIC8qIEltYWdlUmVuZGVyaW5nTW9kZS5oICovLAogCQkJCTU1NDY3NTc3MUZEMUZDMUEw
MDNCMTBCMCAvKiBJbWFnZVNvdXJjZS5jcHAgKi8sCkBAIC0yNTU0MiwxMSArMjU1NDAsMTEgQEAK
IAkJCQlDMjRBNTdCQjIxRkVBRkVBMDA0QzZERDEgLyogV0hMU0xQcmVwYXJlLmggKi8sCiAJCQkJ
NTIyRTFBMTcyMjk3RDZENDAwRTVEMzZBIC8qIFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1l
cy5jcHAgKi8sCiAJCQkJNTIyRTFBMTkyMjk3RDZENDAwRTVEMzZBIC8qIFdITFNMUHJlc2VydmVW
YXJpYWJsZUxpZmV0aW1lcy5oICovLAotCQkJCTUyNkIzRjAxMjJGQjdCREQwMDc2RDM3RCAvKiBX
SExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwICovLAotCQkJ
CTUyNkIzRjAzMjJGQjdCREUwMDc2RDM3RCAvKiBXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFy
ZExpYnJhcnlGdW5jdGlvbnMuaCAqLywKIAkJCQlDMjFCRjczQTIxQ0Q4RDcwMDAyMjc5NzkgLyog
V0hMU0xQcm9ncmFtLmggKi8sCiAJCQkJMUNBQTgyRjYyMjQyQUUwNTAwRTg0QkJCIC8qIFdITFNM
UHJvcGVydHlSZXNvbHZlci5jcHAgKi8sCiAJCQkJMUNBQTgyRjcyMjQyQUUwNTAwRTg0QkJCIC8q
IFdITFNMUHJvcGVydHlSZXNvbHZlci5oICovLAorCQkJCTUyNkIzRjAxMjJGQjdCREQwMDc2RDM3
RCAvKiBXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwICov
LAorCQkJCTUyNkIzRjAzMjJGQjdCREUwMDc2RDM3RCAvKiBXSExTTFBydW5lVW5yZWFjaGFibGVT
dGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuaCAqLywKIAkJCQkxQ0EwQzJFMDIxRUVCNUY1MDBBMTE4
NjAgLyogV0hMU0xSZWN1cnNpb25DaGVja2VyLmNwcCAqLywKIAkJCQkxQ0EwQzJERTIxRUVCNUY0
MDBBMTE4NjAgLyogV0hMU0xSZWN1cnNpb25DaGVja2VyLmggKi8sCiAJCQkJQzIzNEE5QUQyMUU5
MkMxOTAwM0M5ODREIC8qIFdITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuY3BwICovLApJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDMsNyAr
NTQzLDcgQEAgRHJhZ0ltYWdlUmVmIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRHJhZ0ltYQogICAgIGxv
Y2F0aW9uID0gbV9kcmFnTG9jYXRpb247CiAKICAgICBpZiAobV9kcmFnSW1hZ2UpCi0gICAgICAg
IHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UobV9kcmFnSW1hZ2UtPmltYWdlKCksIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZURyYWdJ
bWFnZUZyb21JbWFnZShtX2RyYWdJbWFnZS0+aW1hZ2UoKSwgSW1hZ2VPcmllbnRhdGlvbjo6RGVm
YXVsdCk7CiAKICAgICBpZiAobV9kcmFnSW1hZ2VFbGVtZW50KSB7CiAgICAgICAgIGlmIChGcmFt
ZSogZnJhbWUgPSBtX2RyYWdJbWFnZUVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDg0
NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjEwLDE3ICs2MTAsMTAgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6cGFp
bnQoR3JhcGhpY3NDbwogCiAgICAgICAgIGlmIChzaG91bGRQYWludCkgewogICAgICAgICAgICAg
aWYgKGhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpKSB7Ci0gICAgICAgICAgICAgICAgSW1hZ2VCdWZm
ZXIqIGltYWdlQnVmZmVyID0gYnVmZmVyKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGltYWdlQnVm
ZmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX3ByZXNlbnRlZEltYWdlKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRp
b25EZXNjcmlwdGlvbjsKLSNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgICAg
ICAgICAgICAgICAgICAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0
aW9uRW51bShyZW5kZXJlcigpLT5zdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7Ci0jZW5kaWYK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCptX3ByZXNlbnRlZElt
YWdlLCBzbmFwcGVkSW50UmVjdChyKSwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25E
ZXNjcmlwdGlvbikpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgc25hcHBlZElu
dFJlY3QocikpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobV9wcmVz
ZW50ZWRJbWFnZSkKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKm1fcHJl
c2VudGVkSW1hZ2UsIHNuYXBwZWRJbnRSZWN0KHIpLCByZW5kZXJlcigpLT5pbWFnZU9yaWVudGF0
aW9uKCkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZl
ciA9IGJ1ZmZlcigpKQorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZl
cigqaW1hZ2VCdWZmZXIsIHNuYXBwZWRJbnRSZWN0KHIpKTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgaWYgKGlzR1BVQmFzZWQoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgwLDcg
KzI4MCw3IEBAIEZsb2F0U2l6ZSBDYWNoZWRJbWFnZTo6aW1hZ2VTaXplRm9yUmVuZGUKICAgICBp
ZiAoIW1faW1hZ2UpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBpZiAoaXM8Qml0bWFwSW1h
Z2U+KCptX2ltYWdlKSAmJiByZW5kZXJlciAmJiByZW5kZXJlci0+c2hvdWxkUmVzcGVjdEltYWdl
T3JpZW50YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKKyAgICBpZiAoaXM8Qml0
bWFwSW1hZ2U+KCptX2ltYWdlKSAmJiByZW5kZXJlciAmJiByZW5kZXJlci0+aW1hZ2VPcmllbnRh
dGlvbigpID09IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkKICAgICAgICAgcmV0dXJuIGRv
d25jYXN0PEJpdG1hcEltYWdlPigqbV9pbWFnZSkuc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigp
OwogCiAgICAgaWYgKGlzPFNWR0ltYWdlPigqbV9pbWFnZSkgJiYgc2l6ZVR5cGUgPT0gVXNlZFNp
emUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkocmV2aXNpb24g
MjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExOTcsMTAgKzExOTcsMTAgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZG9J
bWFnZURyYWcoRWxlbWVudAogICAgIGlmICghZWxlbWVudC5yZW5kZXJlcigpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNj
cmlwdGlvbihlbGVtZW50LnJlbmRlcmVyKCktPnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
KCksIGVsZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOworICAg
IEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBlbGVtZW50LnJlbmRlcmVyKCktPmltYWdl
T3JpZW50YXRpb24oKTsKIAogICAgIEltYWdlKiBpbWFnZSA9IGdldEltYWdlKGVsZW1lbnQpOwot
ICAgIGlmIChpbWFnZSAmJiAhbGF5b3V0UmVjdC5pc0VtcHR5KCkgJiYgc2hvdWxkVXNlQ2FjaGVk
SW1hZ2VGb3JEcmFnSW1hZ2UoKmltYWdlKSAmJiAoZHJhZ0ltYWdlID0gRHJhZ0ltYWdlIHsgY3Jl
YXRlRHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLCBlbGVtZW50LnJlbmRlcmVyKCkgPyBvcmllbnRh
dGlvbkRlc2NyaXB0aW9uIDogSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpIH0pKSB7Cisg
ICAgaWYgKGltYWdlICYmICFsYXlvdXRSZWN0LmlzRW1wdHkoKSAmJiBzaG91bGRVc2VDYWNoZWRJ
bWFnZUZvckRyYWdJbWFnZSgqaW1hZ2UpICYmIChkcmFnSW1hZ2UgPSBEcmFnSW1hZ2UgeyBjcmVh
dGVEcmFnSW1hZ2VGcm9tSW1hZ2UoaW1hZ2UsIG9yaWVudGF0aW9uKSB9KSkgewogICAgICAgICBk
cmFnSW1hZ2UgPSBEcmFnSW1hZ2UgeyBmaXREcmFnSW1hZ2VUb01heFNpemUoZHJhZ0ltYWdlLmdl
dCgpLCBsYXlvdXRSZWN0LnNpemUoKSwgbWF4RHJhZ0ltYWdlU2l6ZSgpKSB9OwogICAgICAgICBJ
bnRTaXplIGZpdHRlZFNpemUgPSBkcmFnSW1hZ2VTaXplKGRyYWdJbWFnZS5nZXQoKSk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAkocmV2aXNpb24gMjQ4NDQyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTAyLDIwICsxMDIsMTUgQEAgc3RhdGljIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VG
cm9tUwogICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uOwotI2lmIEVOQUJMRShDU1Nf
SU1BR0VfT1JJRU5UQVRJT04pCisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbjsKICAg
ICBpZiAobm9kZSkgewogICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVu
ZGVyZXIoKTsKICAgICAgICAgaWYgKCFyZW5kZXJlciB8fCAhaXM8UmVuZGVyRWxlbWVudD4ocmVu
ZGVyZXIpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0byYgcmVu
ZGVyRWxlbWVudCA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpyZW5kZXJlcik7Ci0gICAgICAg
IG9yaWVudGF0aW9uLnNldFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKHJlbmRlckVsZW1lbnQuc2hv
dWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSk7Ci0gICAgICAgIG9yaWVudGF0aW9uLnNldElt
YWdlT3JpZW50YXRpb25FbnVtKHJlbmRlckVsZW1lbnQuc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9u
KCkpOworICAgICAgICBvcmllbnRhdGlvbiA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpyZW5k
ZXJlcikuaW1hZ2VPcmllbnRhdGlvbigpOwogICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KG5vZGUpOwotI2VuZGlmCisKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gSW1hZ2VCdWZmZXI6
OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShzbmFwc2hvdCksIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVz
KTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMwNSw3ICsz
MDAsNyBAQCBEcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLURyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2Uo
SW1hZ2UqLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCitEcmFnSW1hZ2VSZWYgY3JlYXRl
RHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRHJhZ0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRHJhZ0ltYWdlLmgJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIERyYWdJbWFn
ZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYKIERyYWdJbWFnZVJlZiBwbGF0Zm9ybUFk
anVzdERyYWdJbWFnZUZvckRldmljZVNjYWxlRmFjdG9yKERyYWdJbWFnZVJlZiwgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IpOwogRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlv
bihEcmFnSW1hZ2VSZWYsIGZsb2F0IGRlbHRhKTsKIAotRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJ
bWFnZUZyb21JbWFnZShJbWFnZSosIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbik7CitEcmFn
SW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VPcmllbnRhdGlv
bik7CiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlRmlsZW5h
bWUoY29uc3QgU3RyaW5nJik7CiAKIFdFQkNPUkVfRVhQT1JUIERyYWdJbWFnZVJlZiBjcmVhdGVE
cmFnSW1hZ2VGb3JOb2RlKEZyYW1lJiwgTm9kZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAkocmV2aXNpb24gMjQ4NDQyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRD
b2xvcigpCiB9CiAjZW5kaWYKIAotSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUs
IERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBk
ZXNjcmlwdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBEZWNvZGlu
Z01vZGUgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAg
IGlmIChkZXN0UmVjdC5pc0VtcHR5KCkgfHwgc3JjUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkBAIC0yNjgsOCArMjY4LDcgQEAgSW1h
Z2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaQogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIAotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24oZGVzY3JpcHRp
b24uaW1hZ2VPcmllbnRhdGlvbigpKTsKLSAgICBpZiAoZGVzY3JpcHRpb24ucmVzcGVjdEltYWdl
T3JpZW50YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKKyAgICBpZiAob3JpZW50
YXRpb24gPT0gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlKQogICAgICAgICBvcmllbnRhdGlv
biA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIAogICAgIGRyYXdO
YXRpdmVJbWFnZShpbWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc2l6
ZSgpKSwgb3AsIG1vZGUsIG9yaWVudGF0aW9uKTsKQEAgLTMwNiw3ICszMDUsNyBAQCB2b2lkIEJp
dG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvCiAgICAgICAgIC8vIFRlbXBvcmFyaWx5
IHJlc2V0IGltYWdlIG9ic2VydmVyLCB3ZSBkb24ndCB3YW50IHRvIHJlY2VpdmUgYW55IGNoYW5n
ZUluUmVjdCgpIGNhbGxzIGR1ZSB0byB0aGlzIHJlbGF5b3V0LgogICAgICAgICBzZXRJbWFnZU9i
c2VydmVyKG51bGxwdHIpOwogCi0gICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHRpbGVS
ZWN0LCB0aWxlUmVjdCwgb3AsIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICBkcmF3KGJ1ZmZlci0+Y29u
dGV4dCgpLCB0aWxlUmVjdCwgdGlsZVJlY3QsIG9wLCBibGVuZE1vZGUsIERlY29kaW5nTW9kZTo6
U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246OkRlZmF1bHQpOwogCiAgICAgICAgIHNldElt
YWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwogICAgICAgICBidWZmZXItPmNvbnZlcnRUb0x1bWluYW5j
ZU1hc2soKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDcgKzE2MSw3IEBA
IHByb3RlY3RlZDoKICAgICAvLyB8ZGVzdHJveUFsbHwgYWxvbmcuCiAgICAgdm9pZCBkZXN0cm95
RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lBbGwgPSB0cnVlKTsKIAotICAgIElt
YWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7
CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9y
bWFsKSBvdmVycmlkZTsKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBkcmF3RnJhbWVNYXRj
aGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgb3ZlcnJpZGU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFn
ZTo6ZHJhd0Nyb3NzZgogICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAot
SW1hZ2VEcmF3UmVzdWx0IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRN
b2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK0ltYWdlRHJh
d1Jlc3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVj
b2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJh
dGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAko
cmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBw
dWJsaWM6CiAgICAgRmxvYXRTaXplIHNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Ny
b3NzZmFkZVNpemU7IH0KIAogcHJvdGVjdGVkOgotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0
IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5n
TW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAogICAgIENyb3NzZmFkZUdlbmVyYXRlZElt
YWdlKEltYWdlJiBmcm9tSW1hZ2UsIEltYWdlJiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBj
b25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJ
bWFnZS5jcHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNyArMTcw
LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdAogICAgIHJldHVy
biBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBDdXN0b21Q
YWludEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9u
KQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihkZXN0Q29udGV4
dCk7CiAgICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBi
bGVuZE1vZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9t
UGFpbnRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0N1c3RvbVBhaW50SW1hZ2UuaAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAKICAgICBJbWFnZURyYXdSZXN1bHQgZG9DdXN0b21Q
YWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmKTsKIAotICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBE
ZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgZmluYWw7CisgICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7CiAgICAgdm9pZCBkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7CiAKICAgICBXZWFrUHRyPFBhaW50
V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24+IG1fcGFpbnREZWZpbml0aW9uOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJ
bWFnZS5oCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HZW5lcmF0ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIC8qZGVzdHJveUFsbCovID0g
dHJ1ZSkgb3ZlcnJpZGUgeyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJh
dyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlID0gMDsKKyAgICBJbWFnZURy
YXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwg
RGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZSA9IDA7CiAgICAgdm9pZCBk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwKICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgb3ZlcnJpZGUgPSAwOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVu
dEltYWdlLmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcg
QEAgR3JhZGllbnRJbWFnZTo6R3JhZGllbnRJbWFnZShHcmFkaWVudCYgZwogCiBHcmFkaWVudElt
YWdlOjp+R3JhZGllbnRJbWFnZSgpID0gZGVmYXVsdDsKIAotSW1hZ2VEcmF3UmVzdWx0IEdyYWRp
ZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24pCitJbWFnZURyYXdSZXN1bHQgR3JhZGllbnRJbWFnZTo6ZHJh
dyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
LCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCiB7
CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGRlc3RDb250ZXh0KTsK
ICAgICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5k
TW9kZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudElt
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
ZGllbnRJbWFnZS5oCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBHcmFkaWVudEltYWdlKEdyYWRpZW50JiwgY29uc3Qg
RmxvYXRTaXplJik7CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24pIGZpbmFsOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50
YXRpb24pIGZpbmFsOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUp
IGZpbmFsOwogICAgIGJvb2wgaXNHcmFkaWVudEltYWdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHZvaWQgZHVtcChXVEY6OlRleHRTdHJlYW0mKSBjb25zdCBmaW5hbDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMzLDcgKzcz
Myw3IEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWEKICAgICAgICAg
cmV0dXJuIG1faW1wbC0+ZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFn
ZVBhaW50aW5nT3B0aW9ucyk7CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIg
aW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3KCp0aGlz
LCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb25E
ZXNjcmlwdGlvbik7CisgICAgcmV0dXJuIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBz
b3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5n
TW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbik7CiB9CiAKIEltYWdlRHJh
d1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25z
dCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKQEAgLTc0NSw3ICs3NDUs
NyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsCiAgICAgICAgIHJl
dHVybiBtX2ltcGwtPmRyYXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0
aWxlU2l6ZSwgc3BhY2luZywgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogCiAgICAgSW50ZXJwb2xh
dGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0
aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICBy
ZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6
ZSwgc3BhY2luZywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fZGVj
b2RpbmdNb2RlKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlv
biwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21w
b3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fZGVjb2RpbmdNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVu
dGF0aW9uKTsKIH0KIAogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMSwyOSArMjExLDI5IEBA
IHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CiB9OwogCiBzdHJ1Y3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMgewotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKENvbXBvc2l0ZU9wZXJhdG9yIGNv
bXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2Rp
bmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0
aW9uRGVzY3JpcHRpb24gPSBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgSW50ZXJwb2xh
dGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBJbnRlcnBvbGF0aW9uRGVmYXVsdCkK
KyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVy
YXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1v
ZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3lu
Y2hyb25vdXMsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9u
OjpOb25lLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IEludGVy
cG9sYXRpb25EZWZhdWx0KQogICAgICAgICA6IG1fY29tcG9zaXRlT3BlcmF0b3IoY29tcG9zaXRl
T3BlcmF0b3IpCiAgICAgICAgICwgbV9ibGVuZE1vZGUoYmxlbmRNb2RlKQogICAgICAgICAsIG1f
ZGVjb2RpbmdNb2RlKGRlY29kaW5nTW9kZSkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uRGVzY3Jp
cHRpb24ob3JpZW50YXRpb25EZXNjcmlwdGlvbikKKyAgICAgICAgLCBtX29yaWVudGF0aW9uKG9y
aWVudGF0aW9uKQogICAgICAgICAsIG1faW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlv
blF1YWxpdHkpCiAgICAgewogICAgIH0KIAotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCBJbnRlcnBvbGF0
aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0LCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIs
IEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlIGRl
Y29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpCisgICAgSW1hZ2VQYWludGlu
Z09wdGlvbnMoSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgSW50ZXJwb2xhdGlvblF1YWxp
dHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBJbnRlcnBvbGF0aW9uRGVmYXVsdCwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZSBkZWNvZGluZ01v
ZGUgPSBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKQogICAgICAgICA6IG1fY29tcG9zaXRlT3Bl
cmF0b3IoY29tcG9zaXRlT3BlcmF0b3IpCiAgICAgICAgICwgbV9ibGVuZE1vZGUoYmxlbmRNb2Rl
KQogICAgICAgICAsIG1fZGVjb2RpbmdNb2RlKGRlY29kaW5nTW9kZSkKLSAgICAgICAgLCBtX29y
aWVudGF0aW9uRGVzY3JpcHRpb24ob3JpZW50YXRpb25EZXNjcmlwdGlvbikKKyAgICAgICAgLCBt
X29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQogICAgICAgICAsIG1faW50ZXJwb2xhdGlvblF1YWxp
dHkoaW50ZXJwb2xhdGlvblF1YWxpdHkpCiAgICAgewogICAgIH0KIAotICAgIEltYWdlUGFpbnRp
bmdPcHRpb25zKEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5LCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbiA9IEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbigpLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRv
ciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6
Ok5vcm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXMpCisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMoSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50
ZXJwb2xhdGlvblF1YWxpdHksIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBJbWFnZU9y
aWVudGF0aW9uOjpOb25lLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1h
bCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMp
CiAgICAgICAgIDogbV9jb21wb3NpdGVPcGVyYXRvcihjb21wb3NpdGVPcGVyYXRvcikKICAgICAg
ICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUpCiAgICAgICAgICwgbV9kZWNvZGluZ01vZGUoZGVj
b2RpbmdNb2RlKQotICAgICAgICAsIG1fb3JpZW50YXRpb25EZXNjcmlwdGlvbihvcmllbnRhdGlv
bkRlc2NyaXB0aW9uKQorICAgICAgICAsIG1fb3JpZW50YXRpb24ob3JpZW50YXRpb24pCiAgICAg
ICAgICwgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eShpbnRlcnBvbGF0aW9uUXVhbGl0eSkKICAgICB7
CiAgICAgfQpAQCAtMjQzLDcgKzI0Myw3IEBAIHN0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9ucyB7
CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9jb21wb3NpdGVPcGVyYXRvcjsKICAgICBCbGVuZE1v
ZGUgbV9ibGVuZE1vZGU7CiAgICAgRGVjb2RpbmdNb2RlIG1fZGVjb2RpbmdNb2RlOwotICAgIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBtX29yaWVudGF0aW9uRGVzY3JpcHRpb247CisgICAg
SW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOwogICAgIEludGVycG9sYXRpb25RdWFsaXR5
IG1faW50ZXJwb2xhdGlvblF1YWxpdHk7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmNwcAkocmV2
aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDEzICs0MCwxMyBAQCBHcmFw
aGljc0NvbnRleHRJbXBsOjp+R3JhcGhpY3NDb250ZXh0SW1wCiBJbWFnZURyYXdSZXN1bHQgR3Jh
cGhpY3NDb250ZXh0SW1wbDo6ZHJhd0ltYWdlSW1wbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0
aW9ucykKIHsKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlv
blF1YWxpdHlGb3JUaGlzU2NvcGUoY29udGV4dCwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRl
cnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXcoY29udGV4dCwgZGVzdGlu
YXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwg
aW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1f
ZGVjb2RpbmdNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRp
b24pOworICAgIHJldHVybiBpbWFnZS5kcmF3KGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdP
cHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwg
aW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbik7CiB9CiAKIEltYWdlRHJhd1Jlc3Vs
dCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWlu
dGluZ09wdGlvbnMpCiB7CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVy
cG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoY29u
dGV4dCwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxl
bmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSk7CisgICAgcmV0dXJu
IGltYWdlLmRyYXdUaWxlZChjb250ZXh0LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwg
c3BhY2luZywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQ
YWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fZGVjb2Rp
bmdNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uKTsKIH0KIAogSW1hZ2VE
cmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxl
RmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAkocmV2aXNpb24gMjQ4NDQy
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JgogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcoKnRoaXMpOwogfQog
Ci1JbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBj
b25zdCBGbG9hdFNpemUmIHNjYWxlZFRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUg
ZGVjb2RpbmdNb2RlKQorSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50
JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
RGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikK
IHsKICAgICBDb2xvciBjb2xvciA9IHNpbmdsZVBpeGVsU29saWRDb2xvcigpOwogICAgIGlmIChj
b2xvci5pc1ZhbGlkKCkpIHsKQEAgLTE4NCw3ICsxODQsNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1h
Z2U6OmRyYXdUaWxlZChHcmFwaGljCiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFkoKGRlc3RS
ZWN0LnkoKSAtIG9uZVRpbGVSZWN0LnkoKSkgLyBzY2FsZS5oZWlnaHQoKSk7CiAgICAgICAgIHZp
c2libGVTcmNSZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0aCgpKTsK
ICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdodCgpIC8gc2Nh
bGUuaGVpZ2h0KCkpOwotICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJs
ZVNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKCkpOworICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJs
ZVNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIGRlY29kaW5nTW9kZSwgb3JpZW50YXRpb24pOwogICAg
IH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0xOTYsNyArMTk2LDcgQEAgSW1hZ2VE
cmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpYwogICAgICAgICAgICAgdmlzaWJsZVNy
Y1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0gb25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdo
dCgpKTsKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKDEpOwogICAgICAgICAg
ICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdodCgpIC8gc2NhbGUuaGVp
Z2h0KCkpOwotICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVT
cmNSZWN0LCBvcCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJl
Y3QsIHZpc2libGVTcmNSZWN0LCBvcCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwg
b3JpZW50YXRpb24pOwogICAgICAgICB9CiAgICAgICAgIGlmIChzaXplKCkuaGVpZ2h0KCkgPT0g
MSAmJiBpbnRlcnNlY3Rpb24ob25lVGlsZVJlY3QsIGRlc3RSZWN0KS53aWR0aCgpID09IGRlc3RS
ZWN0LndpZHRoKCkpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCB2aXNpYmxlU3JjUmVjdDsKQEAg
LTIwNCw3ICsyMDQsNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGlj
CiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRZKDApOwogICAgICAgICAgICAgdmlzaWJs
ZVNyY1JlY3Quc2V0V2lkdGgoZGVzdFJlY3Qud2lkdGgoKSAvIHNjYWxlLndpZHRoKCkpOwogICAg
ICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KDEpOwotICAgICAgICAgICAgcmV0dXJu
IGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBvcCwgQmxlbmRNb2RlOjpOb3Jt
YWwsIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAg
ICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBvcCwgQmxl
bmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgb3JpZW50YXRpb24pOwogICAgICAgICB9CiAg
ICAgfQogI2VuZGlmCkBAIC0yMzYsNyArMjM2LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpk
cmF3VGlsZWQoR3JhcGhpYwogICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBmcm9tUmVjdCh0b0Zs
b2F0UG9pbnQoY3VycmVudFRpbGVSZWN0LmxvY2F0aW9uKCkgLSBvbmVUaWxlUmVjdC5sb2NhdGlv
bigpKSwgY3VycmVudFRpbGVSZWN0LnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZnJvbVJlY3Qu
c2NhbGUoMSAvIHNjYWxlLndpZHRoKCksIDEgLyBzY2FsZS5oZWlnaHQoKSk7CiAKLSAgICAgICAg
ICAgICAgICByZXN1bHQgPSBkcmF3KGN0eHQsIHRvUmVjdCwgZnJvbVJlY3QsIG9wLCBCbGVuZE1v
ZGU6Ok5vcm1hbCwgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7
CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZHJhdyhjdHh0LCB0b1JlY3QsIGZyb21SZWN0LCBv
cCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgb3JpZW50YXRpb24pOwogICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHQgPT0gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1ZXN0RGVjb2Rp
bmcpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAg
dG9YICs9IGN1cnJlbnRUaWxlUmVjdC53aWR0aCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsOCArMTkw
LDggQEAgcHJvdGVjdGVkOgogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFsIHZvaWQgZHJh
d0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IpIHsg
fQogI2VuZGlmCi0gICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24pID0gMDsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYg
c3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlKTsKKyAgICB2
aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pID0gMDsKKyAgICBJ
bWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYg
dGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKICAgICBJbWFnZURyYXdS
ZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZh
Y3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRvcik7
CiAKICAgICAvLyBTdXBwb3J0aW5nIHRpbGVkIGRyYXdpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgJKHJldmlzaW9uIDI0ODQ0MikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAkod29ya2luZyBj
b3B5KQpAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogICAgIFN1YnNhbXBsaW5nTGV2ZWwgbV9z
dWJzYW1wbGluZ0xldmVsIHsgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCB9OwogICAgIERlY29k
aW5nT3B0aW9ucyBtX2RlY29kaW5nT3B0aW9uczsKIAotICAgIEltYWdlT3JpZW50YXRpb24gbV9v
cmllbnRhdGlvbiB7IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uIH07CisgICAgSW1hZ2VPcmllbnRh
dGlvbiBtX29yaWVudGF0aW9uIHsgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSB9OwogICAgIFNlY29u
ZHMgbV9kdXJhdGlvbjsKICAgICBib29sIG1faGFzQWxwaGEgeyB0cnVlIH07CiB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRp
b24uaAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VPcmllbnRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMDcgKzI0LDEwNyBAQAog
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEltYWdlT3JpZW50YXRpb25faAotI2RlZmluZSBJ
bWFnZU9yaWVudGF0aW9uX2gKKyNwcmFnbWEgb25jZQogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Cisj
aW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAKLWNs
YXNzIEFmZmluZVRyYW5zZm9ybTsKLWNsYXNzIEZsb2F0U2l6ZTsKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotLy8gVGhpcyBlbnVtIGludGVudGlvbmFsbHkgbWF0Y2hlcyB0aGUgb3JpZW50YXRpb24g
dmFsdWVzIGZyb20gdGhlIEVYSUYgc3BlYy4KLS8vIFNlZSBKRUlUQSBDUC0zNDUxLCBwYWdlIDE4
LiBodHRwOi8vd3d3LmV4aWYub3JnL0V4aWYyLTIuUERGCi1lbnVtIEltYWdlT3JpZW50YXRpb25F
bnVtIHsKLSAgICAvLyAiVG9wTGVmdCIgbWVhbnMgdGhhdCB0aGUgMCByb3cgc3RhcnRzIGF0IHRo
ZSBUb3AsIHRoZSAwIGNvbHVtbiBzdGFydHMgYXQgdGhlIExlZnQuCi0gICAgT3JpZ2luVG9wTGVm
dCA9IDEsIC8vIGRlZmF1bHQKLSAgICBPcmlnaW5Ub3BSaWdodCA9IDIsIC8vIG1pcnJvciBhbG9u
ZyB5LWF4aXMKLSAgICBPcmlnaW5Cb3R0b21SaWdodCA9IDMsIC8vIDE4MCBkZWdyZWUgcm90YXRp
b24KLSAgICBPcmlnaW5Cb3R0b21MZWZ0ID0gNCwgLy8gbWlycm9yIGFsb25nIHRoZSB4LWF4aXMK
LSAgICBPcmlnaW5MZWZ0VG9wID0gNSwgLy8gbWlycm9yIGFsb25nIHgtYXhpcyArIDI3MCBkZWdy
ZWUgQ1cgcm90YXRpb24KLSAgICBPcmlnaW5SaWdodFRvcCA9IDYsIC8vIDkwIGRlZ3JlZSBDVyBy
b3RhdGlvbgotICAgIE9yaWdpblJpZ2h0Qm90dG9tID0gNywgLy8gbWlycm9yIGFsb25nIHgtYXhp
cyArIDkwIGRlZ3JlZSBDVyByb3RhdGlvbgotICAgIE9yaWdpbkxlZnRCb3R0b20gPSA4LCAvLyAy
NzAgZGVncmVlIENXIHJvdGF0aW9uCi0gICAgLy8gQWxsIG90aGVyIHZhbHVlcyBhcmUgInJlc2Vy
dmVkIiBhcyBvZiBFWElGIDIuMgotICAgIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uID0gT3JpZ2lu
VG9wTGVmdCwKLX07CitzdHJ1Y3QgSW1hZ2VPcmllbnRhdGlvbiB7CisgICAgZW51bSBJbWFnZU9y
aWVudGF0aW9uRW51bSB7CisgICAgICAgIEZyb21JbWFnZSAgICAgICAgID0gMCwKKworICAgICAg
ICAvLyBUaGlzIHJhbmdlIGludGVudGlvbmFsbHkgbWF0Y2hlcyB0aGUgb3JpZW50YXRpb24gdmFs
dWVzIGZyb20gdGhlIEVYSUYgc3BlYy4KKyAgICAgICAgLy8gU2VlIEpFSVRBIENQLTM0NTEsIHBh
Z2UgMTguIGh0dHA6Ly93d3cuZXhpZi5vcmcvRXhpZjItMi5QREYKKyAgICAgICAgT3JpZ2luVG9w
TGVmdCAgICAgPSAxLCAvLyBkZWZhdWx0CisgICAgICAgIE9yaWdpblRvcFJpZ2h0ICAgID0gMiwg
Ly8gbWlycm9yIGFsb25nIHktYXhpcworICAgICAgICBPcmlnaW5Cb3R0b21SaWdodCA9IDMsIC8v
IDE4MCBkZWdyZWUgcm90YXRpb24KKyAgICAgICAgT3JpZ2luQm90dG9tTGVmdCAgPSA0LCAvLyBt
aXJyb3IgYWxvbmcgdGhlIHgtYXhpcworICAgICAgICBPcmlnaW5MZWZ0VG9wICAgICA9IDUsIC8v
IG1pcnJvciBhbG9uZyB4LWF4aXMgKyAyNzAgZGVncmVlIENXIHJvdGF0aW9uCisgICAgICAgIE9y
aWdpblJpZ2h0VG9wICAgID0gNiwgLy8gOTAgZGVncmVlIENXIHJvdGF0aW9uCisgICAgICAgIE9y
aWdpblJpZ2h0Qm90dG9tID0gNywgLy8gbWlycm9yIGFsb25nIHgtYXhpcyArIDkwIGRlZ3JlZSBD
VyByb3RhdGlvbgorICAgICAgICBPcmlnaW5MZWZ0Qm90dG9tICA9IDgsIC8vIDI3MCBkZWdyZWUg
Q1cgcm90YXRpb24KKworICAgICAgICBOb25lICAgICAgICAgICAgICA9IE9yaWdpblRvcExlZnQs
CisgICAgICAgIERlZmF1bHQgICAgICAgICAgID0gTm9uZSwKKworICAgICAgICBFWElGRmlyc3Qg
ICAgICAgICA9IE9yaWdpblRvcExlZnQsCisgICAgICAgIEVYSUZMYXN0ICAgICAgICAgID0gT3Jp
Z2luTGVmdEJvdHRvbSwKKworICAgICAgICBGaXJzdCAgICAgICAgICAgICA9IEZyb21JbWFnZSwK
KyAgICAgICAgTGFzdCAgICAgICAgICAgICAgPSBFWElGTGFzdAorICAgIH07CiAKLWVudW0gUmVz
cGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHsKLSAgICBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uID0gMCwKLSAgICBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9IDEKLX07CisgICAgSW1hZ2VP
cmllbnRhdGlvbigpID0gZGVmYXVsdDsKIAotc3RydWN0IEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbiB7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwKLSAgICAgICAgSW1hZ2VP
cmllbnRhdGlvbkVudW0gb3JpZW50YXRpb24pCi0gICAgICAgIDogbV9yZXNwZWN0T3JpZW50YXRp
b24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCi0gICAgICAgICwgbV9vcmllbnRhdGlv
bihvcmllbnRhdGlvbikKKyAgICBJbWFnZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb25FbnVt
IG9yaWVudGF0aW9uKQorICAgICAgICA6IG1fb3JpZW50YXRpb24ob3JpZW50YXRpb24pCiAgICAg
ewogICAgIH0KIAotICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpCi0gICAgICAgIDog
bV9yZXNwZWN0T3JpZW50YXRpb24oRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKLSAgICAg
ICAgLCBtX29yaWVudGF0aW9uKERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKQorICAgIGV4cGxpY2l0
IEltYWdlT3JpZW50YXRpb24oaW50IG9yaWVudGF0aW9uKQorICAgICAgICA6IEltYWdlT3JpZW50
YXRpb24oaXNWYWxpZE9yaWVudGF0aW9uKG9yaWVudGF0aW9uKSA/IHN0YXRpY19jYXN0PEltYWdl
T3JpZW50YXRpb25FbnVtPihvcmllbnRhdGlvbikgOiBOb25lKQogICAgIHsKICAgICB9CiAKLSAg
ICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVt
IHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAgICAgICA6IG1fcmVzcGVjdE9yaWVu
dGF0aW9uKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAgICAgICAsIG1fb3JpZW50
YXRpb24oRGVmYXVsdEltYWdlT3JpZW50YXRpb24pCisgICAgc3RhdGljIEltYWdlT3JpZW50YXRp
b24gZnJvbUVYSUZPcmllbnRhdGlvbihpbnQgb3JpZW50YXRpb24pCiAgICAgeworICAgICAgICBy
ZXR1cm4gaXNWYWxpZEVYSUZPcmllbnRhdGlvbihvcmllbnRhdGlvbikgPyBzdGF0aWNfY2FzdDxJ
bWFnZU9yaWVudGF0aW9uRW51bT4ob3JpZW50YXRpb24pIDogTm9uZTsKICAgICB9CiAKLSAgICB2
b2lkIHNldFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51
bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgeyBtX3Jlc3BlY3RPcmllbnRhdGlvbiA9
IHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uOyB9Ci0gICAgUmVzcGVjdEltYWdlT3JpZW50
YXRpb25FbnVtIHJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgeyByZXR1cm4gbV9yZXNwZWN0T3Jp
ZW50YXRpb247IH0KLQotICAgIHZvaWQgc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oSW1hZ2VPcmll
bnRhdGlvbkVudW0gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9
Ci0gICAgSW1hZ2VPcmllbnRhdGlvbkVudW0gaW1hZ2VPcmllbnRhdGlvbigpIHsgcmV0dXJuIG1f
b3JpZW50YXRpb247IH0KKyAgICBvcGVyYXRvciBpbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ+KG1fb3JpZW50YXRpb24pOyB9CiAKLSAgICBSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bkVudW0gbV9yZXNwZWN0T3JpZW50YXRpb247Ci0gICAgSW1hZ2VPcmllbnRhdGlvbkVudW0gbV9v
cmllbnRhdGlvbjsKLX07Ci0KLWNsYXNzIEltYWdlT3JpZW50YXRpb24gewotcHVibGljOgotICAg
IEltYWdlT3JpZW50YXRpb24oKQotICAgICAgICA6IG1fb3JpZW50YXRpb24oRGVmYXVsdEltYWdl
T3JpZW50YXRpb24pCisgICAgYm9vbCB1c2VzV2lkdGhBc0hlaWdodCgpIGNvbnN0CiAgICAgewor
ICAgICAgICBBU1NFUlQoaXNWYWxpZEVYSUZPcmllbnRhdGlvbihtX29yaWVudGF0aW9uKSk7Cisg
ICAgICAgIC8vIFZhbHVlcyA1IHRocm91Z2ggOCBhbGwgZmxpcCB0aGUgd2lkdGgvaGVpZ2h0Lgor
ICAgICAgICByZXR1cm4gbV9vcmllbnRhdGlvbiA+PSBPcmlnaW5MZWZ0VG9wOwogICAgIH0KIAot
ICAgIGV4cGxpY2l0IEltYWdlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbkVudW0gb3JpZW50
YXRpb24pCi0gICAgICAgIDogbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKKyAgICBBZmZpbmVU
cmFuc2Zvcm0gdHJhbnNmb3JtRnJvbURlZmF1bHQoY29uc3QgRmxvYXRTaXplJiBkcmF3blNpemUp
IGNvbnN0CiAgICAgeworICAgICAgICBmbG9hdCB3ID0gZHJhd25TaXplLndpZHRoKCk7CisgICAg
ICAgIGZsb2F0IGggPSBkcmF3blNpemUuaGVpZ2h0KCk7CisKKyAgICAgICAgc3dpdGNoIChtX29y
aWVudGF0aW9uKSB7CisgICAgICAgIGNhc2UgRnJvbUltYWdlOgorICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7Cisg
ICAgICAgIGNhc2UgT3JpZ2luVG9wTGVmdDoKKyAgICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFu
c2Zvcm0oKTsKKyAgICAgICAgY2FzZSBPcmlnaW5Ub3BSaWdodDoKKyAgICAgICAgICAgIHJldHVy
biBBZmZpbmVUcmFuc2Zvcm0oLTEsICAwLCAgMCwgIDEsICB3LCAwKTsKKyAgICAgICAgY2FzZSBP
cmlnaW5Cb3R0b21SaWdodDoKKyAgICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oLTEs
ICAwLCAgMCwgLTEsICB3LCBoKTsKKyAgICAgICAgY2FzZSBPcmlnaW5Cb3R0b21MZWZ0OgorICAg
ICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSggMSwgIDAsICAwLCAtMSwgIDAsIGgpOwor
ICAgICAgICBjYXNlIE9yaWdpbkxlZnRUb3A6CisgICAgICAgICAgICByZXR1cm4gQWZmaW5lVHJh
bnNmb3JtKCAwLCAgMSwgIDEsICAwLCAgMCwgMCk7CisgICAgICAgIGNhc2UgT3JpZ2luUmlnaHRU
b3A6CisgICAgICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCAwLCAgMSwgLTEsICAwLCAg
dywgMCk7CisgICAgICAgIGNhc2UgT3JpZ2luUmlnaHRCb3R0b206CisgICAgICAgICAgICByZXR1
cm4gQWZmaW5lVHJhbnNmb3JtKCAwLCAtMSwgLTEsICAwLCAgdywgaCk7CisgICAgICAgIGNhc2Ug
T3JpZ2luTGVmdEJvdHRvbToKKyAgICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oIDAs
IC0xLCAgMSwgIDAsICAwLCBoKTsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CiAgICAgfQogCi0gICAg
Ym9vbCB1c2VzV2lkdGhBc0hlaWdodCgpIGNvbnN0Citwcml2YXRlOgorICAgIHN0YXRpYyBib29s
IGlzVmFsaWRPcmllbnRhdGlvbihpbnQgb3JpZW50YXRpb24pCiAgICAgewotICAgICAgICAvLyBW
YWx1ZXMgNSB0aHJvdWdoIDggYWxsIGZsaXAgdGhlIHdpZHRoL2hlaWdodC4KLSAgICAgICAgcmV0
dXJuIG1fb3JpZW50YXRpb24gPj0gT3JpZ2luTGVmdFRvcDsKKyAgICAgICAgcmV0dXJuIG9yaWVu
dGF0aW9uID49IHN0YXRpY19jYXN0PGludD4oRmlyc3QpICYmIG9yaWVudGF0aW9uIDw9IHN0YXRp
Y19jYXN0PGludD4oTGFzdCk7CiAgICAgfQogCi0gICAgLy8gSW1hZ2VPcmllbnRhdGlvbkVudW0g
Y3VycmVudGx5IG1hdGNoZXMgRVhJRiB2YWx1ZXMsIGhvd2V2ZXIgY29kZSBvdXRzaWRlCi0gICAg
Ly8gdGhpcyBmdW5jdGlvbiBzaG91bGQgbmV2ZXIgYXNzdW1lIHRoYXQuCi0gICAgc3RhdGljIElt
YWdlT3JpZW50YXRpb24gZnJvbUVYSUZWYWx1ZShpbnQgZXhpZlZhbHVlKQotICAgIHsKLSAgICAg
ICAgLy8gVmFsdWVzIGRpcmVjdCBmcm9tIGltYWdlcyBtYXkgYmUgaW52YWxpZCwgaW4gd2hpY2gg
Y2FzZSB3ZSB1c2UgdGhlIGRlZmF1bHQuCi0gICAgICAgIGlmIChleGlmVmFsdWUgPCBPcmlnaW5U
b3BMZWZ0IHx8IGV4aWZWYWx1ZSA+IE9yaWdpbkxlZnRCb3R0b20pCi0gICAgICAgICAgICByZXR1
cm4gSW1hZ2VPcmllbnRhdGlvbigpOwotICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbihz
dGF0aWNfY2FzdDxJbWFnZU9yaWVudGF0aW9uRW51bT4oZXhpZlZhbHVlKSk7Ci0gICAgfQotCi0g
ICAgLy8gVGhpcyB0cmFuc2Zvcm0gY2FuIGJlIHVzZWQgZm9yIGRyYXdpbmcgYW4gaW1hZ2UgYWNj
b3JkaW5nIHRvIHRoZSBvcmllbnRhdGlvbi4KLSAgICAvLyBJdCBzaG91bGQgYmUgdXNlZCBpbiBh
IHJpZ2h0LWhhbmRlZCBjb29yZGluYXRlIHN5c3RlbS4KLSAgICBBZmZpbmVUcmFuc2Zvcm0gdHJh
bnNmb3JtRnJvbURlZmF1bHQoY29uc3QgRmxvYXRTaXplJiBkcmF3blNpemUpIGNvbnN0OwotCi0g
ICAgaW5saW5lIG9wZXJhdG9yIEltYWdlT3JpZW50YXRpb25FbnVtKCkgY29uc3QgeyByZXR1cm4g
bV9vcmllbnRhdGlvbjsgfQotICAgIAotICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
SW1hZ2VPcmllbnRhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLm1fb3JpZW50YXRp
b24gPT0gbV9vcmllbnRhdGlvbjsgfQotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
SW1hZ2VPcmllbnRhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OyB9CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEVYSUZPcmllbnRhdGlvbihpbnQgb3JpZW50YXRp
b24pCisgICAgeworICAgICAgICByZXR1cm4gb3JpZW50YXRpb24gPj0gc3RhdGljX2Nhc3Q8aW50
PihFWElGRmlyc3QpICYmIG9yaWVudGF0aW9uIDw9IHN0YXRpY19jYXN0PGludD4oRVhJRkxhc3Qp
OworICAgIH0KIAotcHJpdmF0ZToKLSAgICAvLyBGSVhNRTogVGhpcyBvbmx5IG5lZWRzIHRvIGJl
IG9uZSBieXRlLgotICAgIEltYWdlT3JpZW50YXRpb25FbnVtIG1fb3JpZW50YXRpb247CisgICAg
SW1hZ2VPcmllbnRhdGlvbkVudW0gbV9vcmllbnRhdGlvbiB7IE5vbmUgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEltYWdlT3JpZW50YXRpb25faApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAko
cmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODksNyArNjg5LDcgQEAgdm9pZCBJbWFn
ZVNvdXJjZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykKICAgICB0cy5kdW1wUHJvcGVydHkoInNvbGlk
LWNvbG9yIiwgc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkpOwogCiAgICAgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4KDApOwotICAgIGlmIChvcmll
bnRhdGlvbiAhPSBPcmlnaW5Ub3BMZWZ0KQorICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbWFnZU9y
aWVudGF0aW9uOjpOb25lKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoIm9yaWVudGF0aW9uIiwg
b3JpZW50YXRpb24pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAJKHJldmlz
aW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgTmFt
ZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpOYW1lZEltYWdlR2VuZQogICAgIHNldENvbnRhaW5lclNp
emUoc2l6ZSk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3As
IEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQogewogI2lmIFVT
RShORVdfVEhFTUUpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdl
LmgJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3
IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJh
dyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIEltYWdlRHJhd1Jl
c3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNv
ZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CiAKICAgICBOYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UoU3RyaW5nIG5hbWUsIGNvbnN0IEZsb2F0U2l6ZSYpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCShyZXZpc2lvbiAyNDg0
NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIEludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNv
bnN0IE5hdGl2ZUltYWcKIGJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYpOwogQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0
aXZlSW1hZ2VQdHImKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBJbnRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgY29uc3QgSW1h
Z2VPcmllbnRhdGlvbiYpOwordm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBJbnRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbik7CiB2b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1h
Z2VQdHImKTsKICAgICAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5tbQkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQko
d29ya2luZyBjb3B5KQpAQCAtNTMxLDcgKzUzMSw3IEBAIGJvb2wgSW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6ZnJhbWVJc0NvbXBsZXQKIAogSW1hZ2VPcmllbnRhdGlvbiBJbWFnZURlY29kZXJBVkZPYmpD
OjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIElt
YWdlT3JpZW50YXRpb24oKTsKKyAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZTsKIH0K
IAogU2Vjb25kcyBJbWFnZURlY29kZXJBVkZPYmpDOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXpl
X3QgaW5kZXgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAkocmV2aXNpb24gMjQ4
NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NCw3ICszNTQsNyBAQCB2b2lkIEltYWdl
QnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgCiB7CiAgICAgQmFja2luZ1N0b3JlQ29weSBj
b3B5TW9kZSA9ICZkZXN0aW5hdGlvbkNvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5n
U3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZTsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0g
Y29weUltYWdlKGNvcHlNb2RlKTsKLSAgICBkZXN0aW5hdGlvbkNvbnRleHQuZHJhd0ltYWdlKCpp
bWFnZSwgZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1v
ZGUsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
bigpKSk7CisgICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGRlc3RSZWN0
LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlLCBEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpEZWZhdWx0KSk7CiB9CiAKIHZvaWQg
SW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNw
cAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcg
QEAgQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoYwogICAgIHJldHVybiBj
b2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQigqcGl4ZWwpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbnRTaXplJiBpbWFnZVNpemUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBjb25zdCBJbWFnZU9yaWVudGF0aW9uJiBvcmllbnRh
dGlvbikKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1h
Z2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVu
ZE1vZGUsIG9yaWVudGF0aW9uKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9u
IDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY28KICAgICBDR0NvbnRleHRUcmFuc2xhdGVD
VE0oY29udGV4dCwgYWRqdXN0ZWREZXN0UmVjdC54KCksIGFkanVzdGVkRGVzdFJlY3QueSgpKTsK
ICAgICBhZGp1c3RlZERlc3RSZWN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoKSk7CiAKLSAgICBp
ZiAob3JpZW50YXRpb24gIT0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pIHsKKyAgICBpZiAob3Jp
ZW50YXRpb24gIT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkgewogICAgICAgICBDR0NvbnRleHRD
b25jYXRDVE0oY29udGV4dCwgb3JpZW50YXRpb24udHJhbnNmb3JtRnJvbURlZmF1bHQoYWRqdXN0
ZWREZXN0UmVjdC5zaXplKCkpKTsKICAgICAgICAgaWYgKG9yaWVudGF0aW9uLnVzZXNXaWR0aEFz
SGVpZ2h0KCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBkZXN0aW5hdGlvbiByZWN0IHdpbGwgaGF2
ZSBpdCdzIHdpZHRoIGFuZCBoZWlnaHQgYWxyZWFkeSByZXZlcnNlZCBmb3IgdGhlIG9yaWVudGF0
aW9uIG9mCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE1NiwxMSArMTU2LDExIEBAIHN0YXRpYyBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0
aW9uRnJvbVAKICAgICBBU1NFUlQoaW1hZ2VQcm9wZXJ0aWVzKTsKICAgICBDRk51bWJlclJlZiBv
cmllbnRhdGlvblByb3BlcnR5ID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGlt
YWdlUHJvcGVydGllcywga0NHSW1hZ2VQcm9wZXJ0eU9yaWVudGF0aW9uKTsKICAgICBpZiAoIW9y
aWVudGF0aW9uUHJvcGVydHkpCi0gICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7Cisg
ICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpOb25lOwogICAgIAogICAgIGludCBleGlm
VmFsdWU7CiAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShvcmllbnRhdGlvblByb3BlcnR5LCBrQ0ZOdW1i
ZXJJbnRUeXBlLCAmZXhpZlZhbHVlKTsKLSAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6ZnJv
bUVYSUZWYWx1ZShleGlmVmFsdWUpOworICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpmcm9t
RVhJRk9yaWVudGF0aW9uKGV4aWZWYWx1ZSk7CiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCkBA
IC0zNTAsNyArMzUwLDcgQEAgSW1hZ2VPcmllbnRhdGlvbiBJbWFnZURlY29kZXJDRzo6ZnJhbWVP
cgogewogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENG
KENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9uYXRpdmVEZWNvZGVyLmdldCgp
LCBpbmRleCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKICAgICBpZiAoIXByb3BlcnRp
ZXMpCi0gICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7CisgICAgICAgIHJldHVybiBJ
bWFnZU9yaWVudGF0aW9uOjpOb25lOwogICAgIAogICAgIHJldHVybiBvcmllbnRhdGlvbkZyb21Q
cm9wZXJ0aWVzKHByb3BlcnRpZXMuZ2V0KCkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAJKHJldmlzaW9u
IDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUlt
YWdlQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIENvbG9yIG5hdGl2ZUlt
YWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGMKICAgICByZXR1cm4gQ29sb3IocGl4ZWxbMF0gKiAy
NTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMl0gKiAyNTUg
LyBwaXhlbFszXSwgcGl4ZWxbM10pOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXpl
JiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIGNvbnN0IElt
YWdlT3JpZW50YXRpb24mIG9yaWVudGF0aW9uKQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6
ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBJbWFnZU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdp
dmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUoKS4KICAgICBJbnRTaXpl
IHN1YnNhbXBsZWRJbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTcs
NyArMjU3LDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFnZQogICAg
IGRlY29kZWRTaXplQ2hhbmdlZChpbnRlcm5hbFNpemUudW5jbGFtcGVkQXJlYSgpICogNCk7CiB9
CiAKLUltYWdlRHJhd1Jlc3VsdCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IFBERkRvY3VtZW50SW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5k
TW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIGlmICghbV9kb2N1
bWVudCB8fCAhbV9oYXNQYWdlKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRO
b3RoaW5nOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9j
dW1lbnRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlSW50cmluc2lj
RGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdo
dCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7CiAgICAgRmxvYXRTaXplIHNp
emUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXco
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgYm9vbCBjdXJyZW50RnJhbWVLbm93blRv
QmVPcGFxdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAJKHJldmlzaW9uIDI0
ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDExLDExICsx
NDExLDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGUKICAgICAg
ICAgZ3N0X21lc3NhZ2VfcGFyc2VfdGFnKG1lc3NhZ2UsICZ0YWdzKTsKICAgICAgICAgaWYgKGdz
dF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIEdTVF9UQUdfSU1BR0VfT1JJRU5UQVRJT04sICZ0
YWcub3V0UHRyKCkpKSB7CiAgICAgICAgICAgICBpZiAoIWdfc3RyY21wMCh0YWcuZ2V0KCksICJy
b3RhdGUtOTAiKSkKLSAgICAgICAgICAgICAgICBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKElt
YWdlT3JpZW50YXRpb24oT3JpZ2luUmlnaHRUb3ApKTsKKyAgICAgICAgICAgICAgICBzZXRWaWRl
b1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb246Ok9yaWdpblJpZ2h0VG9wKTsKICAg
ICAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAodGFnLmdldCgpLCAicm90YXRlLTE4MCIpKQot
ICAgICAgICAgICAgICAgIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlv
bihPcmlnaW5Cb3R0b21SaWdodCkpOworICAgICAgICAgICAgICAgIHNldFZpZGVvU291cmNlT3Jp
ZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luQm90dG9tUmlnaHQpOwogICAgICAgICAg
ICAgZWxzZSBpZiAoIWdfc3RyY21wMCh0YWcuZ2V0KCksICJyb3RhdGUtMjcwIikpCi0gICAgICAg
ICAgICAgICAgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uKE9yaWdp
bkxlZnRCb3R0b20pKTsKKyAgICAgICAgICAgICAgICBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9u
KEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkxlZnRCb3R0b20pOwogICAgICAgICB9CiAgICAgICAg
IGdzdF90YWdfbGlzdF91bnJlZih0YWdzKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCShyZXZp
c2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg4Myw3ICs4ODMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBh
CiAKICAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBwYWludGluZ09wdGlvbnMoQ29tcG9zaXRlQ29w
eSk7CiAgICAgaWYgKG1fcmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZCkKLSAgICAgICAgcGFpbnRp
bmdPcHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51
bShtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pOworICAgICAgICBwYWludGluZ09wdGlvbnMubV9v
cmllbnRhdGlvbiA9IG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbjsKIAogICAgIGF1dG8gZ3N0SW1h
Z2UgPSBJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2UobV9zYW1wbGUuZ2V0KCkpOwogICAgIGlm
ICghZ3N0SW1hZ2UpCkBAIC05NjEsNyArOTYxLDcgQEAgTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbQogfQogI2VuZGlmIC8vIFVTRShHU1RSRUFNRVJfR0wpCiAKLXZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlv
bihjb25zdCBJbWFnZU9yaWVudGF0aW9uJiBvcmllbnRhdGlvbikKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihJbWFnZU9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIGlmIChtX3ZpZGVvU291cmNlT3JpZW50YXRpb24g
PT0gb3JpZW50YXRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTk3NiwxNiArOTc2LDE2IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2UKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4dHVyZU1hcHBlckZsYWdzKCkKIHsKICAgICBz
d2l0Y2ggKG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbikgewotICAgIGNhc2UgRGVmYXVsdEltYWdl
T3JpZW50YXRpb246CisgICAgY2FzZSBJbWFnZU9yaWVudGF0aW9uOjpOb25lOgogICAgICAgICBt
X3RleHR1cmVNYXBwZXJGbGFncyA9IDA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3JpZ2lu
UmlnaHRUb3A6CisgICAgY2FzZSBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5SaWdodFRvcDoKICAg
ICAgICAgbV90ZXh0dXJlTWFwcGVyRmxhZ3MgPSBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZFJvdGF0
ZVRleHR1cmU5MDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcmlnaW5Cb3R0b21SaWdodDoK
KyAgICBjYXNlIEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkJvdHRvbVJpZ2h0OgogICAgICAgICBt
X3RleHR1cmVNYXBwZXJGbGFncyA9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkUm90YXRlVGV4dHVy
ZTE4MDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcmlnaW5MZWZ0Qm90dG9tOgorICAgIGNh
c2UgSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luTGVmdEJvdHRvbToKICAgICAgICAgbV90ZXh0dXJl
TWFwcGVyRmxhZ3MgPSBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZFJvdGF0ZVRleHR1cmUyNzA7CiAg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw3ICsxODUsNyBAQCBwdWJs
aWM6CiAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJy
aWRlOwogI2VuZGlmCiAKLSAgICB2b2lkIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oY29uc3Qg
SW1hZ2VPcmllbnRhdGlvbiYpOworICAgIHZvaWQgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihJ
bWFnZU9yaWVudGF0aW9uKTsKICAgICBHc3RFbGVtZW50KiBwaXBlbGluZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcGlwZWxpbmUuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVTeW5jTWVz
c2FnZShHc3RNZXNzYWdlKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJl
Q29waWVyR1N0cmVhbWVyLmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDE3ICs5NCwxNyBAQCB2b2lkIFZpZGVvVGV4dHVyZUNv
cGllckdTdHJlYW1lcjo6dXBkYXRlCiAgICAgbV90ZXh0dXJlU3BhY2VNYXRyaXgubWFrZUlkZW50
aXR5KCk7CiAKICAgICBzd2l0Y2ggKG1fb3JpZW50YXRpb24pIHsKLSAgICBjYXNlIERlZmF1bHRJ
bWFnZU9yaWVudGF0aW9uOgorICAgIGNhc2UgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZToKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBPcmlnaW5SaWdodFRvcDoKKyAgICBjYXNlIEltYWdlT3JpZW50
YXRpb246Ok9yaWdpblJpZ2h0VG9wOgogICAgICAgICBtX3RleHR1cmVTcGFjZU1hdHJpeC5yb3Rh
dGUoLTkwKTsKICAgICAgICAgbV90ZXh0dXJlU3BhY2VNYXRyaXgudHJhbnNsYXRlKC0xLCAwKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcmlnaW5Cb3R0b21SaWdodDoKKyAgICBjYXNlIElt
YWdlT3JpZW50YXRpb246Ok9yaWdpbkJvdHRvbVJpZ2h0OgogICAgICAgICBtX3RleHR1cmVTcGFj
ZU1hdHJpeC5yb3RhdGUoMTgwKTsKICAgICAgICAgbV90ZXh0dXJlU3BhY2VNYXRyaXgudHJhbnNs
YXRlKC0xLCAtMSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3JpZ2luTGVmdEJvdHRvbToK
KyAgICBjYXNlIEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkxlZnRCb3R0b206CiAgICAgICAgIG1f
dGV4dHVyZVNwYWNlTWF0cml4LnJvdGF0ZSgtMjcwKTsKICAgICAgICAgbV90ZXh0dXJlU3BhY2VN
YXRyaXgudHJhbnNsYXRlKDAsIC0xKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMzQsNyArMTM0LDcg
QEAgdm9pZCBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OnVwZGF0ZQogICAgICAgICAtMSwg
MSwgLShmYXJWYWx1ZSArIG5lYXJWYWx1ZSkgLyAoZmFyVmFsdWUgLSBuZWFyVmFsdWUpLCAxKTsK
IH0KIAotYm9vbCBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZShHTHVpbnQgaW5wdXRUZXh0dXJlLCBJbnRTaXplJiBmcmFtZVNpemUs
IEdMdWludCBvdXRwdXRUZXh0dXJlLCBHTGVudW0gb3V0cHV0VGFyZ2V0LCBHTGludCBsZXZlbCwg
R0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgYm9vbCBm
bGlwWSwgSW1hZ2VPcmllbnRhdGlvbiYgc291cmNlT3JpZW50YXRpb24pCitib29sIFZpZGVvVGV4
dHVyZUNvcGllckdTdHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdM
dWludCBpbnB1dFRleHR1cmUsIEludFNpemUmIGZyYW1lU2l6ZSwgR0x1aW50IG91dHB1dFRleHR1
cmUsIEdMZW51bSBvdXRwdXRUYXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3Jt
YXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBib29sIGZsaXBZLCBJbWFnZU9yaWVudGF0
aW9uIHNvdXJjZU9yaWVudGF0aW9uKQogewogICAgIGlmICghbV9zaGFkZXJQcm9ncmFtIHx8ICFt
X2ZyYW1lYnVmZmVyIHx8ICFtX3ZibyB8fCBmcmFtZVNpemUuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdT
dHJlYW1lci5oCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIFZpZGVvVGV4dHVyZUNvcGllckdT
dHJlYW1lcihDb2xvckNvbnZlcnNpb24pOwogICAgIH5WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFt
ZXIoKTsKIAotICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdMdWlu
dCBpbnB1dFRleHR1cmUsIEludFNpemUmIGZyYW1lU2l6ZSwgR0x1aW50IG91dHB1dFRleHR1cmUs
IEdMZW51bSBvdXRwdXRUYXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQs
IEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBib29sIGZsaXBZLCBJbWFnZU9yaWVudGF0aW9u
JiBzb3VyY2VPcmllbnRhdGlvbik7CisgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUoR0x1aW50IGlucHV0VGV4dHVyZSwgSW50U2l6ZSYgZnJhbWVTaXplLCBHTHVpbnQg
b3V0cHV0VGV4dHVyZSwgR0xlbnVtIG91dHB1dFRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBp
bnRlcm5hbEZvcm1hdCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGJvb2wgZmxpcFksIElt
YWdlT3JpZW50YXRpb24gc291cmNlT3JpZW50YXRpb24pOwogICAgIHZvaWQgdXBkYXRlQ29sb3JD
b252ZXJzaW9uTWF0cml4KENvbG9yQ29udmVyc2lvbik7CiAgICAgdm9pZCB1cGRhdGVUZXh0dXJl
U3BhY2VNYXRyaXgoKTsKICAgICB2b2lkIHVwZGF0ZVRyYW5zZm9ybWF0aW9uTWF0cml4KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
Q0dXaW4uY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcg
QEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTQogICAgIGlmIChzaXpl
KQogICAgICAgICBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoZ2MsIEZsb2F0UmVjdCgwLjBm
LCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCAqc2l6ZSwgQ29tcG9z
aXRlQ29weSk7CiAgICAgZWxzZQotICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4w
ZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAu
MGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb21wb3NpdGVDb3B5
LCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4wZiwg
MC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYs
IDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb21wb3NpdGVD
b3B5LCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VP
cmllbnRhdGlvbjo6RGVmYXVsdCk7CiAKICAgICAvLyBEbyBjbGVhbnVwCiAgICAgQ0dDb250ZXh0
UmVsZWFzZShjZ0NvbnRleHQpOwpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpk
cmF3RnJhbWVNYXRjaGluZ1NvdXJjCiAgICAgICAgIGlmIChpbWFnZSAmJiBDR0ltYWdlR2V0SGVp
Z2h0KGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIENH
SW1hZ2VHZXRXaWR0aChpbWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLndpZHRo
KCkpKSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7
CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7Ci0gICAgICAgICAgICBkcmF3KGN0eHQs
IGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUu
aGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6
U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAg
IGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgo
KSwgc3JjU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVsdCk7CiAgICAg
ICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdG
cmFtZU1hdGNoaW5nU291cmMKIAogICAgIC8vIE5vIGltYWdlIG9mIHRoZSBjb3JyZWN0IHNpemUg
d2FzIGZvdW5kLCBmYWxsYmFjayB0byBkcmF3aW5nIHRoZSBjdXJyZW50IGZyYW1lCiAgICAgRmxv
YXRTaXplIGltYWdlU2l6ZSA9IEJpdG1hcEltYWdlOjpzaXplKCk7Ci0gICAgZHJhdyhjdHh0LCBk
c3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6
ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgIGRyYXco
Y3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBp
bWFnZVNpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29k
aW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246OkRlZmF1bHQpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCShyZXZpc2lvbiAyNDg0NDIp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0
SEJJVE1BUE9mU2l6ZShIQklUTQogICAgIGlmIChzaXplKQogICAgICAgICBkcmF3RnJhbWVNYXRj
aGluZ1NvdXJjZVNpemUoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgs
IGJtcEluZm8uYm1IZWlnaHQpLCAqc2l6ZSwgQ29tcG9zaXRlQ29weSk7CiAgICAgZWxzZQotICAg
ICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJ
bmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBp
bWFnZVNpemUuaGVpZ2h0KCkpLCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwor
ICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBi
bXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgp
LCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGU6Ok5vcm1hbCwg
RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVsdCk7CiAK
ICAgICAvLyBEbyBjbGVhbnVwCiAgICAgY2Fpcm9fZGVzdHJveSh0YXJnZXRSZWYpOwpAQCAtMTAw
LDcgKzEwMCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmMKICAg
ICAgICAgaWYgKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlLmdldCgpKSA9
PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3Jj
U2l6ZS53aWR0aCgpKSkgewogICAgICAgICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3Vy
cmVudEZyYW1lOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBpOwotICAgICAgICAgICAg
ZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgp
LCBzcmNTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNv
ZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7Cisg
ICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNT
aXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpO
b3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246OkRlZmF1
bHQpOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEJpdG1hcElt
YWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjCiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29y
cmVjdCBzaXplIHdhcyBmb3VuZCwgZmFsbGJhY2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFt
ZQogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwotICAgIGRy
YXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgp
LCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERl
Y29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsK
KyAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUu
d2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9y
bWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpEZWZhdWx0
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURpcmVjdDJELmNwcAkocmV2aXNp
b24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgQml0bWFw
SW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmMKICAgICAgICAgaWYgKGltYWdlICYmIGNsYW1w
VG88aW50PihpbWFnZVNpemUuaGVpZ2h0KCkpID09IHN0YXRpY19jYXN0PGludD4oc3JjU2l6ZS5o
ZWlnaHQoKSkgJiYgY2xhbXBUbzxpbnQ+KGltYWdlU2l6ZS53aWR0aCgpKSA9PSBzdGF0aWNfY2Fz
dDxpbnQ+KHNyY1NpemUud2lkdGgoKSkpIHsKICAgICAgICAgICAgIHNpemVfdCBjdXJyZW50RnJh
bWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsKLSAg
ICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1Np
emUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5v
cm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKCkpOworICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwg
MC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJs
ZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0
aW9uOjpEZWZhdWx0KTsKICAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gY3VycmVudEZyYW1l
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC04OSw3ICs4OSw3IEBAIHZvaWQg
Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmMKIAogICAgIC8vIE5vIGltYWdlIG9m
IHRoZSBjb3JyZWN0IHNpemUgd2FzIGZvdW5kLCBmYWxsYmFjayB0byBkcmF3aW5nIHRoZSBjdXJy
ZW50IGZyYW1lCiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IEJpdG1hcEltYWdlOjpzaXplKCk7
Ci0gICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXpl
LndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5v
cm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKCkpOworICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGlt
YWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRN
b2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246
OkRlZmF1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdl
RGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMiw3ICsxMDIsNyBAQCBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihj
CiAgICAgcmV0dXJuIENvbG9yKCk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUm
IHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRN
b2RlLCBjb25zdCBJbWFnZU9yaWVudGF0aW9uJiBvcmllbnRhdGlvbikKK3ZvaWQgZHJhd05hdGl2
ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBC
bGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAg
IGF1dG8gcGxhdGZvcm1Db250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAJKHJldmlz
aW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIERyYWdJbWFnZVJlZiBkaXNzb2x2
ZURyYWdJbWFnZVRvRnJhY3Rpb24KICAgICByZXR1cm4gaW1hZ2U7CiB9CiAKLURyYWdJbWFnZVJl
ZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24pCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdl
KiBpbWFnZSwgSW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICByZXR1cm4gaW1hZ2UtPm5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvRHJhZ0ltYWdlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9EcmFnSW1hZ2VJT1MubW0JKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4
LDcgQEAgRHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZgogCiBzdGF0aWMg
ZmxvYXQgbWF4aW11bUFsbG93ZWREcmFnSW1hZ2VBcmVhID0gNjAwICogMTAyNDsKIAotRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1hZ2UsIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbikKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1h
Z2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQog
ewogICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT53aWR0aCgpIHx8ICFpbWFnZS0+aGVpZ2h0KCkp
CiAgICAgICAgIHJldHVybiBuaWw7CkBAIC05Niw5ICs5Niw3IEBAIERyYWdJbWFnZVJlZiBjcmVh
dGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW0KICAgICAgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQo
cmVuZGVyZXJDb250ZXh0LkNHQ29udGV4dCk7CiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKDAs
IGltYWdlU2l6ZS5oZWlnaHQpOwogICAgICAgICBjb250ZXh0LnNjYWxlKHsgYWRqdXN0ZWRJbWFn
ZVNjYWxlLCAtYWRqdXN0ZWRJbWFnZVNjYWxlIH0pOwotICAgICAgICBJbWFnZVBhaW50aW5nT3B0
aW9ucyBwYWludGluZ09wdGlvbnM7Ci0gICAgICAgIHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0
aW9uRGVzY3JpcHRpb24gPSBvcmllbnRhdGlvbjsKLSAgICAgICAgY29udGV4dC5kcmF3SW1hZ2Uo
KmltYWdlLCBGbG9hdFBvaW50KCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmll
bnRhdGlvbikpOwogICAgIH1dOwogICAgIHJldHVybiBpbWFnZUNvcHkuQ0dJbWFnZTsKIH0KQEAg
LTI3NCw3ICsyNzIsNyBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc2NhbGVEcmFnSW1hZ2UoUmV0
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVE
cmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCitS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1h
Z2VPcmllbnRhdGlvbikKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQkocmV2aXNpb24gMjQ4NDQyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtOTIsMTkgKzkyLDE4IEBAIFJldGFpblB0cjxOU0ltYWdlPiBkaXNzb2x2ZURyYWdJ
bWFnZVRvRnIKICAgICByZXR1cm4gZGlzc29sdmVkSW1hZ2U7CiB9CiAgICAgICAgIAotUmV0YWlu
UHRyPE5TSW1hZ2U+IGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1hZ2UsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikKK1JldGFpblB0cjxOU0ltYWdlPiBj
cmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBJbWFnZU9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKQogewogICAgIEZsb2F0U2l6ZSBzaXplID0gaW1hZ2UtPnNpemUoKTsKIAogICAg
IGlmIChpczxCaXRtYXBJbWFnZT4oKmltYWdlKSkgewotICAgICAgICBJbWFnZU9yaWVudGF0aW9u
IG9yaWVudGF0aW9uOwogICAgICAgICBCaXRtYXBJbWFnZSYgYml0bWFwSW1hZ2UgPSBkb3duY2Fz
dDxCaXRtYXBJbWFnZT4oKmltYWdlKTsKICAgICAgICAgSW50U2l6ZSBzaXplUmVzcGVjdGluZ09y
aWVudGF0aW9uID0gYml0bWFwSW1hZ2Uuc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpOwogCi0g
ICAgICAgIGlmIChkZXNjcmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpID09IFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uKQorICAgICAgICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VPcmll
bnRhdGlvbjo6RnJvbUltYWdlKQogICAgICAgICAgICAgb3JpZW50YXRpb24gPSBiaXRtYXBJbWFn
ZS5vcmllbnRhdGlvbkZvckN1cnJlbnRGcmFtZSgpOwogCi0gICAgICAgIGlmIChvcmllbnRhdGlv
biAhPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikgeworICAgICAgICBpZiAob3JpZW50YXRpb24g
IT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkgewogICAgICAgICAgICAgLy8gQ29uc3RydWN0IGEg
Y29ycmVjdGx5LXJvdGF0ZWQgY29weSBvZiB0aGUgaW1hZ2UgdG8gdXNlIGFzIHRoZSBkcmFnIGlt
YWdlLgogICAgICAgICAgICAgRmxvYXRSZWN0IGRlc3RSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZVJl
c3BlY3RpbmdPcmllbnRhdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9EcmFnSW1hZ2VDR1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTE4LDcgKzExOCw3IEBAIGV4aXQ6CiAgICAgcmV0dXJuIGhibXAubGVhaygpOwogfQogICAgIAot
RHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24pCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUlt
YWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgSFduZERDIGRjKDApOwog
ICAgIGF1dG8gd29ya2luZ0RDID0gYWRvcHRHRElPYmplY3QoOjpDcmVhdGVDb21wYXRpYmxlREMo
ZGMpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFn
ZUNhaXJvV2luLmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0RyYWdJbWFnZUNhaXJvV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0
Niw3IEBAIGV4aXQ6CiAgICAgcmV0dXJuIGhibXAubGVhaygpOwogfQogICAgIAotRHJhZ0ltYWdl
UmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24pCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdl
KiBpbWcsIEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgSFduZERDIGRjKDApOwogICAgIGF1dG8g
d29ya2luZ0RDID0gYWRvcHRHRElPYmplY3QoOjpDcmVhdGVDb21wYXRpYmxlREMoZGMpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VEaXJlY3QyRC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZURpcmVjdDJE
LmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdJbWFnZURpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBEcmFn
SW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmCiAgICAgcmV0dXJuIGhibXAubGVh
aygpOwogfQogCi1EcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBp
bWcsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFn
SW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICBIV25k
REMgZGMobnVsbHB0cik7CiAgICAgYXV0byB3b3JraW5nREMgPSBhZG9wdEdESU9iamVjdCg6OkNy
ZWF0ZUNvbXBhdGlibGVEQyhkYykpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05NTUsNyArOTU1LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRG
aWxsTGF5ZQogCiAgICAgICAgICAgICBhdXRvIGludGVycG9sYXRpb24gPSBjaG9vc2VJbnRlcnBv
bGF0aW9uUXVhbGl0eShjb250ZXh0LCAqaW1hZ2UsICZiZ0xheWVyLCBnZW9tZXRyeS50aWxlU2l6
ZSgpKTsKICAgICAgICAgICAgIGF1dG8gZGVjb2RpbmdNb2RlID0gZGVjb2RpbmdNb2RlRm9ySW1h
Z2VEcmF3KCppbWFnZSwgcGFpbnRJbmZvKTsKLSAgICAgICAgICAgIGF1dG8gZHJhd1Jlc3VsdCA9
IGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBnZW9tZXRyeS5kZXN0UmVjdCgpLCB0b0xh
eW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5LnRpbGVTaXplKCks
IGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwg
YmdMYXllci5ibGVuZE1vZGUoKSwgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24oKSwgaW50ZXJwb2xhdGlvbikpOworICAgICAgICAgICAgYXV0byBkcmF3UmVzdWx0ID0g
Y29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5
b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwg
Z2VvbWV0cnkuc3BhY2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBi
Z0xheWVyLmJsZW5kTW9kZSgpLCBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb246OkRlZmF1
bHQsIGludGVycG9sYXRpb24pKTsKICAgICAgICAgICAgIGlmIChkcmF3UmVzdWx0ID09IEltYWdl
RHJhd1Jlc3VsdDo6RGlkUmVxdWVzdERlY29kaW5nKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KGJnSW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSk7CiAgICAgICAgICAgICAgICAgYmdJbWFnZS0+Y2Fj
aGVkSW1hZ2UoKS0+YWRkQ2xpZW50V2FpdGluZ0ZvckFzeW5jRGVjb2RpbmcoKnRoaXMpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAkocmV2aXNpb24g
MjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDMwLDE2ICsyMDMwLDE4IEBAIGJvb2wgUmVuZGVyRWxlbWVudDo6
Y2hlY2tGb3JSZXBhaW50RHVyaW4KICAgICByZXR1cm4gIXNldHRpbmdzKCkucmVwYWludE91dHNp
ZGVMYXlvdXRFbmFibGVkKCk7CiB9CiAKLVJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBSZW5k
ZXJFbGVtZW50OjpzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0CitJbWFnZU9y
aWVudGF0aW9uIFJlbmRlckVsZW1lbnQ6OmltYWdlT3JpZW50YXRpb24oKSBjb25zdAogewogI2lm
IFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCiAgICAgLy8gVGhpcyBjYW4g
b25seSBiZSBlbmFibGVkIGZvciBwb3J0cyB3aGljaCBob25vciB0aGUgb3JpZW50YXRpb24gZmxh
ZyBpbiB0aGVpciBkcmF3aW5nIGNvZGUuCiAgICAgaWYgKGRvY3VtZW50KCkuaXNJbWFnZURvY3Vt
ZW50KCkpCi0gICAgICAgIHJldHVybiBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbjsKKyAgICAgICAg
cmV0dXJuIEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZTsKICNlbmRpZgogICAgIC8vIFJlc3Bl
Y3QgdGhlIGltYWdlJ3Mgb3JpZW50YXRpb24gaWYgaXQncyBiZWluZyB1c2VkIGFzIGEgZnVsbC1w
YWdlIGltYWdlIG9yIGl0J3MKICAgICAvLyBhbiA8aW1nPiBhbmQgdGhlIHNldHRpbmcgdG8gcmVz
cGVjdCBpdCBldmVyeXdoZXJlIGlzIHNldC4KLSAgICByZXR1cm4gc2V0dGluZ3MoKS5zaG91bGRS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpICYmIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQo
KSkgPyBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA6IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRp
b247CisgICAgaWYgKHNldHRpbmdzKCkuc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSAm
JiBpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkpKQorICAgICAgICByZXR1cm4gSW1hZ2VP
cmllbnRhdGlvbjo6RnJvbUltYWdlOworICAgIHJldHVybiBzdHlsZSgpLmltYWdlT3JpZW50YXRp
b24oKTsKIH0KIAogdm9pZCBSZW5kZXJFbGVtZW50OjphZGp1c3RGcmFnbWVudGVkRmxvd1N0YXRl
T25Db250YWluaW5nQmxvY2tDaGFuZ2VJZk5lZWRlZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmgJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNCw3ICsy
MDQsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9ja0ZvckZpeGVk
UG9zaXRpb24oKSBjb25zdDsKICAgICBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrRm9yQWJz
b2x1dGVQb3NpdGlvbigpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVzcGVjdEltYWdl
T3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VPcmllbnRhdGlvbiBpbWFnZU9yaWVudGF0aW9uKCkgY29u
c3Q7CiAKICAgICB2b2lkIHJlbW92ZUZyb21SZW5kZXJGcmFnbWVudGVkRmxvdygpOwogICAgIHZp
cnR1YWwgdm9pZCByZXNldEVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93QW5kQ2hpbGRJbmZvSW5jbHVk
aW5nRGVzY2VuZGFudHMoUmVuZGVyRnJhZ21lbnRlZEZsb3cqKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAkocmV2aXNpb24g
MjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDggKzIyNCw3IEBAIHZvaWQgUmVuZGVyRW1iZWRk
ZWRPYmplY3Q6OnBhaW50U25hcHNob3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50ZXJwb2xh
dGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNv
bnRleHQsIGltYWdlLCAmaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7Ci0gICAgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdElt
YWdlT3JpZW50YXRpb24oKSwgc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAgIGNvbnRl
eHQuZHJhd0ltYWdlKGltYWdlLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3Jp
ZW50YXRpb25EZXNjcmlwdGlvbiwgaW50ZXJwb2xhdGlvbikpOworICAgIGNvbnRleHQuZHJhd0lt
YWdlKGltYWdlLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoaW1hZ2VPcmllbnRh
dGlvbigpLCBpbnRlcnBvbGF0aW9uKSk7CiB9CiAKIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6
OnBhaW50Q29udGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY5LDExICs0NjksNyBAQCB2b2lkIFJlbmRlcklt
YWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mCiAgICAgICAgICAgICAgICAgICAgIGNlbnRlclkg
PSAwOwogICAgICAgICAgICAgICAgIGltYWdlT2Zmc2V0ID0gTGF5b3V0U2l6ZShsZWZ0Qm9yZGVy
ICsgbGVmdFBhZCArIGNlbnRlclggKyBtaXNzaW5nSW1hZ2VCb3JkZXJXaWR0aCwgdG9wQm9yZGVy
ICsgdG9wUGFkICsgY2VudGVyWSArIG1pc3NpbmdJbWFnZUJvcmRlcldpZHRoKTsKIAotICAgICAg
ICAgICAgICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0
aW9uKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkpOwotI2lmIEVOQUJMRShDU1NfSU1B
R0VfT1JJRU5UQVRJT04pCi0gICAgICAgICAgICAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5z
ZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7Ci0jZW5k
aWYKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHNuYXBSZWN0VG9E
ZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBpbWFnZVNp
emUpLCBkZXZpY2VTY2FsZUZhY3RvciksIG9yaWVudGF0aW9uRGVzY3JpcHRpb24pOworICAgICAg
ICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc25hcFJlY3RUb0RldmljZVBpeGVs
cyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdlU2l6ZSksIGRldmlj
ZVNjYWxlRmFjdG9yKSwgaW1hZ2VPcmllbnRhdGlvbigpKTsKICAgICAgICAgICAgICAgICBlcnJv
clBpY3R1cmVEcmF3biA9IHRydWU7CiAgICAgICAgICAgICB9CiAKQEAgLTYzNSw5ICs2MzEsOCBA
QCBJbWFnZURyYXdSZXN1bHQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1JlCiAgICAgaWYgKGlzPEJp
dG1hcEltYWdlPihpbWFnZSkpCiAgICAgICAgIGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2Up
LnVwZGF0ZUZyb21TZXR0aW5ncyhzZXR0aW5ncygpKTsKIAotICAgIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uKCksIHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICAgICBhdXRvIGRlY29kaW5n
TW9kZSA9IGRlY29kaW5nTW9kZUZvckltYWdlRHJhdygqaW1hZ2UsIHBhaW50SW5mbyk7Ci0gICAg
YXV0byBkcmF3UmVzdWx0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltZywgcmVj
dCwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZTo6Tm9y
bWFsLCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIGludGVycG9sYXRpb24p
KTsKKyAgICBhdXRvIGRyYXdSZXN1bHQgPSBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZSgq
aW1nLCByZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgaW1hZ2VPcmllbnRhdGlvbigpLCBpbnRlcnBvbGF0
aW9uKSk7CiAgICAgaWYgKGRyYXdSZXN1bHQgPT0gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1ZXN0
RGVjb2RpbmcpCiAgICAgICAgIGltYWdlUmVzb3VyY2UoKS5jYWNoZWRJbWFnZSgpLT5hZGRDbGll
bnRXYWl0aW5nRm9yQXN5bmNEZWNvZGluZygqdGhpcyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiAyNDg0NDIp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjQ3Niw3ICsyNDc2LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6
OmlzRGlyZWN0bHlDb21wbwogICAgICAgICBpZiAoIWlzPEJpdG1hcEltYWdlPihpbWFnZSkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKGRvd25jYXN0PEJpdG1hcElt
YWdlPigqaW1hZ2UpLm9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgIT0gRGVmYXVsdEltYWdl
T3JpZW50YXRpb24pCisgICAgICAgIGlmIChkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKS5v
cmllbnRhdGlvbkZvckN1cnJlbnRGcmFtZSgpICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShXUEUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVk
UGx1Z0luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4uY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDUsOCArMTQ1LDcgQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFw
cwogICAgICAgICByZXR1cm47CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0
aW9uID0gY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgKmltYWdlLCBpbWFnZSwg
YWxpZ25lZFJlY3Quc2l6ZSgpKTsKLSAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3Jp
ZW50YXRpb25EZXNjcmlwdGlvbihzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpLCBzdHls
ZSgpLmltYWdlT3JpZW50YXRpb24oKSk7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBh
bGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwg
aW50ZXJwb2xhdGlvbikpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgYWxpZ25lZFJl
Y3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlv
bikpOwogfQogCiBDdXJzb3JEaXJlY3RpdmUgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmdldEN1
cnNvcihjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIEN1cnNvciYgb3ZlcnJpZGVDdXJzb3IpIGNv
bnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1Miw3ICs3NTIsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gV2ViQ29y
ZTo6aXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSh3cml0aW5nTW9kZSgpKTsgfQogICAgIGJvb2wg
aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjppc0Zs
aXBwZWRXcml0aW5nTW9kZSh3cml0aW5nTW9kZSgpKTsgfQogCi0gICAgSW1hZ2VPcmllbnRhdGlv
bkVudW0gaW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0OworICAgIEltYWdlT3JpZW50YXRpb24gaW1h
Z2VPcmllbnRhdGlvbigpIGNvbnN0OwogCiAgICAgSW1hZ2VSZW5kZXJpbmcgaW1hZ2VSZW5kZXJp
bmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZVJlbmRlcmluZz4obV9yYXJlSW5o
ZXJpdGVkRGF0YS0+aW1hZ2VSZW5kZXJpbmcpOyB9CiAKQEAgLTk1MSw3ICs5NTEsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAgdm9p
ZCBzZXRJbWFnZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb25FbnVtIHYpIHsgU0VUX1ZBUiht
X3JhcmVJbmhlcml0ZWREYXRhLCBpbWFnZU9yaWVudGF0aW9uLCBzdGF0aWNfY2FzdDxpbnQ+KHYp
KTsgfQorICAgIHZvaWQgc2V0SW1hZ2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIHYpIHsg
U0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBpbWFnZU9yaWVudGF0aW9uLCBzdGF0aWNfY2Fz
dDxpbnQ+KHYpKTsgfQogI2VuZGlmCiAKICAgICB2b2lkIHNldEltYWdlUmVuZGVyaW5nKEltYWdl
UmVuZGVyaW5nIHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBpbWFnZVJlbmRlcmlu
Zywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpKTsgfQpAQCAtMTU4Miw3ICsxNTgyLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBPcHRpb25TZXQ8VGV4dEVtcGhhc2lzUG9zaXRpb24+IGluaXRpYWxU
ZXh0RW1waGFzaXNQb3NpdGlvbigpIHsgcmV0dXJuIHsgVGV4dEVtcGhhc2lzUG9zaXRpb246Ok92
ZXIsIFRleHRFbXBoYXNpc1Bvc2l0aW9uOjpSaWdodCB9OyB9CiAgICAgc3RhdGljIFJ1YnlQb3Np
dGlvbiBpbml0aWFsUnVieVBvc2l0aW9uKCkgeyByZXR1cm4gUnVieVBvc2l0aW9uOjpCZWZvcmU7
IH0KICAgICBzdGF0aWMgTGluZUJveENvbnRhaW4gaW5pdGlhbExpbmVCb3hDb250YWluKCkgeyBy
ZXR1cm4gTGluZUJveENvbnRhaW5CbG9jayB8IExpbmVCb3hDb250YWluSW5saW5lIHwgTGluZUJv
eENvbnRhaW5SZXBsYWNlZDsgfQotICAgIHN0YXRpYyBJbWFnZU9yaWVudGF0aW9uRW51bSBpbml0
aWFsSW1hZ2VPcmllbnRhdGlvbigpIHsgcmV0dXJuIE9yaWdpblRvcExlZnQ7IH0KKyAgICBzdGF0
aWMgSW1hZ2VPcmllbnRhdGlvbiBpbml0aWFsSW1hZ2VPcmllbnRhdGlvbigpIHsgcmV0dXJuIElt
YWdlT3JpZW50YXRpb246OkRlZmF1bHQ7IH0KICAgICBzdGF0aWMgSW1hZ2VSZW5kZXJpbmcgaW5p
dGlhbEltYWdlUmVuZGVyaW5nKCkgeyByZXR1cm4gSW1hZ2VSZW5kZXJpbmc6OkF1dG87IH0KICAg
ICBzdGF0aWMgSW1hZ2VSZXNvbHV0aW9uU291cmNlIGluaXRpYWxJbWFnZVJlc29sdXRpb25Tb3Vy
Y2UoKSB7IHJldHVybiBJbWFnZVJlc29sdXRpb25Tb3VyY2U6OlNwZWNpZmllZDsgfQogICAgIHN0
YXRpYyBJbWFnZVJlc29sdXRpb25TbmFwIGluaXRpYWxJbWFnZVJlc29sdXRpb25TbmFwKCkgeyBy
ZXR1cm4gSW1hZ2VSZXNvbHV0aW9uU25hcDo6Tm9uZTsgfQpAQCAtMjA5MSwxMiArMjA5MSwxMiBA
QCBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aGFzSW5saW5lQ29sdW1uCiAgICAgcmV0dXJuIGF4
aXMgPT0gQ29sdW1uQXhpczo6QXV0byB8fCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID09IChh
eGlzID09IENvbHVtbkF4aXM6Okhvcml6b250YWwpOwogfQogCi1pbmxpbmUgSW1hZ2VPcmllbnRh
dGlvbkVudW0gUmVuZGVyU3R5bGU6OmltYWdlT3JpZW50YXRpb24oKSBjb25zdAoraW5saW5lIElt
YWdlT3JpZW50YXRpb24gUmVuZGVyU3R5bGU6OmltYWdlT3JpZW50YXRpb24oKSBjb25zdAogewog
I2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PEltYWdlT3JpZW50YXRpb25FbnVtPihtX3JhcmVJbmhlcml0ZWREYXRhLT5pbWFnZU9yaWVudGF0
aW9uKTsKKyAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbihtX3JhcmVJbmhlcml0ZWREYXRhLT5p
bWFnZU9yaWVudGF0aW9uKTsKICNlbHNlCi0gICAgcmV0dXJuIERlZmF1bHRJbWFnZU9yaWVudGF0
aW9uOworICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpEZWZhdWx0OwogI2VuZGlmCiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2aXNpb24g
MjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjAyLDcgKzIwMiw3IEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6
ZHJhd0ZvckNvbnRhaW4KIAogICAgIGZyYW1lVmlldygpLT5zY3JvbGxUb0ZyYWdtZW50KGluaXRp
YWxGcmFnbWVudFVSTCk7CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgcmVzdWx0ID0gZHJhdyhjb250
ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmMsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIERlY29kaW5n
TW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICBJ
bWFnZURyYXdSZXN1bHQgcmVzdWx0ID0gZHJhdyhjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmMs
IGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdl
T3JpZW50YXRpb246OkRlZmF1bHQpOwogCiAgICAgc2V0SW1hZ2VPYnNlcnZlcihvYnNlcnZlcik7
CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIyMSw3ICsyMjEsNyBAQCBOYXRpdmVJbWFnZVB0ciBT
VkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDCiAgICAgaWYgKCFidWZmZXIpIC8vIGZhaWxlZCB0byBh
bGxvY2F0ZSBpbWFnZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGRyYXcoYnVmZmVy
LT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1v
ZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKCkpOworICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgp
LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpT
eW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVsdCk7CiAKICAgICAvLyBGSVhNRTog
V0soQnVnIDExMzY1Nyk6IFdlIHNob3VsZCB1c2UgRG9udENvcHlCYWNraW5nU3RvcmUgaGVyZS4K
ICAgICByZXR1cm4gYnVmZmVyLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSktPm5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCk7CkBAIC0yNDcsNyArMjQ3LDcgQEAgTmF0aXZlSW1hZ2VQdHIg
U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbgogICAgIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEIHBs
YXRmb3JtQ29udGV4dChuYXRpdmVJbWFnZVRhcmdldC5nZXQoKSk7CiAgICAgR3JhcGhpY3NDb250
ZXh0IGxvY2FsQ29udGV4dCgmcGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1h
cFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOwogCi0gICAgZHJhdyhsb2NhbENvbnRl
eHQsIHJlY3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1h
bCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KCkpOworICAgIGRyYXcobG9jYWxDb250ZXh0LCByZWN0KCksIHJlY3QoKSwgQ29tcG9zaXRlU291
cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIElt
YWdlT3JpZW50YXRpb246OkRlZmF1bHQpOwogCiAgICAgcmV0dXJuIG5hdGl2ZUltYWdlOwogfQpA
QCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVy
KEcKICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc2NhbGVkU3JjUmVj
dCwgdW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3As
IGJsZW5kTW9kZSk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJs
ZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCitJbWFn
ZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIElt
YWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5oCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc3RhcnRBbmltYXRpb25UaW1lckZpcmVkKCk7CiAKICAgICBleHBsaWNpdCBT
VkdJbWFnZShJbWFnZU9ic2VydmVyJik7Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0
b1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKSBmaW5hbDsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHRvUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uKSBmaW5hbDsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ZvckNvbnRh
aW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxv
YXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlKTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFp
bmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywKICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IsIGNv
bnN0IEZsb2F0UmVjdCYsIEJsZW5kTW9kZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDI0ODQ0
MikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgRmxvYXRTaXplIFNWR0ltYWdlRm9y
Q29udGFpbmVyOjpzaXplKCkgYwogfQogCiBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2VGb3JDb250
YWluZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsCi0gICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24pCisgICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIHJldHVybiBtX2ltYWdlLT5kcmF3Rm9yQ29udGFp
bmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV9jb250YWluZXJab29tLCBtX2luaXRpYWxG
cmFnbWVudFVSTCwgZHN0UmVjdCwgc3JjUmVjdCwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JD
b250YWluZXIuaAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcg
QEAgcHVibGljOgogICAgICAgICBtX2ltYWdlLT5jb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhp
bnRyaW5zaWNXaWR0aCwgaW50cmluc2ljSGVpZ2h0LCBpbnRyaW5zaWNSYXRpbyk7CiAgICAgfQog
Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVj
b2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIGZpbmFsOworICAgIEltYWdl
RHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbikgZmluYWw7CiAKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlKSBmaW5hbDsKIApJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0
ODQ1MikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTktMDgtMDggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFw
cGxlLmNvbT4KKworICAgICAgICBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiBzaG91bGQg
YmUgYSB2YWx1ZSBpbiBJbWFnZU9yaWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6aW1hZ2VQb3NpdGlvbkluZm9ybWF0aW9uKToKKwogMjAx
OS0wOC0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB0
aHJlYWRpbmcgYXNzZXJ0aW9ucyB0byBXZWJTdG9yYWdlIGNvZGUKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCShyZXZpc2lv
biAyNDg0NDIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYzOCw4ICsyNjM4LDcgQEAgc3RhdGljIHZvaWQg
aW1hZ2VQb3NpdGlvbkluZm9ybWF0aW9uKFdlYgogICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
ID0gcmVuZGVySW1hZ2Uuc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKTsKLSAgICBncmFw
aGljc0NvbnRleHQtPmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UmVjdCgwLCAwLCBiaXRtYXBTaXpl
LndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pKTsKKyAgICBncmFwaGljc0NvbnRleHQt
PmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UmVjdCgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJp
dG1hcFNpemUuaGVpZ2h0KCkpLCByZW5kZXJJbWFnZS5pbWFnZU9yaWVudGF0aW9uKCkpOwogICAg
IGluZm8uaW1hZ2UgPSBzaGFyZWRCaXRtYXA7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375868</attachid>
            <date>2019-08-08 17:23:29 -0700</date>
            <delta_ts>2019-08-08 17:54:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200553-20190808172328.patch</filename>
            <type>text/plain</type>
            <size>98074</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODQ1MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2OCBAQAorMjAxOS0wOC0wOCAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIHNob3VsZFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uIHNob3VsZCBiZSBhIHZhbHVlIGluIEltYWdlT3JpZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDU1
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaXMgYSBzdGVwIHRvd2FyZHMgaW1wbGVtZW50aW5nIHRoZSBjc3MgaW1hZ2Utb3JpZW50
YXRpb24uCisKKyAgICAgICAgSW5zdGVhZCBvZiBoYXZpbmcgSW1hZ2VPcmllbnRhdGlvbkVudW0s
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiwKKyAgICAgICAgSW1hZ2VPcmllbnRhdGlvbiBh
bmQgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHdlIGFyZSBnb2luZyB0byBoYXZlIGEKKyAg
ICAgICAgc2luZ2xlIHN0cnVjdHVyZSBuYW1lZCAnSW1hZ2VPcmllbnRhdGlvbicgd2hpY2ggaXMg
YSB3cmFwcGVyIGZvcgorICAgICAgICBJbWFnZU9yaWVudGF0aW9uRW51bS4gVGhlIHN0cnVjdCB3
aWxsIGhhdmUgYSBjb25zdHJ1Y3RvciBhbmQgY2FzdGluZworICAgICAgICBvcGVyYXRvciBzdWNo
IHRoYXQgYXNzaWduaW5nIGFuIGVudW0gdmFsdWUgYW5kIGNvbXBhcmluZyB3aXRoIGFuIGVudW0K
KyAgICAgICAgdmFsdWUgd2lsbCBiZSBkb25lIGltcGxpY2l0bHkuCisKKyAgICAgICAgVGhlIFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uIHdpbGwgYmUgcmVwcmVzZW50ZWQgYXMgYSBuZXcgZW51bSB2
YWx1ZSBuYW1lZAorICAgICAgICAnRnJvbUltYWdlJyBpbiBJbWFnZU9yaWVudGF0aW9uRW51bS4K
KworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRHJhZ0ltYWdlIGNvbnN0KToKKyAgICAgICAg
KiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52
YXNFbGVtZW50OjpwYWludCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjppbWFnZVNpemVGb3JSZW5kZXJlciBj
b25zdCk6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnQ29udHJvbGxlcjo6ZG9JbWFnZURyYWcpOgorICAgICAgICAqIHBsYXRmb3JtL0Ry
YWdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNo
b3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9EcmFnSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Ny
b3NzZmFkZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpk
cmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YWRpZW50SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50
SW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVBhaW50aW5nT3B0aW9uczo6SW1hZ2VQYWludGluZ09wdGlvbnMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd0ltYWdlSW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3
VGlsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlT3JpZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRp
b246OkltYWdlT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlv
bjo6ZnJvbUVYSUZPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0
aW9uOjpvcGVyYXRvciBpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRh
dGlvbjo6dXNlc1dpZHRoQXNIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VP
cmllbnRhdGlvbjo6dHJhbnNmb3JtRnJvbURlZmF1bHQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VPcmllbnRhdGlvbjo6aXNWYWxpZE9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlT3JpZW50YXRpb246OmlzVmFsaWRFWElGT3JpZW50YXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uOjpJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uOjpzZXRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb246OnJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbjo6c2V0SW1hZ2VPcmllbnRhdGlvbkVudW0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uOjppbWFnZU9yaWVudGF0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb246OmZyb21FWElGVmFsdWUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbjo6b3BlcmF0b3Ig
SW1hZ2VPcmllbnRhdGlvbkVudW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VPcmllbnRhdGlvbjo6b3BlcmF0b3I9PSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uOjpvcGVyYXRvciE9IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZVNvdXJjZTo6ZHVtcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFt
ZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkSW1hZ2VH
ZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZl
SW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZG
T2JqQzo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpk
cmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9yaWVu
dGF0aW9uRnJvbVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6
OmZyYW1lT3JpZW50YXRpb25BdEluZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJ
bWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1l
c3NhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFZpZGVvU291cmNlT3JpZW50YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4
dHVyZU1hcHBlckZsYWdzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjp1cGRhdGVUZXh0dXJlU3Bh
Y2VNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVy
Ojpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpnZXRIQklUTUFQT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3
RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3
RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJ
bWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJh
Z0ltYWdlRnJvbUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdl
Q2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlRGlyZWN0MkQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6Omlt
YWdlT3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6
c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVt
YmVkZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0
OjpwYWludFNuYXBzaG90SW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OmlzRGlyZWN0bHlDb21wb3NpdGVkSW1hZ2UgY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6c2V0SW1hZ2VPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
aW5pdGlhbEltYWdlT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmltYWdlT3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ltYWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAqIHN2Zy9n
cmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oOgorCiAyMDE5LTA4LTA4ICBDaHJpcyBMb3Jk
ICA8Y2xvcmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBTaG9ydC1jdXQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRQYXJhbWV0ZXIoKSBmb3IgQUxQSEFfQklUUyB3aGVuIGFscGhhIGNoYW5uZWwg
aXMgZGlzYWJsZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTgxNyw3ICsxODE3LDYg
QEAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRnJhbWUuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9u
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbnRQb2ludC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExNzkwLDcgKzExNzkwLDYgQEAKIAkJQTg3MURG
RTEwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlcldpZGdldC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyV2lkZ2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTg3NDhCREYxMkNCRjJEQzAwMUZCQTQxIC8qIEhhc2hUb29scy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYXNoVG9vbHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTg3NDhENjYxMkNDMzc2MzAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VPcmllbnRhdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBODc0OEQ3NDEyQ0MzRjg5MDAxRkJBNDEg
LyogSW1hZ2VPcmllbnRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbWFnZU9yaWVudGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTg4MDVBRjExNkM5NkFFQTAwMEU5RDk4IC8qIElucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE4ODJEQTFGMTU5Mzg0NkEwMDAxMTVFRCAvKiBDU1NUb1N0eWxlTWFwLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1RvU3R5bGVNYXAuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODgyREEyMjE1OTM4NDhEMDAwMTE1RUQg
LyogQ1NTVG9TdHlsZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NU
b1N0eWxlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDU0Nyw3ICsyNDU0
Niw2IEBACiAJCQkJNTU3NkE1NjIxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuY3BwICov
LAogCQkJCTU1NzZBNTYzMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggKi8sCiAJCQkJ
QkM3RjQ0QTcwQjlFMzI0RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCAqLywKLQkJCQlBODc0
OEQ3NDEyQ0MzRjg5MDAxRkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5jcHAgKi8sCiAJCQkJQTg3
NDhENjYxMkNDMzc2MzAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uaCAqLywKIAkJCQk0OTI5
MUU0QTEzNDE3MkM4MDBFNzUzREUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmggKi8sCiAJCQkJNTU0
Njc1NzcxRkQxRkMxQTAwM0IxMEIwIC8qIEltYWdlU291cmNlLmNwcCAqLywKQEAgLTI1NTQyLDEx
ICsyNTU0MCwxMSBAQAogCQkJCUMyNEE1N0JCMjFGRUFGRUEwMDRDNkREMSAvKiBXSExTTFByZXBh
cmUuaCAqLywKIAkJCQk1MjJFMUExNzIyOTdENkQ0MDBFNUQzNkEgLyogV0hMU0xQcmVzZXJ2ZVZh
cmlhYmxlTGlmZXRpbWVzLmNwcCAqLywKIAkJCQk1MjJFMUExOTIyOTdENkQ0MDBFNUQzNkEgLyog
V0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmggKi8sCi0JCQkJNTI2QjNGMDEyMkZCN0JE
RDAwNzZEMzdEIC8qIFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9u
cy5jcHAgKi8sCi0JCQkJNTI2QjNGMDMyMkZCN0JERTAwNzZEMzdEIC8qIFdITFNMUHJ1bmVVbnJl
YWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oICovLAogCQkJCUMyMUJGNzNBMjFDRDhE
NzAwMDIyNzk3OSAvKiBXSExTTFByb2dyYW0uaCAqLywKIAkJCQkxQ0FBODJGNjIyNDJBRTA1MDBF
ODRCQkIgLyogV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcCAqLywKIAkJCQkxQ0FBODJGNzIyNDJB
RTA1MDBFODRCQkIgLyogV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmggKi8sCisJCQkJNTI2QjNGMDEy
MkZCN0JERDAwNzZEMzdEIC8qIFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1
bmN0aW9ucy5jcHAgKi8sCisJCQkJNTI2QjNGMDMyMkZCN0JERTAwNzZEMzdEIC8qIFdITFNMUHJ1
bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oICovLAogCQkJCTFDQTBDMkUw
MjFFRUI1RjUwMEExMTg2MCAvKiBXSExTTFJlY3Vyc2lvbkNoZWNrZXIuY3BwICovLAogCQkJCTFD
QTBDMkRFMjFFRUI1RjQwMEExMTg2MCAvKiBXSExTTFJlY3Vyc2lvbkNoZWNrZXIuaCAqLywKIAkJ
CQlDMjM0QTlBRDIxRTkyQzE5MDAzQzk4NEQgLyogV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5j
cHAgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAkocmV2aXNpb24gMjQ4
NDQyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU0Myw3ICs1NDMsNyBAQCBEcmFnSW1hZ2VSZWYgRGF0YVRyYW5zZmVyOjpjcmVhdGVE
cmFnSW1hCiAgICAgbG9jYXRpb24gPSBtX2RyYWdMb2NhdGlvbjsKIAogICAgIGlmIChtX2RyYWdJ
bWFnZSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShtX2RyYWdJbWFn
ZS0+aW1hZ2UoKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICByZXR1
cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKG1fZHJhZ0ltYWdlLT5pbWFnZSgpLCBJbWFnZU9y
aWVudGF0aW9uOjpEZWZhdWx0KTsKIAogICAgIGlmIChtX2RyYWdJbWFnZUVsZW1lbnQpIHsKICAg
ICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1fZHJhZ0ltYWdlRWxlbWVudC0+ZG9jdW1lbnQoKS5m
cmFtZSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTAsMTcgKzYxMCwxMCBAQCB2b2lkIEhUTUxDYW52
YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvCiAKICAgICAgICAgaWYgKHNob3VsZFBhaW50KSB7
CiAgICAgICAgICAgICBpZiAoaGFzQ3JlYXRlZEltYWdlQnVmZmVyKCkpIHsKLSAgICAgICAgICAg
ICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBidWZmZXIoKTsKLSAgICAgICAgICAgICAg
ICBpZiAoaW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1fcHJlc2VudGVk
SW1hZ2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uOwotI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5U
QVRJT04pCi0gICAgICAgICAgICAgICAgICAgICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNl
dEltYWdlT3JpZW50YXRpb25FbnVtKHJlbmRlcmVyKCktPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlv
bigpKTsKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2Uo
Km1fcHJlc2VudGVkSW1hZ2UsIHNuYXBwZWRJbnRSZWN0KHIpLCBJbWFnZVBhaW50aW5nT3B0aW9u
cyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVm
ZmVyLCBzbmFwcGVkSW50UmVjdChyKSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGlmIChtX3ByZXNlbnRlZEltYWdlKQorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRy
YXdJbWFnZSgqbV9wcmVzZW50ZWRJbWFnZSwgc25hcHBlZEludFJlY3QociksIHJlbmRlcmVyKCkt
PmltYWdlT3JpZW50YXRpb24oKSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoSW1hZ2VCdWZm
ZXIqIGltYWdlQnVmZmVyID0gYnVmZmVyKCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgc25hcHBlZEludFJlY3QocikpOwogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBpZiAoaXNHUFVCYXNlZCgpKQpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yODAsNyArMjgwLDcgQEAgRmxvYXRTaXplIENhY2hlZEltYWdlOjppbWFnZVNpemVG
b3JSZW5kZQogICAgIGlmICghbV9pbWFnZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGlm
IChpczxCaXRtYXBJbWFnZT4oKm1faW1hZ2UpICYmIHJlbmRlcmVyICYmIHJlbmRlcmVyLT5zaG91
bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQor
ICAgIGlmIChpczxCaXRtYXBJbWFnZT4oKm1faW1hZ2UpICYmIHJlbmRlcmVyICYmIHJlbmRlcmVy
LT5pbWFnZU9yaWVudGF0aW9uKCkgPT0gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlKQogICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCptX2ltYWdlKS5zaXplUmVzcGVjdGlu
Z09yaWVudGF0aW9uKCk7CiAKICAgICBpZiAoaXM8U1ZHSW1hZ2U+KCptX2ltYWdlKSAmJiBzaXpl
VHlwZSA9PSBVc2VkU2l6ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5NywxMCArMTE5NywxMCBAQCB2b2lkIERyYWdD
b250cm9sbGVyOjpkb0ltYWdlRHJhZyhFbGVtZW50CiAgICAgaWYgKCFlbGVtZW50LnJlbmRlcmVy
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBv
cmllbnRhdGlvbkRlc2NyaXB0aW9uKGVsZW1lbnQucmVuZGVyZXIoKS0+c2hvdWxkUmVzcGVjdElt
YWdlT3JpZW50YXRpb24oKSwgZWxlbWVudC5yZW5kZXJlcigpLT5zdHlsZSgpLmltYWdlT3JpZW50
YXRpb24oKSk7CisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IGVsZW1lbnQucmVu
ZGVyZXIoKS0+aW1hZ2VPcmllbnRhdGlvbigpOwogCiAgICAgSW1hZ2UqIGltYWdlID0gZ2V0SW1h
Z2UoZWxlbWVudCk7Ci0gICAgaWYgKGltYWdlICYmICFsYXlvdXRSZWN0LmlzRW1wdHkoKSAmJiBz
aG91bGRVc2VDYWNoZWRJbWFnZUZvckRyYWdJbWFnZSgqaW1hZ2UpICYmIChkcmFnSW1hZ2UgPSBE
cmFnSW1hZ2UgeyBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoaW1hZ2UsIGVsZW1lbnQucmVuZGVy
ZXIoKSA/IG9yaWVudGF0aW9uRGVzY3JpcHRpb24gOiBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24oKSkgfSkpIHsKKyAgICBpZiAoaW1hZ2UgJiYgIWxheW91dFJlY3QuaXNFbXB0eSgpICYmIHNo
b3VsZFVzZUNhY2hlZEltYWdlRm9yRHJhZ0ltYWdlKCppbWFnZSkgJiYgKGRyYWdJbWFnZSA9IERy
YWdJbWFnZSB7IGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShpbWFnZSwgb3JpZW50YXRpb24pIH0p
KSB7CiAgICAgICAgIGRyYWdJbWFnZSA9IERyYWdJbWFnZSB7IGZpdERyYWdJbWFnZVRvTWF4U2l6
ZShkcmFnSW1hZ2UuZ2V0KCksIGxheW91dFJlY3Quc2l6ZSgpLCBtYXhEcmFnSW1hZ2VTaXplKCkp
IH07CiAgICAgICAgIEludFNpemUgZml0dGVkU2l6ZSA9IGRyYWdJbWFnZVNpemUoZHJhZ0ltYWdl
LmdldCgpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCShyZXZp
c2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDIsMjAgKzEwMiwxNSBAQCBzdGF0aWMgRHJhZ0ltYWdlUmVmIGNy
ZWF0ZURyYWdJbWFnZUZyb21TCiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb247Ci0j
aWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKKyAgICBJbWFnZU9yaWVudGF0aW9uIG9y
aWVudGF0aW9uOwogICAgIGlmIChub2RlKSB7CiAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSBub2RlLT5yZW5kZXJlcigpOwogICAgICAgICBpZiAoIXJlbmRlcmVyIHx8ICFpczxSZW5k
ZXJFbGVtZW50PihyZW5kZXJlcikpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
ICAgICBhdXRvJiByZW5kZXJFbGVtZW50ID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKnJlbmRl
cmVyKTsKLSAgICAgICAgb3JpZW50YXRpb24uc2V0UmVzcGVjdEltYWdlT3JpZW50YXRpb24ocmVu
ZGVyRWxlbWVudC5zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKLSAgICAgICAgb3Jp
ZW50YXRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0ocmVuZGVyRWxlbWVudC5zdHlsZSgpLmlt
YWdlT3JpZW50YXRpb24oKSk7CisgICAgICAgIG9yaWVudGF0aW9uID0gZG93bmNhc3Q8UmVuZGVy
RWxlbWVudD4oKnJlbmRlcmVyKS5pbWFnZU9yaWVudGF0aW9uKCk7CiAgICAgfQotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0obm9kZSk7Ci0jZW5kaWYKKwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2Ug
PSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShXVEZNb3ZlKHNuYXBzaG90KSwgUHJlc2VydmVS
ZXNvbHV0aW9uOjpZZXMpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMzA1LDcgKzMwMCw3IEBAIERyYWdJbWFnZVJlZiBkaXNzb2x2ZURyYWdJbWFnZVRvRnJh
Y3Rpb24KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJ
bWFnZUZyb21JbWFnZShJbWFnZSosIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK0RyYWdJ
bWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9yaWVudGF0aW9u
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0
LDcgQEAgRHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZgogRHJhZ0ltYWdl
UmVmIHBsYXRmb3JtQWRqdXN0RHJhZ0ltYWdlRm9yRGV2aWNlU2NhbGVGYWN0b3IoRHJhZ0ltYWdl
UmVmLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rvcik7CiBEcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFn
SW1hZ2VUb0ZyYWN0aW9uKERyYWdJbWFnZVJlZiwgZmxvYXQgZGVsdGEpOwogCi1EcmFnSW1hZ2VS
ZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKTsKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqLCBJ
bWFnZU9yaWVudGF0aW9uKTsKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VJY29uRm9yQ2Fj
aGVkSW1hZ2VGaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKIAogV0VCQ09SRV9FWFBPUlQgRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvck5vZGUoRnJhbWUmLCBOb2RlJik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCShyZXZp
c2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw3ICsxODMsNyBAQCBib29sIEJpdG1hcElt
YWdlOjpub3RTb2xpZENvbG9yKCkKIH0KICNlbmRpZgogCi1JbWFnZURyYXdSZXN1bHQgQml0bWFw
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBC
bGVuZE1vZGUgbW9kZSwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2Rl
IG1vZGUsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb24pCiB7CiAgICAgaWYgKGRlc3RSZWN0LmlzRW1wdHkoKSB8fCBzcmNSZWN0LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTI2OCw4
ICsyNjgsNyBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpCiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRh
dGlvbihkZXNjcmlwdGlvbi5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAgIGlmIChkZXNjcmlwdGlv
bi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQor
ICAgIGlmIChvcmllbnRhdGlvbiA9PSBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UpCiAgICAg
ICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUp
OwogCiAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVj
dCwgSW50U2l6ZShzaXplKCkpLCBvcCwgbW9kZSwgb3JpZW50YXRpb24pOwpAQCAtMzA2LDcgKzMw
NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ28KICAgICAgICAg
Ly8gVGVtcG9yYXJpbHkgcmVzZXQgaW1hZ2Ugb2JzZXJ2ZXIsIHdlIGRvbid0IHdhbnQgdG8gcmVj
ZWl2ZSBhbnkgY2hhbmdlSW5SZWN0KCkgY2FsbHMgZHVlIHRvIHRoaXMgcmVsYXlvdXQuCiAgICAg
ICAgIHNldEltYWdlT2JzZXJ2ZXIobnVsbHB0cik7CiAKLSAgICAgICAgZHJhdyhidWZmZXItPmNv
bnRleHQoKSwgdGlsZVJlY3QsIHRpbGVSZWN0LCBvcCwgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgIGRy
YXcoYnVmZmVyLT5jb250ZXh0KCksIHRpbGVSZWN0LCB0aWxlUmVjdCwgb3AsIGJsZW5kTW9kZSwg
RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVsdCk7CiAK
ICAgICAgICAgc2V0SW1hZ2VPYnNlcnZlcihvYnNlcnZlcik7CiAgICAgICAgIGJ1ZmZlci0+Y29u
dmVydFRvTHVtaW5hbmNlTWFzaygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjEsNyArMTYxLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIHxkZXN0cm95QWxsfCBhbG9uZy4KICAg
ICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KGJvb2wgZGVzdHJveUFsbCA9IHRy
dWUpOwogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKSBvdmVycmlkZTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9u
KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0g
QmxlbmRNb2RlOjpOb3JtYWwpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lk
IGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9y
KSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHJldmlzaW9uIDI0ODQ0
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCB2b2lkIENyb3NzZmFk
ZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmCiAgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lM
YXllcigpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKQorSW1hZ2VEcmF3UmVzdWx0IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIGNvbnRleHQuc2V0
Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZS5oCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fY3Jvc3NmYWRlU2l6ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSW1hZ2VEcmF3
UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERl
Y29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAgICBJ
bWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKICAgICB2b2lk
IGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIG92ZXJyaWRlOwogCiAgICAgQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UoSW1hZ2UmIGZyb21JbWFnZSwgSW1hZ2UmIHRvSW1hZ2UsIGZsb2F0
IHBlcmNlbnRhZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY3Jvc3NmYWRlU2l6ZSwgY29uc3QgRmxvYXRT
aXplJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWlu
dEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9DdXN0b21QYWludEltYWdlLmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE3MCw3ICsxNzAsNyBAQCBJbWFnZURyYXdSZXN1bHQgQ3VzdG9tUGFpbnRJbWFnZTo6ZG9D
dXN0CiAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkRHJhdzsKIH0KIAotSW1hZ2VEcmF3
UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2Rp
bmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCitJbWFnZURyYXdSZXN1bHQgQ3Vz
dG9tUGFpbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIElt
YWdlT3JpZW50YXRpb24pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGRlc3RDb250ZXh0KTsKICAgICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24o
Y29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCShyZXZpc2lvbiAyNDg0NDIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKIAogICAgIEltYWdlRHJhd1Jl
c3VsdCBkb0N1c3RvbVBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwog
Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBm
aW5hbDsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBmaW5hbDsK
ICAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBmaW5hbDsKIAogICAg
IFdlYWtQdHI8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbj4gbV9wYWlu
dERlZmluaXRpb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5l
cmF0ZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dlbmVyYXRlZEltYWdlLmgJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKGJvb2wgLypk
ZXN0cm95QWxsKi8gPSB0cnVlKSBvdmVycmlkZSB7IH0KIAogcHJvdGVjdGVkOgotICAgIEltYWdl
RHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
LCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGUgPSAw
OworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlID0g
MDsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBv
dmVycmlkZSA9IDA7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YWRpZW50SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzksNyArMzksNyBAQCBHcmFkaWVudEltYWdlOjpHcmFkaWVudEltYWdlKEdyYWRpZW50JiBn
CiAKIEdyYWRpZW50SW1hZ2U6On5HcmFkaWVudEltYWdlKCkgPSBkZWZhdWx0OwogCi1JbWFnZURy
YXdSZXN1bHQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGlu
Z01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBHcmFk
aWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbikKIHsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
ZGVzdENvbnRleHQpOwogICAgIGRlc3RDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21w
b3NpdGVPcCwgYmxlbmRNb2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYWRpZW50SW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEdyYWRpZW50SW1hZ2UoR3Jh
ZGllbnQmLCBjb25zdCBGbG9hdFNpemUmKTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgZmluYWw7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRy
YXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7CiAgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSkgZmluYWw7CiAgICAgYm9vbCBpc0dyYWRpZW50SW1hZ2UoKSBjb25zdCBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYpIGNv
bnN0IGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MzMsNyArNzMzLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0ltYQogICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9u
LCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIAogICAgIEludGVycG9sYXRpb25RdWFs
aXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJuIGlt
YWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMu
bV9vcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhdygqdGhpcywg
ZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVy
YXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1fZGVjb2RpbmdNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uKTsK
IH0KIAogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1h
Z2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50
JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQpA
QCAtNzQ1LDcgKzc0NSw3IEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdU
aWwKICAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0
aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiAK
ICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlG
b3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1
YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBz
b3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0
ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMubV9kZWNvZGluZ01vZGUpOworICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoKnRo
aXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5k
TW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdP
cHRpb25zLm1fb3JpZW50YXRpb24pOwogfQogCiBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2Fs
ZUZhY3RvciwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjEx
LDI5ICsyMTEsMjkgQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKIH07CiAKIHN0cnVj
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyB7Ci0gICAgSW1hZ2VQYWludGluZ09wdGlvbnMoQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZSBkZWNvZGlu
Z01vZGUgPSBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
bigpLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9s
YXRpb25EZWZhdWx0KQorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5k
TW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IElt
YWdlT3JpZW50YXRpb246Ok5vbmUsIEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25R
dWFsaXR5ID0gSW50ZXJwb2xhdGlvbkRlZmF1bHQpCiAgICAgICAgIDogbV9jb21wb3NpdGVPcGVy
YXRvcihjb21wb3NpdGVPcGVyYXRvcikKICAgICAgICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUp
CiAgICAgICAgICwgbV9kZWNvZGluZ01vZGUoZGVjb2RpbmdNb2RlKQotICAgICAgICAsIG1fb3Jp
ZW50YXRpb25EZXNjcmlwdGlvbihvcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorICAgICAgICAsIG1f
b3JpZW50YXRpb24ob3JpZW50YXRpb24pCiAgICAgICAgICwgbV9pbnRlcnBvbGF0aW9uUXVhbGl0
eShpbnRlcnBvbGF0aW9uUXVhbGl0eSkKICAgICB7CiAgICAgfQogCi0gICAgSW1hZ2VQYWludGlu
Z09wdGlvbnMoSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRp
b24sIEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5ID0gSW50ZXJwb2xh
dGlvbkRlZmF1bHQsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9z
aXRlU291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBE
ZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykKKyAg
ICBJbWFnZVBhaW50aW5nT3B0aW9ucyhJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBJbnRl
cnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZh
dWx0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdN
b2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpCiAgICAgICAgIDog
bV9jb21wb3NpdGVPcGVyYXRvcihjb21wb3NpdGVPcGVyYXRvcikKICAgICAgICAgLCBtX2JsZW5k
TW9kZShibGVuZE1vZGUpCiAgICAgICAgICwgbV9kZWNvZGluZ01vZGUoZGVjb2RpbmdNb2RlKQot
ICAgICAgICAsIG1fb3JpZW50YXRpb25EZXNjcmlwdGlvbihvcmllbnRhdGlvbkRlc2NyaXB0aW9u
KQorICAgICAgICAsIG1fb3JpZW50YXRpb24ob3JpZW50YXRpb24pCiAgICAgICAgICwgbV9pbnRl
cnBvbGF0aW9uUXVhbGl0eShpbnRlcnBvbGF0aW9uUXVhbGl0eSkKICAgICB7CiAgICAgfQogCi0g
ICAgSW1hZ2VQYWludGluZ09wdGlvbnMoSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlv
blF1YWxpdHksIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0
aW9uID0gSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIENvbXBvc2l0ZU9wZXJhdG9yIGNv
bXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2Rp
bmdNb2RlOjpTeW5jaHJvbm91cykKKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhJbnRlcnBvbGF0
aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRh
dGlvbiA9IEltYWdlT3JpZW50YXRpb246Ok5vbmUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJs
ZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykKICAgICAgICAgOiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9w
ZXJhdG9yKQogICAgICAgICAsIG1fYmxlbmRNb2RlKGJsZW5kTW9kZSkKICAgICAgICAgLCBtX2Rl
Y29kaW5nTW9kZShkZWNvZGluZ01vZGUpCi0gICAgICAgICwgbV9vcmllbnRhdGlvbkRlc2NyaXB0
aW9uKG9yaWVudGF0aW9uRGVzY3JpcHRpb24pCisgICAgICAgICwgbV9vcmllbnRhdGlvbihvcmll
bnRhdGlvbikKICAgICAgICAgLCBtX2ludGVycG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25R
dWFsaXR5KQogICAgIHsKICAgICB9CkBAIC0yNDMsNyArMjQzLDcgQEAgc3RydWN0IEltYWdlUGFp
bnRpbmdPcHRpb25zIHsKICAgICBDb21wb3NpdGVPcGVyYXRvciBtX2NvbXBvc2l0ZU9wZXJhdG9y
OwogICAgIEJsZW5kTW9kZSBtX2JsZW5kTW9kZTsKICAgICBEZWNvZGluZ01vZGUgbV9kZWNvZGlu
Z01vZGU7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG1fb3JpZW50YXRpb25EZXNj
cmlwdGlvbjsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247CiAgICAgSW50ZXJw
b2xhdGlvblF1YWxpdHkgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eTsKIH07CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEltcGwuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTMg
KzQwLDEzIEBAIEdyYXBoaWNzQ29udGV4dEltcGw6On5HcmFwaGljc0NvbnRleHRJbXAKIEltYWdl
RHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3SW1hZ2VJbXBsKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGlt
YWdlUGFpbnRpbmdPcHRpb25zKQogewogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5l
ciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZShjb250ZXh0LCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICByZXR1cm4gaW1hZ2UuZHJhdyhj
b250ZXh0LCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBv
c2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWlu
dGluZ09wdGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50
YXRpb25EZXNjcmlwdGlvbik7CisgICAgcmV0dXJuIGltYWdlLmRyYXcoY29udGV4dCwgZGVzdGlu
YXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwg
aW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1f
ZGVjb2RpbmdNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uKTsKIH0KIAog
SW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRp
bGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1h
aW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoY29udGV4dCwgaW1hZ2VQ
YWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJuIGltYWdl
LmRyYXdUaWxlZChjb250ZXh0LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2lu
ZywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGlu
Z09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fZGVjb2RpbmdNb2Rl
KTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3Vy
Y2UsIHRpbGVTaXplLCBzcGFjaW5nLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb24p
OwogfQogCiBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1h
Z2VJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRT
aXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVS
dWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlv
bnMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCShy
ZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEltYWdlOjpkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmCiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJh
dygqdGhpcyk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNz
Q29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRQb2lu
dCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNpemUsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUs
IERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUpCitJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdU
aWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlZFRpbGVTaXpl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9u
IG9yaWVudGF0aW9uKQogewogICAgIENvbG9yIGNvbG9yID0gc2luZ2xlUGl4ZWxTb2xpZENvbG9y
KCk7CiAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgewpAQCAtMTg0LDcgKzE4NCw3IEBAIEltYWdl
RHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWMKICAgICAgICAgdmlzaWJsZVNyY1Jl
Y3Quc2V0WSgoZGVzdFJlY3QueSgpIC0gb25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgp
KTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0V2lkdGgoZGVzdFJlY3Qud2lkdGgoKSAvIHNj
YWxlLndpZHRoKCkpOwogICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRIZWlnaHQoZGVzdFJlY3Qu
aGVpZ2h0KCkgLyBzY2FsZS5oZWlnaHQoKSk7Ci0gICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRl
c3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgZGVjb2RpbmdNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRl
c3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgZGVjb2RpbmdNb2RlLCBvcmll
bnRhdGlvbik7CiAgICAgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTE5Niw3ICsx
OTYsNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljCiAgICAgICAg
ICAgICB2aXNpYmxlU3JjUmVjdC5zZXRZKChkZXN0UmVjdC55KCkgLSBvbmVUaWxlUmVjdC55KCkp
IC8gc2NhbGUuaGVpZ2h0KCkpOwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0V2lkdGgo
MSk7CiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRIZWlnaHQoZGVzdFJlY3QuaGVpZ2h0
KCkgLyBzY2FsZS5oZWlnaHQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBkZXN0
UmVjdCwgdmlzaWJsZVNyY1JlY3QsIG9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICByZXR1cm4gZHJh
dyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIG9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwg
ZGVjb2RpbmdNb2RlLCBvcmllbnRhdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHNpemUo
KS5oZWlnaHQoKSA9PSAxICYmIGludGVyc2VjdGlvbihvbmVUaWxlUmVjdCwgZGVzdFJlY3QpLndp
ZHRoKCkgPT0gZGVzdFJlY3Qud2lkdGgoKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IHZpc2li
bGVTcmNSZWN0OwpAQCAtMjA0LDcgKzIwNCw3IEBAIEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJh
d1RpbGVkKEdyYXBoaWMKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFkoMCk7CiAgICAg
ICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0aChkZXN0UmVjdC53aWR0aCgpIC8gc2NhbGUu
d2lkdGgoKSk7CiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRIZWlnaHQoMSk7Ci0gICAg
ICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIG9wLCBC
bGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24oKSk7CisgICAgICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNy
Y1JlY3QsIG9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdNb2RlLCBvcmllbnRhdGlvbik7
CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKQEAgLTIzNiw3ICsyMzYsNyBAQCBJbWFnZURyYXdS
ZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljCiAgICAgICAgICAgICAgICAgRmxvYXRSZWN0
IGZyb21SZWN0KHRvRmxvYXRQb2ludChjdXJyZW50VGlsZVJlY3QubG9jYXRpb24oKSAtIG9uZVRp
bGVSZWN0LmxvY2F0aW9uKCkpLCBjdXJyZW50VGlsZVJlY3Quc2l6ZSgpKTsKICAgICAgICAgICAg
ICAgICBmcm9tUmVjdC5zY2FsZSgxIC8gc2NhbGUud2lkdGgoKSwgMSAvIHNjYWxlLmhlaWdodCgp
KTsKIAotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRyYXcoY3R4dCwgdG9SZWN0LCBmcm9tUmVj
dCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBkcmF3KGN0eHQsIHRvUmVj
dCwgZnJvbVJlY3QsIG9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdNb2RlLCBvcmllbnRh
dGlvbik7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBJbWFnZURyYXdSZXN1bHQ6OkRp
ZFJlcXVlc3REZWNvZGluZykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgICAgICAgICB0b1ggKz0gY3VycmVudFRpbGVSZWN0LndpZHRoKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgJKHJldmlzaW9uIDI0ODQ0MikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE5MCw4ICsxOTAsOCBAQCBwcm90ZWN0ZWQ6CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZp
cnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3Np
dGVPcGVyYXRvcikgeyB9CiAjZW5kaWYKLSAgICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUs
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgPSAwOwotICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGlu
Z01vZGUpOworICAgIHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bikgPSAwOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29u
c3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pOwog
ICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6
ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbXBv
c2l0ZU9wZXJhdG9yKTsKIAogICAgIC8vIFN1cHBvcnRpbmcgdGlsZWQgZHJhd2luZwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAkocmV2aXNp
b24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFt
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgU3Vic2Ft
cGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
IH07CiAgICAgRGVjb2RpbmdPcHRpb25zIG1fZGVjb2RpbmdPcHRpb25zOwogCi0gICAgSW1hZ2VP
cmllbnRhdGlvbiBtX29yaWVudGF0aW9uIHsgRGVmYXVsdEltYWdlT3JpZW50YXRpb24gfTsKKyAg
ICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24geyBJbWFnZU9yaWVudGF0aW9uOjpOb25l
IH07CiAgICAgU2Vjb25kcyBtX2R1cmF0aW9uOwogICAgIGJvb2wgbV9oYXNBbHBoYSB7IHRydWUg
fTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVu
dGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VPcmllbnRhdGlvbi5oCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEw
NyArMjQsMTA3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgSW1hZ2VPcmllbnRhdGlv
bl9oCi0jZGVmaW5lIEltYWdlT3JpZW50YXRpb25faAorI3ByYWdtYSBvbmNlCiAKLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJGbG9h
dFNpemUuaCIKIAotY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwotY2xhc3MgRmxvYXRTaXplOworbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0vLyBUaGlzIGVudW0gaW50ZW50aW9uYWxseSBtYXRjaGVzIHRo
ZSBvcmllbnRhdGlvbiB2YWx1ZXMgZnJvbSB0aGUgRVhJRiBzcGVjLgotLy8gU2VlIEpFSVRBIENQ
LTM0NTEsIHBhZ2UgMTguIGh0dHA6Ly93d3cuZXhpZi5vcmcvRXhpZjItMi5QREYKLWVudW0gSW1h
Z2VPcmllbnRhdGlvbkVudW0gewotICAgIC8vICJUb3BMZWZ0IiBtZWFucyB0aGF0IHRoZSAwIHJv
dyBzdGFydHMgYXQgdGhlIFRvcCwgdGhlIDAgY29sdW1uIHN0YXJ0cyBhdCB0aGUgTGVmdC4KLSAg
ICBPcmlnaW5Ub3BMZWZ0ID0gMSwgLy8gZGVmYXVsdAotICAgIE9yaWdpblRvcFJpZ2h0ID0gMiwg
Ly8gbWlycm9yIGFsb25nIHktYXhpcwotICAgIE9yaWdpbkJvdHRvbVJpZ2h0ID0gMywgLy8gMTgw
IGRlZ3JlZSByb3RhdGlvbgotICAgIE9yaWdpbkJvdHRvbUxlZnQgPSA0LCAvLyBtaXJyb3IgYWxv
bmcgdGhlIHgtYXhpcwotICAgIE9yaWdpbkxlZnRUb3AgPSA1LCAvLyBtaXJyb3IgYWxvbmcgeC1h
eGlzICsgMjcwIGRlZ3JlZSBDVyByb3RhdGlvbgotICAgIE9yaWdpblJpZ2h0VG9wID0gNiwgLy8g
OTAgZGVncmVlIENXIHJvdGF0aW9uCi0gICAgT3JpZ2luUmlnaHRCb3R0b20gPSA3LCAvLyBtaXJy
b3IgYWxvbmcgeC1heGlzICsgOTAgZGVncmVlIENXIHJvdGF0aW9uCi0gICAgT3JpZ2luTGVmdEJv
dHRvbSA9IDgsIC8vIDI3MCBkZWdyZWUgQ1cgcm90YXRpb24KLSAgICAvLyBBbGwgb3RoZXIgdmFs
dWVzIGFyZSAicmVzZXJ2ZWQiIGFzIG9mIEVYSUYgMi4yCi0gICAgRGVmYXVsdEltYWdlT3JpZW50
YXRpb24gPSBPcmlnaW5Ub3BMZWZ0LAotfTsKK3N0cnVjdCBJbWFnZU9yaWVudGF0aW9uIHsKKyAg
ICBlbnVtIEltYWdlT3JpZW50YXRpb25FbnVtIHsKKyAgICAgICAgRnJvbUltYWdlICAgICAgICAg
PSAwLAorCisgICAgICAgIC8vIFRoaXMgcmFuZ2UgaW50ZW50aW9uYWxseSBtYXRjaGVzIHRoZSBv
cmllbnRhdGlvbiB2YWx1ZXMgZnJvbSB0aGUgRVhJRiBzcGVjLgorICAgICAgICAvLyBTZWUgSkVJ
VEEgQ1AtMzQ1MSwgcGFnZSAxOC4gaHR0cDovL3d3dy5leGlmLm9yZy9FeGlmMi0yLlBERgorICAg
ICAgICBPcmlnaW5Ub3BMZWZ0ICAgICA9IDEsIC8vIGRlZmF1bHQKKyAgICAgICAgT3JpZ2luVG9w
UmlnaHQgICAgPSAyLCAvLyBtaXJyb3IgYWxvbmcgeS1heGlzCisgICAgICAgIE9yaWdpbkJvdHRv
bVJpZ2h0ID0gMywgLy8gMTgwIGRlZ3JlZSByb3RhdGlvbgorICAgICAgICBPcmlnaW5Cb3R0b21M
ZWZ0ICA9IDQsIC8vIG1pcnJvciBhbG9uZyB0aGUgeC1heGlzCisgICAgICAgIE9yaWdpbkxlZnRU
b3AgICAgID0gNSwgLy8gbWlycm9yIGFsb25nIHgtYXhpcyArIDI3MCBkZWdyZWUgQ1cgcm90YXRp
b24KKyAgICAgICAgT3JpZ2luUmlnaHRUb3AgICAgPSA2LCAvLyA5MCBkZWdyZWUgQ1cgcm90YXRp
b24KKyAgICAgICAgT3JpZ2luUmlnaHRCb3R0b20gPSA3LCAvLyBtaXJyb3IgYWxvbmcgeC1heGlz
ICsgOTAgZGVncmVlIENXIHJvdGF0aW9uCisgICAgICAgIE9yaWdpbkxlZnRCb3R0b20gID0gOCwg
Ly8gMjcwIGRlZ3JlZSBDVyByb3RhdGlvbgorCisgICAgICAgIE5vbmUgICAgICAgICAgICAgID0g
T3JpZ2luVG9wTGVmdCwKKyAgICAgICAgRGVmYXVsdCAgICAgICAgICAgPSBOb25lLAorCisgICAg
ICAgIEVYSUZGaXJzdCAgICAgICAgID0gT3JpZ2luVG9wTGVmdCwKKyAgICAgICAgRVhJRkxhc3Qg
ICAgICAgICAgPSBPcmlnaW5MZWZ0Qm90dG9tLAorCisgICAgICAgIEZpcnN0ICAgICAgICAgICAg
ID0gRnJvbUltYWdlLAorICAgICAgICBMYXN0ICAgICAgICAgICAgICA9IEVYSUZMYXN0CisgICAg
fTsKIAotZW51bSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gewotICAgIERvTm90UmVzcGVj
dEltYWdlT3JpZW50YXRpb24gPSAwLAotICAgIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID0gMQot
fTsKKyAgICBJbWFnZU9yaWVudGF0aW9uKCkgPSBkZWZhdWx0OwogCi1zdHJ1Y3QgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uIHsKLSAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oUmVz
cGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uLAot
ICAgICAgICBJbWFnZU9yaWVudGF0aW9uRW51bSBvcmllbnRhdGlvbikKLSAgICAgICAgOiBtX3Jl
c3BlY3RPcmllbnRhdGlvbihzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKLSAgICAgICAg
LCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQorICAgIEltYWdlT3JpZW50YXRpb24oSW1hZ2VP
cmllbnRhdGlvbkVudW0gb3JpZW50YXRpb24pCisgICAgICAgIDogbV9vcmllbnRhdGlvbihvcmll
bnRhdGlvbikKICAgICB7CiAgICAgfQogCi0gICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KCkKLSAgICAgICAgOiBtX3Jlc3BlY3RPcmllbnRhdGlvbihEb05vdFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uKQotICAgICAgICAsIG1fb3JpZW50YXRpb24oRGVmYXVsdEltYWdlT3JpZW50YXRpb24p
CisgICAgZXhwbGljaXQgSW1hZ2VPcmllbnRhdGlvbihpbnQgb3JpZW50YXRpb24pCisgICAgICAg
IDogSW1hZ2VPcmllbnRhdGlvbihpc1ZhbGlkT3JpZW50YXRpb24ob3JpZW50YXRpb24pID8gc3Rh
dGljX2Nhc3Q8SW1hZ2VPcmllbnRhdGlvbkVudW0+KG9yaWVudGF0aW9uKSA6IE5vbmUpCiAgICAg
ewogICAgIH0KIAotICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbihSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCi0gICAgICAgIDog
bV9yZXNwZWN0T3JpZW50YXRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCi0gICAg
ICAgICwgbV9vcmllbnRhdGlvbihEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikKKyAgICBzdGF0aWMg
SW1hZ2VPcmllbnRhdGlvbiBmcm9tRVhJRk9yaWVudGF0aW9uKGludCBvcmllbnRhdGlvbikKICAg
ICB7CisgICAgICAgIHJldHVybiBpc1ZhbGlkRVhJRk9yaWVudGF0aW9uKG9yaWVudGF0aW9uKSA/
IHN0YXRpY19jYXN0PEltYWdlT3JpZW50YXRpb25FbnVtPihvcmllbnRhdGlvbikgOiBOb25lOwog
ICAgIH0KIAotICAgIHZvaWQgc2V0UmVzcGVjdEltYWdlT3JpZW50YXRpb24oUmVzcGVjdEltYWdl
T3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSB7IG1fcmVzcGVj
dE9yaWVudGF0aW9uID0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb247IH0KLSAgICBSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gcmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSB7IHJldHVy
biBtX3Jlc3BlY3RPcmllbnRhdGlvbjsgfQotCi0gICAgdm9pZCBzZXRJbWFnZU9yaWVudGF0aW9u
RW51bShJbWFnZU9yaWVudGF0aW9uRW51bSBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0g
b3JpZW50YXRpb247IH0KLSAgICBJbWFnZU9yaWVudGF0aW9uRW51bSBpbWFnZU9yaWVudGF0aW9u
KCkgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQorICAgIG9wZXJhdG9yIGludCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4obV9vcmllbnRhdGlvbik7IH0KIAotICAgIFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uRW51bSBtX3Jlc3BlY3RPcmllbnRhdGlvbjsKLSAgICBJbWFnZU9yaWVu
dGF0aW9uRW51bSBtX29yaWVudGF0aW9uOwotfTsKLQotY2xhc3MgSW1hZ2VPcmllbnRhdGlvbiB7
Ci1wdWJsaWM6Ci0gICAgSW1hZ2VPcmllbnRhdGlvbigpCi0gICAgICAgIDogbV9vcmllbnRhdGlv
bihEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikKKyAgICBib29sIHVzZXNXaWR0aEFzSGVpZ2h0KCkg
Y29uc3QKICAgICB7CisgICAgICAgIEFTU0VSVChpc1ZhbGlkRVhJRk9yaWVudGF0aW9uKG1fb3Jp
ZW50YXRpb24pKTsKKyAgICAgICAgLy8gVmFsdWVzIDUgdGhyb3VnaCA4IGFsbCBmbGlwIHRoZSB3
aWR0aC9oZWlnaHQuCisgICAgICAgIHJldHVybiBtX29yaWVudGF0aW9uID49IE9yaWdpbkxlZnRU
b3A7CiAgICAgfQogCi0gICAgZXhwbGljaXQgSW1hZ2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0
aW9uRW51bSBvcmllbnRhdGlvbikKLSAgICAgICAgOiBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9u
KQorICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1Gcm9tRGVmYXVsdChjb25zdCBGbG9hdFNp
emUmIGRyYXduU2l6ZSkgY29uc3QKICAgICB7CisgICAgICAgIGZsb2F0IHcgPSBkcmF3blNpemUu
d2lkdGgoKTsKKyAgICAgICAgZmxvYXQgaCA9IGRyYXduU2l6ZS5oZWlnaHQoKTsKKworICAgICAg
ICBzd2l0Y2ggKG1fb3JpZW50YXRpb24pIHsKKyAgICAgICAgY2FzZSBGcm9tSW1hZ2U6CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBBZmZpbmVU
cmFuc2Zvcm0oKTsKKyAgICAgICAgY2FzZSBPcmlnaW5Ub3BMZWZ0OgorICAgICAgICAgICAgcmV0
dXJuIEFmZmluZVRyYW5zZm9ybSgpOworICAgICAgICBjYXNlIE9yaWdpblRvcFJpZ2h0OgorICAg
ICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgtMSwgIDAsICAwLCAgMSwgIHcsIDApOwor
ICAgICAgICBjYXNlIE9yaWdpbkJvdHRvbVJpZ2h0OgorICAgICAgICAgICAgcmV0dXJuIEFmZmlu
ZVRyYW5zZm9ybSgtMSwgIDAsICAwLCAtMSwgIHcsIGgpOworICAgICAgICBjYXNlIE9yaWdpbkJv
dHRvbUxlZnQ6CisgICAgICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCAxLCAgMCwgIDAs
IC0xLCAgMCwgaCk7CisgICAgICAgIGNhc2UgT3JpZ2luTGVmdFRvcDoKKyAgICAgICAgICAgIHJl
dHVybiBBZmZpbmVUcmFuc2Zvcm0oIDAsICAxLCAgMSwgIDAsICAwLCAwKTsKKyAgICAgICAgY2Fz
ZSBPcmlnaW5SaWdodFRvcDoKKyAgICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oIDAs
ICAxLCAtMSwgIDAsICB3LCAwKTsKKyAgICAgICAgY2FzZSBPcmlnaW5SaWdodEJvdHRvbToKKyAg
ICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oIDAsIC0xLCAtMSwgIDAsICB3LCBoKTsK
KyAgICAgICAgY2FzZSBPcmlnaW5MZWZ0Qm90dG9tOgorICAgICAgICAgICAgcmV0dXJuIEFmZmlu
ZVRyYW5zZm9ybSggMCwgLTEsICAxLCAgMCwgIDAsIGgpOworICAgICAgICB9CisKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsK
ICAgICB9CiAKLSAgICBib29sIHVzZXNXaWR0aEFzSGVpZ2h0KCkgY29uc3QKK3ByaXZhdGU6Cisg
ICAgc3RhdGljIGJvb2wgaXNWYWxpZE9yaWVudGF0aW9uKGludCBvcmllbnRhdGlvbikKICAgICB7
Ci0gICAgICAgIC8vIFZhbHVlcyA1IHRocm91Z2ggOCBhbGwgZmxpcCB0aGUgd2lkdGgvaGVpZ2h0
LgotICAgICAgICByZXR1cm4gbV9vcmllbnRhdGlvbiA+PSBPcmlnaW5MZWZ0VG9wOworICAgICAg
ICByZXR1cm4gb3JpZW50YXRpb24gPj0gc3RhdGljX2Nhc3Q8aW50PihGaXJzdCkgJiYgb3JpZW50
YXRpb24gPD0gc3RhdGljX2Nhc3Q8aW50PihMYXN0KTsKICAgICB9CiAKLSAgICAvLyBJbWFnZU9y
aWVudGF0aW9uRW51bSBjdXJyZW50bHkgbWF0Y2hlcyBFWElGIHZhbHVlcywgaG93ZXZlciBjb2Rl
IG91dHNpZGUKLSAgICAvLyB0aGlzIGZ1bmN0aW9uIHNob3VsZCBuZXZlciBhc3N1bWUgdGhhdC4K
LSAgICBzdGF0aWMgSW1hZ2VPcmllbnRhdGlvbiBmcm9tRVhJRlZhbHVlKGludCBleGlmVmFsdWUp
Ci0gICAgewotICAgICAgICAvLyBWYWx1ZXMgZGlyZWN0IGZyb20gaW1hZ2VzIG1heSBiZSBpbnZh
bGlkLCBpbiB3aGljaCBjYXNlIHdlIHVzZSB0aGUgZGVmYXVsdC4KLSAgICAgICAgaWYgKGV4aWZW
YWx1ZSA8IE9yaWdpblRvcExlZnQgfHwgZXhpZlZhbHVlID4gT3JpZ2luTGVmdEJvdHRvbSkKLSAg
ICAgICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7Ci0gICAgICAgIHJldHVybiBJbWFn
ZU9yaWVudGF0aW9uKHN0YXRpY19jYXN0PEltYWdlT3JpZW50YXRpb25FbnVtPihleGlmVmFsdWUp
KTsKLSAgICB9Ci0KLSAgICAvLyBUaGlzIHRyYW5zZm9ybSBjYW4gYmUgdXNlZCBmb3IgZHJhd2lu
ZyBhbiBpbWFnZSBhY2NvcmRpbmcgdG8gdGhlIG9yaWVudGF0aW9uLgotICAgIC8vIEl0IHNob3Vs
ZCBiZSB1c2VkIGluIGEgcmlnaHQtaGFuZGVkIGNvb3JkaW5hdGUgc3lzdGVtLgotICAgIEFmZmlu
ZVRyYW5zZm9ybSB0cmFuc2Zvcm1Gcm9tRGVmYXVsdChjb25zdCBGbG9hdFNpemUmIGRyYXduU2l6
ZSkgY29uc3Q7Ci0KLSAgICBpbmxpbmUgb3BlcmF0b3IgSW1hZ2VPcmllbnRhdGlvbkVudW0oKSBj
b25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9Ci0gICAgCi0gICAgaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBJbWFnZU9yaWVudGF0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3Ro
ZXIubV9vcmllbnRhdGlvbiA9PSBtX29yaWVudGF0aW9uOyB9Ci0gICAgaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBJbWFnZU9yaWVudGF0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRVhJRk9yaWVudGF0aW9u
KGludCBvcmllbnRhdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBvcmllbnRhdGlvbiA+PSBz
dGF0aWNfY2FzdDxpbnQ+KEVYSUZGaXJzdCkgJiYgb3JpZW50YXRpb24gPD0gc3RhdGljX2Nhc3Q8
aW50PihFWElGTGFzdCk7CisgICAgfQogCi1wcml2YXRlOgotICAgIC8vIEZJWE1FOiBUaGlzIG9u
bHkgbmVlZHMgdG8gYmUgb25lIGJ5dGUuCi0gICAgSW1hZ2VPcmllbnRhdGlvbkVudW0gbV9vcmll
bnRhdGlvbjsKKyAgICBJbWFnZU9yaWVudGF0aW9uRW51bSBtX29yaWVudGF0aW9uIHsgTm9uZSB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gSW1hZ2VPcmllbnRh
dGlvbl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4OSw3ICs2ODks
NyBAQCB2b2lkIEltYWdlU291cmNlOjpkdW1wKFRleHRTdHJlYW0mIHRzKQogICAgIHRzLmR1bXBQ
cm9wZXJ0eSgic29saWQtY29sb3IiLCBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSk7CiAKICAgICBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoMCk7
Ci0gICAgaWYgKG9yaWVudGF0aW9uICE9IE9yaWdpblRvcExlZnQpCisgICAgaWYgKG9yaWVudGF0
aW9uICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgi
b3JpZW50YXRpb24iLCBvcmllbnRhdGlvbik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZElt
YWdlLmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NyArNDAsNyBAQCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6Ok5hbWVkSW1hZ2VHZW5lCiAgICAg
c2V0Q29udGFpbmVyU2l6ZShzaXplKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VH
ZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24pCitJbWFnZURyYXdSZXN1bHQgTmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBv
c2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRp
b24pCiB7CiAjaWYgVVNFKE5FV19USEVNRSkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdl
R2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIEltYWdl
RHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
LCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7Cisg
ICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAogICAgIE5h
bWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZShTdHJpbmcgbmFtZSwgY29uc3QgRmxvYXRTaXplJik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgJ
KHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgSW50U2l6ZSBuYXRp
dmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1hZwogYm9vbCBuYXRpdmVJbWFnZUhhc0FscGhhKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJik7CiBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRD
b2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEludFNpemUmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlLCBjb25zdCBJbWFnZU9yaWVudGF0aW9uJik7Cit2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEludFNpemUmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhj
b25zdCBOYXRpdmVJbWFnZVB0ciYpOwogICAgIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29k
ZXJBVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MzEsNyArNTMxLDcgQEAgYm9vbCBJbWFn
ZURlY29kZXJBVkZPYmpDOjpmcmFtZUlzQ29tcGxldAogCiBJbWFnZU9yaWVudGF0aW9uIEltYWdl
RGVjb2RlckFWRk9iakM6OmZyYW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3QKIHsK
LSAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbigpOworICAgIHJldHVybiBJbWFnZU9yaWVudGF0
aW9uOjpOb25lOwogfQogCiBTZWNvbmRzIEltYWdlRGVjb2RlckFWRk9iakM6OmZyYW1lRHVyYXRp
b25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAko
cmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODg5LDcgKzg4OSw3IEBA
IHZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXIKICAgICAgICAgQ2Fpcm86
OlN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24ocGxhdGZvcm1Db250ZXh0LCBjb21wb3NpdGVP
cGVyYXRvciwgYmxlbmRNb2RlKTsKIAogICAgIEZsb2F0UmVjdCBkc3QgPSBkZXN0UmVjdDsKLSAg
ICBpZiAob3JpZW50YXRpb24gIT0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pIHsKKyAgICBpZiAo
b3JpZW50YXRpb24gIT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkgewogICAgICAgICAvLyBJbWFn
ZU9yaWVudGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkuCiAgICAgICAg
IENhaXJvOjp0cmFuc2xhdGUocGxhdGZvcm1Db250ZXh0LCBkc3QueCgpLCBkc3QueSgpKTsKICAg
ICAgICAgZHN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvLmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NCw3
ICszNTQsNyBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgCiB7CiAg
ICAgQmFja2luZ1N0b3JlQ29weSBjb3B5TW9kZSA9ICZkZXN0aW5hdGlvbkNvbnRleHQgPT0gJmNv
bnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZTsKICAgICBS
ZWZQdHI8SW1hZ2U+IGltYWdlID0gY29weUltYWdlKGNvcHlNb2RlKTsKLSAgICBkZXN0aW5hdGlv
bkNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRp
bmdPcHRpb25zKG9wLCBibGVuZE1vZGUsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpKSk7CisgICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdJ
bWFnZSgqaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwg
YmxlbmRNb2RlLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpE
ZWZhdWx0KSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9OYXRpdmVJbWFnZUNhaXJvLmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU3LDcgKzU3LDcgQEAgQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlk
Q29sb3IoYwogICAgIHJldHVybiBjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQigqcGl4ZWwpOwog
fQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIENvbXBvc2l0ZU9w
ZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBjb25zdCBJbWFn
ZU9yaWVudGF0aW9uJiBvcmllbnRhdGlvbikKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUm
IGltYWdlU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgY29udGV4
dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNv
bXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY0
LDcgKzM2NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY28KICAg
ICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgYWRqdXN0ZWREZXN0UmVjdC54KCksIGFk
anVzdGVkRGVzdFJlY3QueSgpKTsKICAgICBhZGp1c3RlZERlc3RSZWN0LnNldExvY2F0aW9uKEZs
b2F0UG9pbnQoKSk7CiAKLSAgICBpZiAob3JpZW50YXRpb24gIT0gRGVmYXVsdEltYWdlT3JpZW50
YXRpb24pIHsKKyAgICBpZiAob3JpZW50YXRpb24gIT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkg
ewogICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgb3JpZW50YXRpb24udHJhbnNm
b3JtRnJvbURlZmF1bHQoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkpKTsKICAgICAgICAgaWYgKG9y
aWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBkZXN0
aW5hdGlvbiByZWN0IHdpbGwgaGF2ZSBpdCdzIHdpZHRoIGFuZCBoZWlnaHQgYWxyZWFkeSByZXZl
cnNlZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9mCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCShyZXZpc2lvbiAy
NDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NiwxMSArMTU2LDExIEBAIHN0YXRpYyBJbWFn
ZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uRnJvbVAKICAgICBBU1NFUlQoaW1hZ2VQcm9wZXJ0aWVz
KTsKICAgICBDRk51bWJlclJlZiBvcmllbnRhdGlvblByb3BlcnR5ID0gKENGTnVtYmVyUmVmKUNG
RGljdGlvbmFyeUdldFZhbHVlKGltYWdlUHJvcGVydGllcywga0NHSW1hZ2VQcm9wZXJ0eU9yaWVu
dGF0aW9uKTsKICAgICBpZiAoIW9yaWVudGF0aW9uUHJvcGVydHkpCi0gICAgICAgIHJldHVybiBJ
bWFnZU9yaWVudGF0aW9uKCk7CisgICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpOb25l
OwogICAgIAogICAgIGludCBleGlmVmFsdWU7CiAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShvcmllbnRh
dGlvblByb3BlcnR5LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmZXhpZlZhbHVlKTsKLSAgICByZXR1cm4g
SW1hZ2VPcmllbnRhdGlvbjo6ZnJvbUVYSUZWYWx1ZShleGlmVmFsdWUpOworICAgIHJldHVybiBJ
bWFnZU9yaWVudGF0aW9uOjpmcm9tRVhJRk9yaWVudGF0aW9uKGV4aWZWYWx1ZSk7CiB9CiAKICNp
ZiAhUExBVEZPUk0oQ09DT0EpCkBAIC0zNTAsNyArMzUwLDcgQEAgSW1hZ2VPcmllbnRhdGlvbiBJ
bWFnZURlY29kZXJDRzo6ZnJhbWVPcgogewogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgo
bV9uYXRpdmVEZWNvZGVyLmdldCgpLCBpbmRleCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkp
KTsKICAgICBpZiAoIXByb3BlcnRpZXMpCi0gICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9u
KCk7CisgICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpOb25lOwogICAgIAogICAgIHJl
dHVybiBvcmllbnRhdGlvbkZyb21Qcm9wZXJ0aWVzKHByb3BlcnRpZXMuZ2V0KCkpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZl
SW1hZ2VDRy5jcHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2
OSw3IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGMKICAgICByZXR1
cm4gQ29sb3IocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhl
bFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOwogfQogCi12b2lkIGRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlIG1vZGUsIGNvbnN0IEltYWdlT3JpZW50YXRpb24mIG9yaWVudGF0aW9uKQordm9pZCBk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJs
ZW5kTW9kZSBtb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIC8vIFN1
YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFu
IHNpemUoKS4KICAgICBJbnRTaXplIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNp
emUoaW1hZ2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjp1
cGRhdGVDYWNoZWRJbWFnZQogICAgIGRlY29kZWRTaXplQ2hhbmdlZChpbnRlcm5hbFNpemUudW5j
bGFtcGVkQXJlYSgpICogNCk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBQREZEb2N1bWVudEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1v
ZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorSW1hZ2VEcmF3
UmVzdWx0IFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9u
KQogewogICAgIGlmICghbV9kb2N1bWVudCB8fCAhbV9oYXNQYWdlKQogICAgICAgICByZXR1cm4g
SW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAkocmV2aXNpb24g
MjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBM
ZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJp
ZGU7CiAgICAgRmxvYXRTaXplIHNpemUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBE
ZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAg
SW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7CiAKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgYm9v
bCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDExLDExICsxNDExLDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpoYW5kbGUKICAgICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfdGFnKG1lc3NhZ2UsICZ0
YWdzKTsKICAgICAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIEdTVF9UQUdf
SU1BR0VfT1JJRU5UQVRJT04sICZ0YWcub3V0UHRyKCkpKSB7CiAgICAgICAgICAgICBpZiAoIWdf
c3RyY21wMCh0YWcuZ2V0KCksICJyb3RhdGUtOTAiKSkKLSAgICAgICAgICAgICAgICBzZXRWaWRl
b1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24oT3JpZ2luUmlnaHRUb3ApKTsKKyAg
ICAgICAgICAgICAgICBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb246
Ok9yaWdpblJpZ2h0VG9wKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAodGFnLmdl
dCgpLCAicm90YXRlLTE4MCIpKQotICAgICAgICAgICAgICAgIHNldFZpZGVvU291cmNlT3JpZW50
YXRpb24oSW1hZ2VPcmllbnRhdGlvbihPcmlnaW5Cb3R0b21SaWdodCkpOworICAgICAgICAgICAg
ICAgIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luQm90
dG9tUmlnaHQpOwogICAgICAgICAgICAgZWxzZSBpZiAoIWdfc3RyY21wMCh0YWcuZ2V0KCksICJy
b3RhdGUtMjcwIikpCi0gICAgICAgICAgICAgICAgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihJ
bWFnZU9yaWVudGF0aW9uKE9yaWdpbkxlZnRCb3R0b20pKTsKKyAgICAgICAgICAgICAgICBzZXRW
aWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkxlZnRCb3R0b20p
OwogICAgICAgICB9CiAgICAgICAgIGdzdF90YWdfbGlzdF91bnJlZih0YWdzKTsKICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg4Myw3ICs4ODMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6OnBhCiAKICAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBwYWludGlu
Z09wdGlvbnMoQ29tcG9zaXRlQ29weSk7CiAgICAgaWYgKG1fcmVuZGVyaW5nQ2FuQmVBY2NlbGVy
YXRlZCkKLSAgICAgICAgcGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbi5z
ZXRJbWFnZU9yaWVudGF0aW9uRW51bShtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pOworICAgICAg
ICBwYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbiA9IG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlv
bjsKIAogICAgIGF1dG8gZ3N0SW1hZ2UgPSBJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2UobV9z
YW1wbGUuZ2V0KCkpOwogICAgIGlmICghZ3N0SW1hZ2UpCkBAIC05NjEsNyArOTYxLDcgQEAgTmF0
aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbQogfQogI2VuZGlmIC8vIFVTRShH
U1RSRUFNRVJfR0wpCiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0
VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihjb25zdCBJbWFnZU9yaWVudGF0aW9uJiBvcmllbnRhdGlv
bikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0VmlkZW9Tb3VyY2VP
cmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIGlmIChtX3Zp
ZGVvU291cmNlT3JpZW50YXRpb24gPT0gb3JpZW50YXRpb24pCiAgICAgICAgIHJldHVybjsKQEAg
LTk3NiwxNiArOTc2LDE2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
c2UKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4dHVyZU1h
cHBlckZsYWdzKCkKIHsKICAgICBzd2l0Y2ggKG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbikgewot
ICAgIGNhc2UgRGVmYXVsdEltYWdlT3JpZW50YXRpb246CisgICAgY2FzZSBJbWFnZU9yaWVudGF0
aW9uOjpOb25lOgogICAgICAgICBtX3RleHR1cmVNYXBwZXJGbGFncyA9IDA7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgT3JpZ2luUmlnaHRUb3A6CisgICAgY2FzZSBJbWFnZU9yaWVudGF0aW9u
OjpPcmlnaW5SaWdodFRvcDoKICAgICAgICAgbV90ZXh0dXJlTWFwcGVyRmxhZ3MgPSBUZXh0dXJl
TWFwcGVyR0w6OlNob3VsZFJvdGF0ZVRleHR1cmU5MDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBPcmlnaW5Cb3R0b21SaWdodDoKKyAgICBjYXNlIEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkJv
dHRvbVJpZ2h0OgogICAgICAgICBtX3RleHR1cmVNYXBwZXJGbGFncyA9IFRleHR1cmVNYXBwZXJH
TDo6U2hvdWxkUm90YXRlVGV4dHVyZTE4MDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcmln
aW5MZWZ0Qm90dG9tOgorICAgIGNhc2UgSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luTGVmdEJvdHRv
bToKICAgICAgICAgbV90ZXh0dXJlTWFwcGVyRmxhZ3MgPSBUZXh0dXJlTWFwcGVyR0w6OlNob3Vs
ZFJvdGF0ZVRleHR1cmUyNzA7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgJKHJl
dmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE4NSw3ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2b2lkIHNldFZpZGVvU291
cmNlT3JpZW50YXRpb24oY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYpOworICAgIHZvaWQgc2V0Vmlk
ZW9Tb3VyY2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uKTsKICAgICBHc3RFbGVtZW50KiBw
aXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGlwZWxpbmUuZ2V0KCk7IH0KIAogICAgIHZpcnR1
YWwgYm9vbCBoYW5kbGVTeW5jTWVzc2FnZShHc3RNZXNzYWdlKik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVh
bWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcAkocmV2aXNpb24gMjQ4NDQy
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4
dHVyZUNvcGllckdTdHJlYW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDE3ICs5NCwxNyBA
QCB2b2lkIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6dXBkYXRlCiAgICAgbV90ZXh0dXJl
U3BhY2VNYXRyaXgubWFrZUlkZW50aXR5KCk7CiAKICAgICBzd2l0Y2ggKG1fb3JpZW50YXRpb24p
IHsKLSAgICBjYXNlIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOgorICAgIGNhc2UgSW1hZ2VPcmll
bnRhdGlvbjo6Tm9uZToKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcmlnaW5SaWdodFRvcDoK
KyAgICBjYXNlIEltYWdlT3JpZW50YXRpb246Ok9yaWdpblJpZ2h0VG9wOgogICAgICAgICBtX3Rl
eHR1cmVTcGFjZU1hdHJpeC5yb3RhdGUoLTkwKTsKICAgICAgICAgbV90ZXh0dXJlU3BhY2VNYXRy
aXgudHJhbnNsYXRlKC0xLCAwKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcmlnaW5Cb3R0
b21SaWdodDoKKyAgICBjYXNlIEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkJvdHRvbVJpZ2h0Ogog
ICAgICAgICBtX3RleHR1cmVTcGFjZU1hdHJpeC5yb3RhdGUoMTgwKTsKICAgICAgICAgbV90ZXh0
dXJlU3BhY2VNYXRyaXgudHJhbnNsYXRlKC0xLCAtMSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgT3JpZ2luTGVmdEJvdHRvbToKKyAgICBjYXNlIEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkxl
ZnRCb3R0b206CiAgICAgICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4LnJvdGF0ZSgtMjcwKTsKICAg
ICAgICAgbV90ZXh0dXJlU3BhY2VNYXRyaXgudHJhbnNsYXRlKDAsIC0xKTsKICAgICAgICAgYnJl
YWs7CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6
OnVwZGF0ZQogICAgICAgICAtMSwgMSwgLShmYXJWYWx1ZSArIG5lYXJWYWx1ZSkgLyAoZmFyVmFs
dWUgLSBuZWFyVmFsdWUpLCAxKTsKIH0KIAotYm9vbCBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFt
ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHTHVpbnQgaW5wdXRUZXh0dXJl
LCBJbnRTaXplJiBmcmFtZVNpemUsIEdMdWludCBvdXRwdXRUZXh0dXJlLCBHTGVudW0gb3V0cHV0
VGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVudW0gZm9ybWF0
LCBHTGVudW0gdHlwZSwgYm9vbCBmbGlwWSwgSW1hZ2VPcmllbnRhdGlvbiYgc291cmNlT3JpZW50
YXRpb24pCitib29sIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6Y29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKEdMdWludCBpbnB1dFRleHR1cmUsIEludFNpemUmIGZyYW1lU2l6
ZSwgR0x1aW50IG91dHB1dFRleHR1cmUsIEdMZW51bSBvdXRwdXRUYXJnZXQsIEdMaW50IGxldmVs
LCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBib29s
IGZsaXBZLCBJbWFnZU9yaWVudGF0aW9uIHNvdXJjZU9yaWVudGF0aW9uKQogewogICAgIGlmICgh
bV9zaGFkZXJQcm9ncmFtIHx8ICFtX2ZyYW1lYnVmZmVyIHx8ICFtX3ZibyB8fCBmcmFtZVNpemUu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVy
R1N0cmVhbWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAg
IFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcihDb2xvckNvbnZlcnNpb24pOwogICAgIH5WaWRl
b1RleHR1cmVDb3BpZXJHU3RyZWFtZXIoKTsKIAotICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRv
UGxhdGZvcm1UZXh0dXJlKEdMdWludCBpbnB1dFRleHR1cmUsIEludFNpemUmIGZyYW1lU2l6ZSwg
R0x1aW50IG91dHB1dFRleHR1cmUsIEdMZW51bSBvdXRwdXRUYXJnZXQsIEdMaW50IGxldmVsLCBH
TGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBib29sIGZs
aXBZLCBJbWFnZU9yaWVudGF0aW9uJiBzb3VyY2VPcmllbnRhdGlvbik7CisgICAgYm9vbCBjb3B5
VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR0x1aW50IGlucHV0VGV4dHVyZSwgSW50U2l6
ZSYgZnJhbWVTaXplLCBHTHVpbnQgb3V0cHV0VGV4dHVyZSwgR0xlbnVtIG91dHB1dFRhcmdldCwg
R0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVt
IHR5cGUsIGJvb2wgZmxpcFksIEltYWdlT3JpZW50YXRpb24gc291cmNlT3JpZW50YXRpb24pOwog
ICAgIHZvaWQgdXBkYXRlQ29sb3JDb252ZXJzaW9uTWF0cml4KENvbG9yQ29udmVyc2lvbik7CiAg
ICAgdm9pZCB1cGRhdGVUZXh0dXJlU3BhY2VNYXRyaXgoKTsKICAgICB2b2lkIHVwZGF0ZVRyYW5z
Zm9ybWF0aW9uTWF0cml4KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24g
MjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJE
T3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5MSw3ICs3OTEsNyBAQCB2b2lkIGRy
YXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlCiAgICAgY29udGV4dC0+U2V0VHJhbnNm
b3JtKHRyYW5zZm9ybSk7CiAgICAgYWRqdXN0ZWREZXN0UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBv
aW50KCkpOwogCi0gICAgaWYgKG9yaWVudGF0aW9uICE9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9u
KSB7CisgICAgaWYgKG9yaWVudGF0aW9uICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsKICAg
ICAgICAgY29uY2F0Q1RNKHBsYXRmb3JtQ29udGV4dCwgb3JpZW50YXRpb24udHJhbnNmb3JtRnJv
bURlZmF1bHQoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkpKTsKICAgICAgICAgaWYgKG9yaWVudGF0
aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBkZXN0aW5hdGlv
biByZWN0IHdpbGwgaGF2ZSBpdCdzIHdpZHRoIGFuZCBoZWlnaHQgYWxyZWFkeSByZXZlcnNlZCBm
b3IgdGhlIG9yaWVudGF0aW9uIG9mCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9m
U2l6ZShIQklUTQogICAgIGlmIChzaXplKQogICAgICAgICBkcmF3RnJhbWVNYXRjaGluZ1NvdXJj
ZVNpemUoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8u
Ym1IZWlnaHQpLCAqc2l6ZSwgQ29tcG9zaXRlQ29weSk7CiAgICAgZWxzZQotICAgICAgICBkcmF3
KGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVp
Z2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUu
aGVpZ2h0KCkpLCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICBk
cmF3KGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJt
SGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNp
emUuaGVpZ2h0KCkpLCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdN
b2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVsdCk7CiAKICAgICAvLyBE
byBjbGVhbnVwCiAgICAgQ0dDb250ZXh0UmVsZWFzZShjZ0NvbnRleHQpOwpAQCAtOTUsNyArOTUs
NyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjCiAgICAgICAgIGlm
IChpbWFnZSAmJiBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+
KHNyY1NpemUuaGVpZ2h0KCkpICYmIENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgPT0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihzcmNTaXplLndpZHRoKCkpKSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVu
dEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7
Ci0gICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBz
cmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2Rl
OjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbigpKTsKKyAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9w
LCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmll
bnRhdGlvbjo6RGVmYXVsdCk7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRG
cmFtZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTAzLDcgKzEwMyw3IEBA
IHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmMKIAogICAgIC8vIE5vIGlt
YWdlIG9mIHRoZSBjb3JyZWN0IHNpemUgd2FzIGZvdW5kLCBmYWxsYmFjayB0byBkcmF3aW5nIHRo
ZSBjdXJyZW50IGZyYW1lCiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IEJpdG1hcEltYWdlOjpz
aXplKCk7Ci0gICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1h
Z2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1v
ZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKCkpOworICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAu
MGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwg
QmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50
YXRpb246OkRlZmF1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9X
aW4uY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcg
QEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTQogICAgIGlmIChzaXpl
KQogICAgICAgICBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoZ2MsIEZsb2F0UmVjdCgwLjBm
LCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCAqc2l6ZSwgQ29tcG9z
aXRlQ29weSk7CiAgICAgZWxzZQotICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4w
ZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAu
MGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb21wb3NpdGVDb3B5
LCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4wZiwg
MC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYs
IDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb21wb3NpdGVD
b3B5LCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VP
cmllbnRhdGlvbjo6RGVmYXVsdCk7CiAKICAgICAvLyBEbyBjbGVhbnVwCiAgICAgY2Fpcm9fZGVz
dHJveSh0YXJnZXRSZWYpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRy
YXdGcmFtZU1hdGNoaW5nU291cmMKICAgICAgICAgaWYgKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0
X2hlaWdodChzdXJmYWNlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVp
Z2h0KCkpICYmIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UuZ2V0KCkpID09
IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewogICAgICAgICAgICAgc2l6
ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAgICAgbV9jdXJyZW50
RnJhbWUgPSBpOwotICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4w
ZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3As
IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZs
b2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCBj
b21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMs
IEltYWdlT3JpZW50YXRpb246OkRlZmF1bHQpOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUg
PSBjdXJyZW50RnJhbWU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEwOCw3
ICsxMDgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjCiAKICAg
ICAvLyBObyBpbWFnZSBvZiB0aGUgY29ycmVjdCBzaXplIHdhcyBmb3VuZCwgZmFsbGJhY2sgdG8g
ZHJhd2luZyB0aGUgY3VycmVudCBmcmFtZQogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBCaXRt
YXBJbWFnZTo6c2l6ZSgpOwotICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYs
IDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVP
cCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVj
dCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgY29t
cG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJ
bWFnZU9yaWVudGF0aW9uOjpEZWZhdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGlyZWN0MkQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURpcmVjdDJELmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
MSw3ICs4MSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmMKICAg
ICAgICAgaWYgKGltYWdlICYmIGNsYW1wVG88aW50PihpbWFnZVNpemUuaGVpZ2h0KCkpID09IHN0
YXRpY19jYXN0PGludD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgY2xhbXBUbzxpbnQ+KGltYWdlU2l6
ZS53aWR0aCgpKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KHNyY1NpemUud2lkdGgoKSkpIHsKICAgICAg
ICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICAgICAgICAg
IG1fY3VycmVudEZyYW1lID0gaTsKLSAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxv
YXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIGNv
bXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAgZHJhdyhjdHh0LCBk
c3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhl
aWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5
bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpEZWZhdWx0KTsKICAgICAgICAgICAgIG1fY3Vy
cmVudEZyYW1lID0gY3VycmVudEZyYW1lOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291
cmMKIAogICAgIC8vIE5vIGltYWdlIG9mIHRoZSBjb3JyZWN0IHNpemUgd2FzIGZvdW5kLCBmYWxs
YmFjayB0byBkcmF3aW5nIHRoZSBjdXJyZW50IGZyYW1lCiAgICAgRmxvYXRTaXplIGltYWdlU2l6
ZSA9IEJpdG1hcEltYWdlOjpzaXplKCk7Ci0gICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJl
Y3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIGNv
bXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwg
RmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0
KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXMsIEltYWdlT3JpZW50YXRpb246OkRlZmF1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZl
SW1hZ2VEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3Qy
RC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBDb2xvciBuYXRpdmVJbWFn
ZVNpbmdsZVBpeGVsU29saWRDb2xvcihjCiAgICAgcmV0dXJuIENvbG9yKCk7CiB9CiAKLXZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBv
c2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBjb25zdCBJbWFnZU9yaWVudGF0aW9uJiBvcmll
bnRhdGlvbikKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKQogewogICAgIGF1dG8gcGxhdGZvcm1Db250ZXh0ID0gY29udGV4dC5w
bGF0Zm9ybUNvbnRleHQoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Ry
YWdJbWFnZUd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0RyYWdJbWFnZUd0ay5jcHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3
IEBAIERyYWdJbWFnZVJlZiBkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24KICAgICByZXR1cm4g
aW1hZ2U7CiB9CiAKLURyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2Uq
IGltYWdlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCitEcmFnSW1hZ2VSZWYgY3JlYXRl
RHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWFnZSwgSW1hZ2VPcmllbnRhdGlvbikKIHsKICAg
ICByZXR1cm4gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ckZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZS5oCShyZXZpc2lvbiAyNDg0NDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ckZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCYWNraW5nU3RvcmU+IG1fYmFja2luZ1N0b3JlOwogICAgIERp
c3Bvc2FsTWV0aG9kIG1fZGlzcG9zYWxNZXRob2QgeyBEaXNwb3NhbE1ldGhvZDo6VW5zcGVjaWZp
ZWQgfTsKIAotICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IERlZmF1bHRJbWFn
ZU9yaWVudGF0aW9uIH07CisgICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uIHsgSW1h
Z2VPcmllbnRhdGlvbjo6Tm9uZSB9OwogICAgIFNlY29uZHMgbV9kdXJhdGlvbjsKICAgICBib29s
IG1faGFzQWxwaGEgeyB0cnVlIH07CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0RyYWdJbWFnZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvRHJhZ0ltYWdlSU9TLm1tCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3
OCw3IEBAIERyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYKIAogc3RhdGlj
IGZsb2F0IG1heGltdW1BbGxvd2VkRHJhZ0ltYWdlQXJlYSA9IDYwMCAqIDEwMjQ7CiAKLURyYWdJ
bWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb24pCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0lt
YWdlRnJvbUltYWdlKEltYWdlKiBpbWFnZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikK
IHsKICAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+d2lkdGgoKSB8fCAhaW1hZ2UtPmhlaWdodCgp
KQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtOTYsOSArOTYsNyBAQCBEcmFnSW1hZ2VSZWYgY3Jl
YXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0
KHJlbmRlcmVyQ29udGV4dC5DR0NvbnRleHQpOwogICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgw
LCBpbWFnZVNpemUuaGVpZ2h0KTsKICAgICAgICAgY29udGV4dC5zY2FsZSh7IGFkanVzdGVkSW1h
Z2VTY2FsZSwgLWFkanVzdGVkSW1hZ2VTY2FsZSB9KTsKLSAgICAgICAgSW1hZ2VQYWludGluZ09w
dGlvbnMgcGFpbnRpbmdPcHRpb25zOwotICAgICAgICBwYWludGluZ09wdGlvbnMubV9vcmllbnRh
dGlvbkRlc2NyaXB0aW9uID0gb3JpZW50YXRpb247Ci0gICAgICAgIGNvbnRleHQuZHJhd0ltYWdl
KCppbWFnZSwgRmxvYXRQb2ludCgpLCBwYWludGluZ09wdGlvbnMpOworICAgICAgICBjb250ZXh0
LmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMob3Jp
ZW50YXRpb24pKTsKICAgICB9XTsKICAgICByZXR1cm4gaW1hZ2VDb3B5LkNHSW1hZ2U7CiB9CkBA
IC0yNzQsNyArMjcyLDcgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHNjYWxlRHJhZ0ltYWdlKFJl
dAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRl
RHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQor
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSosIElt
YWdlT3JpZW50YXRpb24pCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0JKHJldmlzaW9uIDI0ODQ0MikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTkyLDE5ICs5MiwxOCBAQCBSZXRhaW5QdHI8TlNJbWFnZT4gZGlzc29sdmVEcmFn
SW1hZ2VUb0ZyCiAgICAgcmV0dXJuIGRpc3NvbHZlZEltYWdlOwogfQogICAgICAgICAKLVJldGFp
blB0cjxOU0ltYWdlPiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pCitSZXRhaW5QdHI8TlNJbWFnZT4g
Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWFnZSwgSW1hZ2VPcmllbnRhdGlvbiBv
cmllbnRhdGlvbikKIHsKICAgICBGbG9hdFNpemUgc2l6ZSA9IGltYWdlLT5zaXplKCk7CiAKICAg
ICBpZiAoaXM8Qml0bWFwSW1hZ2U+KCppbWFnZSkpIHsKLSAgICAgICAgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbjsKICAgICAgICAgQml0bWFwSW1hZ2UmIGJpdG1hcEltYWdlID0gZG93bmNh
c3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSk7CiAgICAgICAgIEludFNpemUgc2l6ZVJlc3BlY3RpbmdP
cmllbnRhdGlvbiA9IGJpdG1hcEltYWdlLnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKTsKIAot
ICAgICAgICBpZiAoZGVzY3JpcHRpb24ucmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSA9PSBSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbikKKyAgICAgICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdlT3Jp
ZW50YXRpb246OkZyb21JbWFnZSkKICAgICAgICAgICAgIG9yaWVudGF0aW9uID0gYml0bWFwSW1h
Z2Uub3JpZW50YXRpb25Gb3JDdXJyZW50RnJhbWUoKTsKIAotICAgICAgICBpZiAob3JpZW50YXRp
b24gIT0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pIHsKKyAgICAgICAgaWYgKG9yaWVudGF0aW9u
ICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsKICAgICAgICAgICAgIC8vIENvbnN0cnVjdCBh
IGNvcnJlY3RseS1yb3RhdGVkIGNvcHkgb2YgdGhlIGltYWdlIHRvIHVzZSBhcyB0aGUgZHJhZyBp
bWFnZS4KICAgICAgICAgICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCksIHNpemVS
ZXNwZWN0aW5nT3JpZW50YXRpb24pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExOCw3ICsxMTgsNyBAQCBleGl0OgogICAgIHJldHVybiBoYm1wLmxlYWsoKTsKIH0KICAgICAK
LURyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKQorRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21J
bWFnZShJbWFnZSogaW1nLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIEhXbmREQyBkYygwKTsK
ICAgICBhdXRvIHdvcmtpbmdEQyA9IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRlQ29tcGF0aWJsZURD
KGRjKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9X
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VDYWlyb1dpbi5jcHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3ICsx
NDYsNyBAQCBleGl0OgogICAgIHJldHVybiBoYm1wLmxlYWsoKTsKIH0KICAgICAKLURyYWdJbWFn
ZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKQorRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFn
ZSogaW1nLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIEhXbmREQyBkYygwKTsKICAgICBhdXRv
IHdvcmtpbmdEQyA9IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRlQ29tcGF0aWJsZURDKGRjKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlRGlyZWN0MkQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VEaXJlY3Qy
RC5jcHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9E
cmFnSW1hZ2VEaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgRHJh
Z0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZgogICAgIHJldHVybiBoYm1wLmxl
YWsoKTsKIH0KIAotRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSog
aW1nLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJh
Z0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgSFdu
ZERDIGRjKG51bGxwdHIpOwogICAgIGF1dG8gd29ya2luZ0RDID0gYWRvcHRHRElPYmplY3QoOjpD
cmVhdGVDb21wYXRpYmxlREMoZGMpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
RmlsbExheWUKIAogICAgICAgICAgICAgYXV0byBpbnRlcnBvbGF0aW9uID0gY2hvb3NlSW50ZXJw
b2xhdGlvblF1YWxpdHkoY29udGV4dCwgKmltYWdlLCAmYmdMYXllciwgZ2VvbWV0cnkudGlsZVNp
emUoKSk7CiAgICAgICAgICAgICBhdXRvIGRlY29kaW5nTW9kZSA9IGRlY29kaW5nTW9kZUZvcklt
YWdlRHJhdygqaW1hZ2UsIHBhaW50SW5mbyk7Ci0gICAgICAgICAgICBhdXRvIGRyYXdSZXN1bHQg
PSBjb250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9M
YXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6ZSgp
LCBnZW9tZXRyeS5zcGFjZVNpemUoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3As
IGJnTGF5ZXIuYmxlbmRNb2RlKCksIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKCksIGludGVycG9sYXRpb24pKTsKKyAgICAgICAgICAgIGF1dG8gZHJhd1Jlc3VsdCA9
IGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBnZW9tZXRyeS5kZXN0UmVjdCgpLCB0b0xh
eW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5LnRpbGVTaXplKCks
IGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwg
YmdMYXllci5ibGVuZE1vZGUoKSwgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uOjpEZWZh
dWx0LCBpbnRlcnBvbGF0aW9uKSk7CiAgICAgICAgICAgICBpZiAoZHJhd1Jlc3VsdCA9PSBJbWFn
ZURyYXdSZXN1bHQ6OkRpZFJlcXVlc3REZWNvZGluZykgewogICAgICAgICAgICAgICAgIEFTU0VS
VChiZ0ltYWdlLT5pc0NhY2hlZEltYWdlKCkpOwogICAgICAgICAgICAgICAgIGJnSW1hZ2UtPmNh
Y2hlZEltYWdlKCktPmFkZENsaWVudFdhaXRpbmdGb3JBc3luY0RlY29kaW5nKCp0aGlzKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAJKHJldmlzaW9u
IDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjAzMCwxNiArMjAzMCwxOCBAQCBib29sIFJlbmRlckVsZW1lbnQ6
OmNoZWNrRm9yUmVwYWludER1cmluCiAgICAgcmV0dXJuICFzZXR0aW5ncygpLnJlcGFpbnRPdXRz
aWRlTGF5b3V0RW5hYmxlZCgpOwogfQogCi1SZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gUmVu
ZGVyRWxlbWVudDo6c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSBjb25zdAorSW1hZ2VP
cmllbnRhdGlvbiBSZW5kZXJFbGVtZW50OjppbWFnZU9yaWVudGF0aW9uKCkgY29uc3QKIHsKICNp
ZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogICAgIC8vIFRoaXMgY2Fu
IG9ubHkgYmUgZW5hYmxlZCBmb3IgcG9ydHMgd2hpY2ggaG9ub3IgdGhlIG9yaWVudGF0aW9uIGZs
YWcgaW4gdGhlaXIgZHJhd2luZyBjb2RlLgogICAgIGlmIChkb2N1bWVudCgpLmlzSW1hZ2VEb2N1
bWVudCgpKQotICAgICAgICByZXR1cm4gUmVzcGVjdEltYWdlT3JpZW50YXRpb247CisgICAgICAg
IHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2U7CiAjZW5kaWYKICAgICAvLyBSZXNw
ZWN0IHRoZSBpbWFnZSdzIG9yaWVudGF0aW9uIGlmIGl0J3MgYmVpbmcgdXNlZCBhcyBhIGZ1bGwt
cGFnZSBpbWFnZSBvciBpdCdzCiAgICAgLy8gYW4gPGltZz4gYW5kIHRoZSBzZXR0aW5nIHRvIHJl
c3BlY3QgaXQgZXZlcnl3aGVyZSBpcyBzZXQuCi0gICAgcmV0dXJuIHNldHRpbmdzKCkuc2hvdWxk
UmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSAmJiBpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50
KCkpID8gUmVzcGVjdEltYWdlT3JpZW50YXRpb24gOiBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uOworICAgIGlmIChzZXR0aW5ncygpLnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkg
JiYgaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKSkKKyAgICAgICAgcmV0dXJuIEltYWdl
T3JpZW50YXRpb246OkZyb21JbWFnZTsKKyAgICByZXR1cm4gc3R5bGUoKS5pbWFnZU9yaWVudGF0
aW9uKCk7CiB9CiAKIHZvaWQgUmVuZGVyRWxlbWVudDo6YWRqdXN0RnJhZ21lbnRlZEZsb3dTdGF0
ZU9uQ29udGFpbmluZ0Jsb2NrQ2hhbmdlSWZOZWVkZWQoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNyAr
MjA0LDcgQEAgcHVibGljOgogICAgIFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2tGb3JGaXhl
ZFBvc2l0aW9uKCkgY29uc3Q7CiAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9ja0ZvckFi
c29sdXRlUG9zaXRpb24oKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlT3JpZW50YXRpb24gaW1hZ2VPcmllbnRhdGlvbigpIGNv
bnN0OwogCiAgICAgdm9pZCByZW1vdmVGcm9tUmVuZGVyRnJhZ21lbnRlZEZsb3coKTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVzZXRFbmNsb3NpbmdGcmFnbWVudGVkRmxvd0FuZENoaWxkSW5mb0luY2x1
ZGluZ0Rlc2NlbmRhbnRzKFJlbmRlckZyYWdtZW50ZWRGbG93Kik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAJKHJldmlzaW9u
IDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNCw4ICsyMjQsNyBAQCB2b2lkIFJlbmRlckVtYmVk
ZGVkT2JqZWN0OjpwYWludFNuYXBzaG90CiAgICAgICAgIHJldHVybjsKIAogICAgIEludGVycG9s
YXRpb25RdWFsaXR5IGludGVycG9sYXRpb24gPSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShj
b250ZXh0LCBpbWFnZSwgJmltYWdlLCBhbGlnbmVkUmVjdC5zaXplKCkpOwotICAgIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKHNob3VsZFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uKCksIHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKLSAgICBjb250
ZXh0LmRyYXdJbWFnZShpbWFnZSwgYWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9y
aWVudGF0aW9uRGVzY3JpcHRpb24sIGludGVycG9sYXRpb24pKTsKKyAgICBjb250ZXh0LmRyYXdJ
bWFnZShpbWFnZSwgYWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKGltYWdlT3JpZW50
YXRpb24oKSwgaW50ZXJwb2xhdGlvbikpOwogfQogCiB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0
OjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2OSwxMSArNDY5LDcgQEAgdm9pZCBSZW5kZXJJ
bWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZgogICAgICAgICAgICAgICAgICAgICBjZW50ZXJZ
ID0gMDsKICAgICAgICAgICAgICAgICBpbWFnZU9mZnNldCA9IExheW91dFNpemUobGVmdEJvcmRl
ciArIGxlZnRQYWQgKyBjZW50ZXJYICsgbWlzc2luZ0ltYWdlQm9yZGVyV2lkdGgsIHRvcEJvcmRl
ciArIHRvcFBhZCArIGNlbnRlclkgKyBtaXNzaW5nSW1hZ2VCb3JkZXJXaWR0aCk7CiAKLSAgICAg
ICAgICAgICAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlw
dGlvbihzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKLSNpZiBFTkFCTEUoQ1NTX0lN
QUdFX09SSUVOVEFUSU9OKQotICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24u
c2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwotI2Vu
ZGlmCi0gICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBzbmFwUmVjdFRv
RGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VT
aXplKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKKyAgICAg
ICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHNuYXBSZWN0VG9EZXZpY2VQaXhl
bHMoTGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBpbWFnZVNpemUpLCBkZXZp
Y2VTY2FsZUZhY3RvciksIGltYWdlT3JpZW50YXRpb24oKSk7CiAgICAgICAgICAgICAgICAgZXJy
b3JQaWN0dXJlRHJhd24gPSB0cnVlOwogICAgICAgICAgICAgfQogCkBAIC02MzUsOSArNjMxLDgg
QEAgSW1hZ2VEcmF3UmVzdWx0IFJlbmRlckltYWdlOjpwYWludEludG9SZQogICAgIGlmIChpczxC
aXRtYXBJbWFnZT4oaW1hZ2UpKQogICAgICAgICBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdl
KS51cGRhdGVGcm9tU2V0dGluZ3Moc2V0dGluZ3MoKSk7CiAKLSAgICBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihzaG91bGRSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbigpLCBzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CiAgICAgYXV0byBkZWNvZGlu
Z01vZGUgPSBkZWNvZGluZ01vZGVGb3JJbWFnZURyYXcoKmltYWdlLCBwYWludEluZm8pOwotICAg
IGF1dG8gZHJhd1Jlc3VsdCA9IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWcsIHJl
Y3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5v
cm1hbCwgZGVjb2RpbmdNb2RlLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCBpbnRlcnBvbGF0aW9u
KSk7CisgICAgYXV0byBkcmF3UmVzdWx0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2Uo
KmltZywgcmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xh
dGlvbikpOwogICAgIGlmIChkcmF3UmVzdWx0ID09IEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVxdWVz
dERlY29kaW5nKQogICAgICAgICBpbWFnZVJlc291cmNlKCkuY2FjaGVkSW1hZ2UoKS0+YWRkQ2xp
ZW50V2FpdGluZ0ZvckFzeW5jRGVjb2RpbmcoKnRoaXMpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2aXNpb24gMjQ4NDQy
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0NzYsNyArMjQ3Niw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5n
Ojppc0RpcmVjdGx5Q29tcG8KICAgICAgICAgaWYgKCFpczxCaXRtYXBJbWFnZT4oaW1hZ2UpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmIChkb3duY2FzdDxCaXRtYXBJ
bWFnZT4oKmltYWdlKS5vcmllbnRhdGlvbkZvckN1cnJlbnRGcmFtZSgpICE9IERlZmF1bHRJbWFn
ZU9yaWVudGF0aW9uKQorICAgICAgICBpZiAoZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSku
b3JpZW50YXRpb25Gb3JDdXJyZW50RnJhbWUoKSAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgKFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oV1BFKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNuYXBzaG90dGVkUGx1Z0luLmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ1LDggKzE0NSw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25h
cHMKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xh
dGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsICppbWFnZSwgaW1hZ2Us
IGFsaWduZWRSZWN0LnNpemUoKSk7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9y
aWVudGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSwgc3R5
bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwg
YWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRpb24s
IGludGVycG9sYXRpb24pKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGFsaWduZWRS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhpbWFnZU9yaWVudGF0aW9uKCksIGludGVycG9sYXRp
b24pKTsKIH0KIAogQ3Vyc29yRGlyZWN0aXZlIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpnZXRD
dXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBDdXJzb3ImIG92ZXJyaWRlQ3Vyc29yKSBj
b25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NTIsNyArNzUyLDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIFdlYkNv
cmU6OmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUod3JpdGluZ01vZGUoKSk7IH0KICAgICBib29s
IGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6aXNG
bGlwcGVkV3JpdGluZ01vZGUod3JpdGluZ01vZGUoKSk7IH0KIAotICAgIEltYWdlT3JpZW50YXRp
b25FbnVtIGltYWdlT3JpZW50YXRpb24oKSBjb25zdDsKKyAgICBJbWFnZU9yaWVudGF0aW9uIGlt
YWdlT3JpZW50YXRpb24oKSBjb25zdDsKIAogICAgIEltYWdlUmVuZGVyaW5nIGltYWdlUmVuZGVy
aW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SW1hZ2VSZW5kZXJpbmc+KG1fcmFyZUlu
aGVyaXRlZERhdGEtPmltYWdlUmVuZGVyaW5nKTsgfQogCkBAIC05NTEsNyArOTUxLDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgIHZv
aWQgc2V0SW1hZ2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uRW51bSB2KSB7IFNFVF9WQVIo
bV9yYXJlSW5oZXJpdGVkRGF0YSwgaW1hZ2VPcmllbnRhdGlvbiwgc3RhdGljX2Nhc3Q8aW50Pih2
KSk7IH0KKyAgICB2b2lkIHNldEltYWdlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbiB2KSB7
IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaW1hZ2VPcmllbnRhdGlvbiwgc3RhdGljX2Nh
c3Q8aW50Pih2KSk7IH0KICNlbmRpZgogCiAgICAgdm9pZCBzZXRJbWFnZVJlbmRlcmluZyhJbWFn
ZVJlbmRlcmluZyB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaW1hZ2VSZW5kZXJp
bmcsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KSk7IH0KQEAgLTE1ODIsNyArMTU4Miw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgT3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bvc2l0aW9uPiBpbml0aWFs
VGV4dEVtcGhhc2lzUG9zaXRpb24oKSB7IHJldHVybiB7IFRleHRFbXBoYXNpc1Bvc2l0aW9uOjpP
dmVyLCBUZXh0RW1waGFzaXNQb3NpdGlvbjo6UmlnaHQgfTsgfQogICAgIHN0YXRpYyBSdWJ5UG9z
aXRpb24gaW5pdGlhbFJ1YnlQb3NpdGlvbigpIHsgcmV0dXJuIFJ1YnlQb3NpdGlvbjo6QmVmb3Jl
OyB9CiAgICAgc3RhdGljIExpbmVCb3hDb250YWluIGluaXRpYWxMaW5lQm94Q29udGFpbigpIHsg
cmV0dXJuIExpbmVCb3hDb250YWluQmxvY2sgfCBMaW5lQm94Q29udGFpbklubGluZSB8IExpbmVC
b3hDb250YWluUmVwbGFjZWQ7IH0KLSAgICBzdGF0aWMgSW1hZ2VPcmllbnRhdGlvbkVudW0gaW5p
dGlhbEltYWdlT3JpZW50YXRpb24oKSB7IHJldHVybiBPcmlnaW5Ub3BMZWZ0OyB9CisgICAgc3Rh
dGljIEltYWdlT3JpZW50YXRpb24gaW5pdGlhbEltYWdlT3JpZW50YXRpb24oKSB7IHJldHVybiBJ
bWFnZU9yaWVudGF0aW9uOjpEZWZhdWx0OyB9CiAgICAgc3RhdGljIEltYWdlUmVuZGVyaW5nIGlu
aXRpYWxJbWFnZVJlbmRlcmluZygpIHsgcmV0dXJuIEltYWdlUmVuZGVyaW5nOjpBdXRvOyB9CiAg
ICAgc3RhdGljIEltYWdlUmVzb2x1dGlvblNvdXJjZSBpbml0aWFsSW1hZ2VSZXNvbHV0aW9uU291
cmNlKCkgeyByZXR1cm4gSW1hZ2VSZXNvbHV0aW9uU291cmNlOjpTcGVjaWZpZWQ7IH0KICAgICBz
dGF0aWMgSW1hZ2VSZXNvbHV0aW9uU25hcCBpbml0aWFsSW1hZ2VSZXNvbHV0aW9uU25hcCgpIHsg
cmV0dXJuIEltYWdlUmVzb2x1dGlvblNuYXA6Ok5vbmU7IH0KQEAgLTIwOTEsMTIgKzIwOTEsMTIg
QEAgaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6Omhhc0lubGluZUNvbHVtbgogICAgIHJldHVybiBh
eGlzID09IENvbHVtbkF4aXM6OkF1dG8gfHwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA9PSAo
YXhpcyA9PSBDb2x1bW5BeGlzOjpIb3Jpem9udGFsKTsKIH0KIAotaW5saW5lIEltYWdlT3JpZW50
YXRpb25FbnVtIFJlbmRlclN0eWxlOjppbWFnZU9yaWVudGF0aW9uKCkgY29uc3QKK2lubGluZSBJ
bWFnZU9yaWVudGF0aW9uIFJlbmRlclN0eWxlOjppbWFnZU9yaWVudGF0aW9uKCkgY29uc3QKIHsK
ICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxJbWFnZU9yaWVudGF0aW9uRW51bT4obV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VPcmllbnRh
dGlvbik7CisgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb24obV9yYXJlSW5oZXJpdGVkRGF0YS0+
aW1hZ2VPcmllbnRhdGlvbik7CiAjZWxzZQotICAgIHJldHVybiBEZWZhdWx0SW1hZ2VPcmllbnRh
dGlvbjsKKyAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVsdDsKICNlbmRpZgogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHJldmlzaW9u
IDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIwMiw3ICsyMDIsNyBAQCBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6
OmRyYXdGb3JDb250YWluCiAKICAgICBmcmFtZVZpZXcoKS0+c2Nyb2xsVG9GcmFnbWVudChpbml0
aWFsRnJhZ21lbnRVUkwpOwogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IHJlc3VsdCA9IGRyYXcoY29u
dGV4dCwgZHN0UmVjdCwgc2NhbGVkU3JjLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlLCBEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAg
SW1hZ2VEcmF3UmVzdWx0IHJlc3VsdCA9IGRyYXcoY29udGV4dCwgZHN0UmVjdCwgc2NhbGVkU3Jj
LCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFn
ZU9yaWVudGF0aW9uOjpEZWZhdWx0KTsKIAogICAgIHNldEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIp
OwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0yMjEsNyArMjIxLDcgQEAgTmF0aXZlSW1hZ2VQdHIg
U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQwogICAgIGlmICghYnVmZmVyKSAvLyBmYWlsZWQgdG8g
YWxsb2NhdGUgaW1hZ2UKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBkcmF3KGJ1ZmZl
ci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRN
b2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbigpKTsKKyAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3Qo
KSwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6
U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246OkRlZmF1bHQpOwogCiAgICAgLy8gRklYTUU6
IFdLKEJ1ZyAxMTM2NTcpOiBXZSBzaG91bGQgdXNlIERvbnRDb3B5QmFja2luZ1N0b3JlIGhlcmUu
CiAgICAgcmV0dXJuIGJ1ZmZlci0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOwpAQCAtMjQ3LDcgKzI0Nyw3IEBAIE5hdGl2ZUltYWdlUHRy
IFNWR0ltYWdlOjpuYXRpdmVJbWFnZShjb24KICAgICBQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCBw
bGF0Zm9ybUNvbnRleHQobmF0aXZlSW1hZ2VUYXJnZXQuZ2V0KCkpOwogICAgIEdyYXBoaWNzQ29u
dGV4dCBsb2NhbENvbnRleHQoJnBsYXRmb3JtQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0OjpCaXRt
YXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KTsKIAotICAgIGRyYXcobG9jYWxDb250
ZXh0LCByZWN0KCksIHJlY3QoKSwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3Jt
YWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
bigpKTsKKyAgICBkcmF3KGxvY2FsQ29udGV4dCwgcmVjdCgpLCByZWN0KCksIENvbXBvc2l0ZVNv
dXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJ
bWFnZU9yaWVudGF0aW9uOjpEZWZhdWx0KTsKIAogICAgIHJldHVybiBuYXRpdmVJbWFnZTsKIH0K
QEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5l
cihHCiAgICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIGRzdFJlY3QsIHNjYWxlZFNyY1Jl
Y3QsIHVuc2NhbGVkUGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9w
LCBibGVuZE1vZGUpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBi
bGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorSW1h
Z2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUs
IEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBJ
bWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuaAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uVGltZXJGaXJlZCgpOwogCiAgICAgZXhwbGljaXQg
U1ZHSW1hZ2UoSW1hZ2VPYnNlcnZlciYpOwotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dG9SZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbikgZmluYWw7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXco
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0b1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbikgZmluYWw7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdGb3JDb250
YWluZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZs
b2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSk7CiAgICAgdm9pZCBkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRh
aW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsCiAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yLCBj
b25zdCBGbG9hdFJlY3QmLCBCbGVuZE1vZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCShyZXZpc2lvbiAyNDg0
NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIEZsb2F0U2l6ZSBTVkdJbWFnZUZv
ckNvbnRhaW5lcjo6c2l6ZSgpIGMKIH0KIAogSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlRm9yQ29u
dGFpbmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LAotICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKQorICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICByZXR1cm4gbV9pbWFnZS0+ZHJhd0ZvckNvbnRh
aW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1fY29udGFpbmVyWm9vbSwgbV9pbml0aWFs
RnJhZ21lbnRVUkwsIGRzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9y
Q29udGFpbmVyLmgJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3
IEBAIHB1YmxpYzoKICAgICAgICAgbV9pbWFnZS0+Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMo
aW50cmluc2ljV2lkdGgsIGludHJpbnNpY0hlaWdodCwgaW50cmluc2ljUmF0aW8pOwogICAgIH0K
IAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERl
Y29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBmaW5hbDsKKyAgICBJbWFn
ZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUs
IEltYWdlT3JpZW50YXRpb24pIGZpbmFsOwogCiAgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
NDg0NTIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDE5LTA4LTA4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZS5jb20+CisKKyAgICAgICAgc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24gc2hvdWxk
IGJlIGEgdmFsdWUgaW4gSW1hZ2VPcmllbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNTUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OmltYWdlUG9zaXRpb25JbmZvcm1hdGlvbik6CisKIDIw
MTktMDgtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
dGhyZWFkaW5nIGFzc2VydGlvbnMgdG8gV2ViU3RvcmFnZSBjb2RlCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkocmV2aXNp
b24gMjQ4NDQyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2MzgsOCArMjYzOCw3IEBAIHN0YXRpYyB2b2lk
IGltYWdlUG9zaXRpb25JbmZvcm1hdGlvbihXZWIKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
biA9IHJlbmRlckltYWdlLnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCk7Ci0gICAgZ3Jh
cGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6
ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0
LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6ZS53aWR0aCgpLCBi
aXRtYXBTaXplLmhlaWdodCgpKSwgcmVuZGVySW1hZ2UuaW1hZ2VPcmllbnRhdGlvbigpKTsKICAg
ICBpbmZvLmltYWdlID0gc2hhcmVkQml0bWFwOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375871</attachid>
            <date>2019-08-08 17:54:30 -0700</date>
            <delta_ts>2019-08-12 13:10:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200553-20190808175429.patch</filename>
            <type>text/plain</type>
            <size>102368</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODQ1MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NCBAQAorMjAxOS0wOC0wOCAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIHNob3VsZFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uIHNob3VsZCBiZSBhIHZhbHVlIGluIEltYWdlT3JpZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDU1
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaXMgYSBzdGVwIHRvd2FyZHMgaW1wbGVtZW50aW5nIHRoZSBjc3MgaW1hZ2Utb3JpZW50
YXRpb24uCisKKyAgICAgICAgSW5zdGVhZCBvZiBoYXZpbmcgSW1hZ2VPcmllbnRhdGlvbkVudW0s
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiwKKyAgICAgICAgSW1hZ2VPcmllbnRhdGlvbiBh
bmQgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHdlIGFyZSBnb2luZyB0byBoYXZlIGEKKyAg
ICAgICAgc2luZ2xlIHN0cnVjdHVyZSBuYW1lZCAnSW1hZ2VPcmllbnRhdGlvbicgd2hpY2ggaXMg
YSB3cmFwcGVyIGZvcgorICAgICAgICBJbWFnZU9yaWVudGF0aW9uRW51bS4gVGhlIHN0cnVjdCB3
aWxsIGhhdmUgYSBjb25zdHJ1Y3RvciBhbmQgY2FzdGluZworICAgICAgICBvcGVyYXRvciBzdWNo
IHRoYXQgYXNzaWduaW5nIGFuIGVudW0gdmFsdWUgYW5kIGNvbXBhcmluZyB3aXRoIGFuIGVudW0K
KyAgICAgICAgdmFsdWUgd2lsbCBiZSBkb25lIGltcGxpY2l0bHkuCisKKyAgICAgICAgVGhlIFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uIHdpbGwgYmUgcmVwcmVzZW50ZWQgYXMgYSBuZXcgZW51bSB2
YWx1ZSBuYW1lZAorICAgICAgICAnRnJvbUltYWdlJyBpbiBJbWFnZU9yaWVudGF0aW9uRW51bS4K
KworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRHJhZ0ltYWdlIGNvbnN0KToKKyAgICAgICAg
KiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52
YXNFbGVtZW50OjpwYWludCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjppbWFnZVNpemVGb3JSZW5kZXJlciBj
b25zdCk6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnQ29udHJvbGxlcjo6ZG9JbWFnZURyYWcpOgorICAgICAgICAqIHBsYXRmb3JtL0Ry
YWdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNo
b3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9EcmFnSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Ny
b3NzZmFkZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpk
cmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YWRpZW50SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50
SW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVBhaW50aW5nT3B0aW9uczo6SW1hZ2VQYWludGluZ09wdGlvbnMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd0ltYWdlSW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3
VGlsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlT3JpZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRp
b246OkltYWdlT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlv
bjo6ZnJvbUVYSUZPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0
aW9uOjpvcGVyYXRvciBpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRh
dGlvbjo6dXNlc1dpZHRoQXNIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VP
cmllbnRhdGlvbjo6dHJhbnNmb3JtRnJvbURlZmF1bHQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VPcmllbnRhdGlvbjo6aXNWYWxpZE9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlT3JpZW50YXRpb246OmlzVmFsaWRFWElGT3JpZW50YXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uOjpJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uOjpzZXRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb246OnJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbjo6c2V0SW1hZ2VPcmllbnRhdGlvbkVudW0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uOjppbWFnZU9yaWVudGF0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb246OmZyb21FWElGVmFsdWUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbjo6b3BlcmF0b3Ig
SW1hZ2VPcmllbnRhdGlvbkVudW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VPcmllbnRhdGlvbjo6b3BlcmF0b3I9PSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uOjpvcGVyYXRvciE9IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZVNvdXJjZTo6ZHVtcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFt
ZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkSW1hZ2VH
ZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZl
SW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZG
T2JqQzo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWlybzo6ZHJhd1NoYWRvd0xheWVyQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpk
cmF3U2hhZG93SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRyYXdOYXRpdmVJbWFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcmllbnRhdGlvbkZyb21Qcm9wZXJ0aWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpmcmFtZU9yaWVudGF0aW9uQXRJ
bmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UERGRG9jdW1lbnRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUERGRG9jdW1lbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmVNYXBwZXJGbGFncyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlk
ZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVGV4
dHVyZUNvcGllckdTdHJlYW1lcjo6dXBkYXRlVGV4dHVyZVNwYWNlTWF0cml4KToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRv
UGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXJlY3Qy
RDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9m
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VT
aXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmZyYW1lT3Jp
ZW50YXRpb25BdEluZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0Zy
YW1lTWF0Y2hpbmdTb3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
TmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lLmg6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnJlYWRJbWFnZU9yaWVudGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
RHJhZ0ltYWdlSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUlt
YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdl
RnJvbUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmltYWdlT3JpZW50YXRp
b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c2hvdWxkUmVzcGVj
dEltYWdlT3JpZW50YXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJFbGVtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNuYXBz
aG90SW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6
OmlzRGlyZWN0bHlDb21wb3NpdGVkSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0SW1hZ2VP
cmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdl
T3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmltYWdlT3JpZW50
YXRpb24gY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdl
OjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJ
bWFnZUZvckNvbnRhaW5lci5oOgorCiAyMDE5LTA4LTA4ICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdh
bGlhLmNvbT4KIAogICAgICAgICBTaG9ydC1jdXQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQ
YXJhbWV0ZXIoKSBmb3IgQUxQSEFfQklUUyB3aGVuIGFscGhhIGNoYW5uZWwgaXMgZGlzYWJsZWQK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTgxNyw3ICsxODE3LDYgQEAgcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
RnJhbWUuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNDg0NDIp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTExNzkwLDcgKzExNzkwLDYgQEAKIAkJQTg3MURGRTEwQTE1Mzc2QjAw
QjEyQTY4IC8qIFJlbmRlcldpZGdldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVuZGVyV2lkZ2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTg3NDhCREYxMkNCRjJEQzAwMUZCQTQxIC8qIEhhc2hUb29scy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIYXNoVG9vbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTg3NDhENjYxMkNDMzc2MzAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VPcmllbnRhdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlBODc0OEQ3NDEyQ0MzRjg5MDAxRkJBNDEgLyogSW1hZ2VPcmll
bnRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZU9y
aWVudGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg4MDVBRjExNkM5
NkFFQTAwMEU5RDk4IC8qIElucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE4ODJEQTFGMTU5Mzg0NkEwMDAxMTVFRCAvKiBDU1NUb1N0eWxlTWFwLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1RvU3R5bGVNYXAuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBODgyREEyMjE1OTM4NDhEMDAwMTE1RUQgLyogQ1NTVG9TdHls
ZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NUb1N0eWxlTWFwLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDU0Nyw3ICsyNDU0Niw2IEBACiAJCQkJ
NTU3NkE1NjIxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuY3BwICovLAogCQkJCTU1NzZB
NTYzMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggKi8sCiAJCQkJQkM3RjQ0QTcwQjlF
MzI0RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCAqLywKLQkJCQlBODc0OEQ3NDEyQ0MzRjg5
MDAxRkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5jcHAgKi8sCiAJCQkJQTg3NDhENjYxMkNDMzc2
MzAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uaCAqLywKIAkJCQk0OTI5MUU0QTEzNDE3MkM4
MDBFNzUzREUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmggKi8sCiAJCQkJNTU0Njc1NzcxRkQxRkMx
QTAwM0IxMEIwIC8qIEltYWdlU291cmNlLmNwcCAqLywKQEAgLTI1NTQyLDExICsyNTU0MCwxMSBA
QAogCQkJCUMyNEE1N0JCMjFGRUFGRUEwMDRDNkREMSAvKiBXSExTTFByZXBhcmUuaCAqLywKIAkJ
CQk1MjJFMUExNzIyOTdENkQ0MDBFNUQzNkEgLyogV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRp
bWVzLmNwcCAqLywKIAkJCQk1MjJFMUExOTIyOTdENkQ0MDBFNUQzNkEgLyogV0hMU0xQcmVzZXJ2
ZVZhcmlhYmxlTGlmZXRpbWVzLmggKi8sCi0JCQkJNTI2QjNGMDEyMkZCN0JERDAwNzZEMzdEIC8q
IFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5jcHAgKi8sCi0J
CQkJNTI2QjNGMDMyMkZCN0JERTAwNzZEMzdEIC8qIFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5k
YXJkTGlicmFyeUZ1bmN0aW9ucy5oICovLAogCQkJCUMyMUJGNzNBMjFDRDhENzAwMDIyNzk3OSAv
KiBXSExTTFByb2dyYW0uaCAqLywKIAkJCQkxQ0FBODJGNjIyNDJBRTA1MDBFODRCQkIgLyogV0hM
U0xQcm9wZXJ0eVJlc29sdmVyLmNwcCAqLywKIAkJCQkxQ0FBODJGNzIyNDJBRTA1MDBFODRCQkIg
LyogV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmggKi8sCisJCQkJNTI2QjNGMDEyMkZCN0JERDAwNzZE
MzdEIC8qIFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5jcHAg
Ki8sCisJCQkJNTI2QjNGMDMyMkZCN0JERTAwNzZEMzdEIC8qIFdITFNMUHJ1bmVVbnJlYWNoYWJs
ZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oICovLAogCQkJCTFDQTBDMkUwMjFFRUI1RjUwMEEx
MTg2MCAvKiBXSExTTFJlY3Vyc2lvbkNoZWNrZXIuY3BwICovLAogCQkJCTFDQTBDMkRFMjFFRUI1
RjQwMEExMTg2MCAvKiBXSExTTFJlY3Vyc2lvbkNoZWNrZXIuaCAqLywKIAkJCQlDMjM0QTlBRDIx
RTkyQzE5MDAzQzk4NEQgLyogV0hMU0xSZWN1cnNpdmVUeXBlQ2hlY2tlci5jcHAgKi8sCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0Myw3
ICs1NDMsNyBAQCBEcmFnSW1hZ2VSZWYgRGF0YVRyYW5zZmVyOjpjcmVhdGVEcmFnSW1hCiAgICAg
bG9jYXRpb24gPSBtX2RyYWdMb2NhdGlvbjsKIAogICAgIGlmIChtX2RyYWdJbWFnZSkKLSAgICAg
ICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShtX2RyYWdJbWFnZS0+aW1hZ2UoKSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICByZXR1cm4gY3JlYXRlRHJh
Z0ltYWdlRnJvbUltYWdlKG1fZHJhZ0ltYWdlLT5pbWFnZSgpLCBJbWFnZU9yaWVudGF0aW9uOjpE
ZWZhdWx0KTsKIAogICAgIGlmIChtX2RyYWdJbWFnZUVsZW1lbnQpIHsKICAgICAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IG1fZHJhZ0ltYWdlRWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHJldmlzaW9uIDI0
ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MTAsMTcgKzYxMCwxMCBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50Ojpw
YWludChHcmFwaGljc0NvCiAKICAgICAgICAgaWYgKHNob3VsZFBhaW50KSB7CiAgICAgICAgICAg
ICBpZiAoaGFzQ3JlYXRlZEltYWdlQnVmZmVyKCkpIHsKLSAgICAgICAgICAgICAgICBJbWFnZUJ1
ZmZlciogaW1hZ2VCdWZmZXIgPSBidWZmZXIoKTsKLSAgICAgICAgICAgICAgICBpZiAoaW1hZ2VC
dWZmZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1fcHJlc2VudGVkSW1hZ2UpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRh
dGlvbkRlc2NyaXB0aW9uOwotI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAg
ICAgICAgICAgICAgICAgICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50
YXRpb25FbnVtKHJlbmRlcmVyKCktPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKLSNlbmRp
ZgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKm1fcHJlc2VudGVk
SW1hZ2UsIHNuYXBwZWRJbnRSZWN0KHIpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlv
bkRlc2NyaXB0aW9uKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBzbmFwcGVk
SW50UmVjdChyKSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtX3By
ZXNlbnRlZEltYWdlKQorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqbV9w
cmVzZW50ZWRJbWFnZSwgc25hcHBlZEludFJlY3QociksIHJlbmRlcmVyKCktPmltYWdlT3JpZW50
YXRpb24oKSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoSW1hZ2VCdWZmZXIqIGltYWdlQnVm
ZmVyID0gYnVmZmVyKCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKCppbWFnZUJ1ZmZlciwgc25hcHBlZEludFJlY3QocikpOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpZiAoaXNHUFVCYXNlZCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODAs
NyArMjgwLDcgQEAgRmxvYXRTaXplIENhY2hlZEltYWdlOjppbWFnZVNpemVGb3JSZW5kZQogICAg
IGlmICghbV9pbWFnZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGlmIChpczxCaXRtYXBJ
bWFnZT4oKm1faW1hZ2UpICYmIHJlbmRlcmVyICYmIHJlbmRlcmVyLT5zaG91bGRSZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQorICAgIGlmIChpczxC
aXRtYXBJbWFnZT4oKm1faW1hZ2UpICYmIHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pbWFnZU9yaWVu
dGF0aW9uKCkgPT0gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlKQogICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCptX2ltYWdlKS5zaXplUmVzcGVjdGluZ09yaWVudGF0aW9u
KCk7CiAKICAgICBpZiAoaXM8U1ZHSW1hZ2U+KCptX2ltYWdlKSAmJiBzaXplVHlwZSA9PSBVc2Vk
U2l6ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lv
biAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTE5NywxMCArMTE5NywxMCBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpk
b0ltYWdlRHJhZyhFbGVtZW50CiAgICAgaWYgKCFlbGVtZW50LnJlbmRlcmVyKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRl
c2NyaXB0aW9uKGVsZW1lbnQucmVuZGVyZXIoKS0+c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRp
b24oKSwgZWxlbWVudC5yZW5kZXJlcigpLT5zdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7Cisg
ICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IGVsZW1lbnQucmVuZGVyZXIoKS0+aW1h
Z2VPcmllbnRhdGlvbigpOwogCiAgICAgSW1hZ2UqIGltYWdlID0gZ2V0SW1hZ2UoZWxlbWVudCk7
Ci0gICAgaWYgKGltYWdlICYmICFsYXlvdXRSZWN0LmlzRW1wdHkoKSAmJiBzaG91bGRVc2VDYWNo
ZWRJbWFnZUZvckRyYWdJbWFnZSgqaW1hZ2UpICYmIChkcmFnSW1hZ2UgPSBEcmFnSW1hZ2UgeyBj
cmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoaW1hZ2UsIGVsZW1lbnQucmVuZGVyZXIoKSA/IG9yaWVu
dGF0aW9uRGVzY3JpcHRpb24gOiBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSkgfSkpIHsK
KyAgICBpZiAoaW1hZ2UgJiYgIWxheW91dFJlY3QuaXNFbXB0eSgpICYmIHNob3VsZFVzZUNhY2hl
ZEltYWdlRm9yRHJhZ0ltYWdlKCppbWFnZSkgJiYgKGRyYWdJbWFnZSA9IERyYWdJbWFnZSB7IGNy
ZWF0ZURyYWdJbWFnZUZyb21JbWFnZShpbWFnZSwgb3JpZW50YXRpb24pIH0pKSB7CiAgICAgICAg
IGRyYWdJbWFnZSA9IERyYWdJbWFnZSB7IGZpdERyYWdJbWFnZVRvTWF4U2l6ZShkcmFnSW1hZ2Uu
Z2V0KCksIGxheW91dFJlY3Quc2l6ZSgpLCBtYXhEcmFnSW1hZ2VTaXplKCkpIH07CiAgICAgICAg
IEludFNpemUgZml0dGVkU2l6ZSA9IGRyYWdJbWFnZVNpemUoZHJhZ0ltYWdlLmdldCgpKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCShyZXZpc2lvbiAyNDg0NDIp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDIsMjAgKzEwMiwxNSBAQCBzdGF0aWMgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFn
ZUZyb21TCiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb247Ci0jaWYgRU5BQkxFKENT
U19JTUFHRV9PUklFTlRBVElPTikKKyAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uOwog
ICAgIGlmIChub2RlKSB7CiAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5y
ZW5kZXJlcigpOwogICAgICAgICBpZiAoIXJlbmRlcmVyIHx8ICFpczxSZW5kZXJFbGVtZW50Pihy
ZW5kZXJlcikpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBhdXRvJiBy
ZW5kZXJFbGVtZW50ID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKnJlbmRlcmVyKTsKLSAgICAg
ICAgb3JpZW50YXRpb24uc2V0UmVzcGVjdEltYWdlT3JpZW50YXRpb24ocmVuZGVyRWxlbWVudC5z
aG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKLSAgICAgICAgb3JpZW50YXRpb24uc2V0
SW1hZ2VPcmllbnRhdGlvbkVudW0ocmVuZGVyRWxlbWVudC5zdHlsZSgpLmltYWdlT3JpZW50YXRp
b24oKSk7CisgICAgICAgIG9yaWVudGF0aW9uID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKnJl
bmRlcmVyKS5pbWFnZU9yaWVudGF0aW9uKCk7CiAgICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0obm9kZSk7Ci0jZW5kaWYKKwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBJbWFnZUJ1ZmZl
cjo6c2lua0ludG9JbWFnZShXVEZNb3ZlKHNuYXBzaG90KSwgUHJlc2VydmVSZXNvbHV0aW9uOjpZ
ZXMpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzA1LDcg
KzMwMCw3IEBAIERyYWdJbWFnZVJlZiBkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24KICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFn
ZShJbWFnZSosIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK0RyYWdJbWFnZVJlZiBjcmVh
dGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EcmFnSW1hZ2UuaAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRHJhZ0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgRHJhZ0lt
YWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZgogRHJhZ0ltYWdlUmVmIHBsYXRmb3Jt
QWRqdXN0RHJhZ0ltYWdlRm9yRGV2aWNlU2NhbGVGYWN0b3IoRHJhZ0ltYWdlUmVmLCBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3Rvcik7CiBEcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0
aW9uKERyYWdJbWFnZVJlZiwgZmxvYXQgZGVsdGEpOwogCi1EcmFnSW1hZ2VSZWYgY3JlYXRlRHJh
Z0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKK0Ry
YWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9yaWVudGF0
aW9uKTsKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VJY29uRm9yQ2FjaGVkSW1hZ2VGaWxl
bmFtZShjb25zdCBTdHJpbmcmKTsKIAogV0VCQ09SRV9FWFBPUlQgRHJhZ0ltYWdlUmVmIGNyZWF0
ZURyYWdJbWFnZUZvck5vZGUoRnJhbWUmLCBOb2RlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCShyZXZpc2lvbiAyNDg0NDIp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4Myw3ICsxODMsNyBAQCBib29sIEJpdG1hcEltYWdlOjpub3RTb2xp
ZENvbG9yKCkKIH0KICNlbmRpZgogCi1JbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgbW9k
ZSwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
IGRlc2NyaXB0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIERlY29k
aW5nTW9kZSBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAg
ICAgaWYgKGRlc3RSZWN0LmlzRW1wdHkoKSB8fCBzcmNSZWN0LmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTI2OCw4ICsyNjgsNyBAQCBJ
bWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbihkZXNjcmlw
dGlvbi5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAgIGlmIChkZXNjcmlwdGlvbi5yZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQorICAgIGlmIChvcmll
bnRhdGlvbiA9PSBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UpCiAgICAgICAgIG9yaWVudGF0
aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogCiAgICAgZHJh
d05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShz
aXplKCkpLCBvcCwgbW9kZSwgb3JpZW50YXRpb24pOwpAQCAtMzA2LDcgKzMwNSw3IEBAIHZvaWQg
Qml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ28KICAgICAgICAgLy8gVGVtcG9yYXJp
bHkgcmVzZXQgaW1hZ2Ugb2JzZXJ2ZXIsIHdlIGRvbid0IHdhbnQgdG8gcmVjZWl2ZSBhbnkgY2hh
bmdlSW5SZWN0KCkgY2FsbHMgZHVlIHRvIHRoaXMgcmVsYXlvdXQuCiAgICAgICAgIHNldEltYWdl
T2JzZXJ2ZXIobnVsbHB0cik7CiAKLSAgICAgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgdGls
ZVJlY3QsIHRpbGVSZWN0LCBvcCwgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3Vz
LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgIGRyYXcoYnVmZmVyLT5j
b250ZXh0KCksIHRpbGVSZWN0LCB0aWxlUmVjdCwgb3AsIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVsdCk7CiAKICAgICAgICAgc2V0
SW1hZ2VPYnNlcnZlcihvYnNlcnZlcik7CiAgICAgICAgIGJ1ZmZlci0+Y29udmVydFRvTHVtaW5h
bmNlTWFzaygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5oCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNyArMTYxLDcg
QEAgcHJvdGVjdGVkOgogICAgIC8vIHxkZXN0cm95QWxsfCBhbG9uZy4KICAgICB2b2lkIGRlc3Ry
b3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KGJvb2wgZGVzdHJveUFsbCA9IHRydWUpOwogCi0gICAg
SW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlk
ZTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpO
b3JtYWwpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkIGRyYXdGcmFtZU1h
dGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yKSBvdmVycmlkZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZElt
YWdlOjpkcmF3Q3Jvc3NmCiAgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogfQog
Ci1JbWFnZURyYXdSZXN1bHQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVu
ZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorSW1hZ2VE
cmF3UmVzdWx0IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBE
ZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5o
CShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
cm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBA
IHB1YmxpYzoKICAgICBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
Y3Jvc3NmYWRlU2l6ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXco
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAgICBJbWFnZURyYXdSZXN1
bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2Rp
bmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIG92ZXJyaWRlOwogCiAgICAgQ3Jvc3NmYWRlR2VuZXJhdGVk
SW1hZ2UoSW1hZ2UmIGZyb21JbWFnZSwgSW1hZ2UmIHRvSW1hZ2UsIGZsb2F0IHBlcmNlbnRhZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgY3Jvc3NmYWRlU2l6ZSwgY29uc3QgRmxvYXRTaXplJik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWlu
dEltYWdlLmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw3ICsx
NzAsNyBAQCBJbWFnZURyYXdSZXN1bHQgQ3VzdG9tUGFpbnRJbWFnZTo6ZG9DdXN0CiAgICAgcmV0
dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkRHJhdzsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEN1c3Rv
bVBhaW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCitJbWFnZURyYXdSZXN1bHQgQ3VzdG9tUGFpbnRJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBv
c2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRp
b24pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGRlc3RDb250
ZXh0KTsKICAgICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3As
IGJsZW5kTW9kZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0
b21QYWludEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKIAogICAgIEltYWdlRHJhd1Jlc3VsdCBkb0N1c3Rv
bVBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCi0gICAgSW1hZ2VE
cmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUs
IERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBmaW5hbDsKKyAgICBJ
bWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBmaW5hbDsKICAgICB2b2lkIGRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBmaW5hbDsKIAogICAgIFdlYWtQdHI8UGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbj4gbV9wYWludERlZmluaXRpb247
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRl
ZEltYWdlLmgJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dlbmVyYXRlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKGJvb2wgLypkZXN0cm95QWxsKi8g
PSB0cnVlKSBvdmVycmlkZSB7IH0KIAogcHJvdGVjdGVkOgotICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01v
ZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGUgPSAwOworICAgIEltYWdl
RHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
LCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlID0gMDsKICAgICB2b2lk
IGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJu
VHJhbnNmb3JtLAogICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBvdmVycmlkZSA9IDA7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzks
NyBAQCBHcmFkaWVudEltYWdlOjpHcmFkaWVudEltYWdlKEdyYWRpZW50JiBnCiAKIEdyYWRpZW50
SW1hZ2U6On5HcmFkaWVudEltYWdlKCkgPSBkZWZhdWx0OwogCi1JbWFnZURyYXdSZXN1bHQgR3Jh
ZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBHcmFkaWVudEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRl
T3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikK
IHsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZGVzdENvbnRleHQp
OwogICAgIGRlc3RDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxl
bmRNb2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50
SW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFkaWVudEltYWdlLmgJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEdyYWRpZW50SW1hZ2UoR3JhZGllbnQmLCBjb25z
dCBGbG9hdFNpemUmKTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbikgZmluYWw7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbikgZmluYWw7CiAgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSkgZmluYWw7CiAgICAgYm9vbCBpc0dyYWRpZW50SW1hZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAgICAgdm9pZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYpIGNvbnN0IGZpbmFsOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzMsNyAr
NzMzLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYQogICAgICAg
ICByZXR1cm4gbV9pbXBsLT5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGlt
YWdlUGFpbnRpbmdPcHRpb25zKTsKIAogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5l
ciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXcoKnRo
aXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRl
T3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlv
bkRlc2NyaXB0aW9uKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24s
IHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQ
YWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fZGVjb2Rp
bmdNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uKTsKIH0KIAogSW1hZ2VE
cmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNv
bnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQpAQCAtNzQ1LDcgKzc0
NSw3IEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWwKICAgICAgICAg
cmV0dXJuIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IHRpbGVTaXplLCBzcGFjaW5nLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiAKICAgICBJbnRlcnBv
bGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUo
KnRoaXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAg
IHJldHVybiBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVT
aXplLCBzcGFjaW5nLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9k
ZWNvZGluZ01vZGUpOworICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0
aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2Nv
bXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQ
YWludGluZ09wdGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3Jp
ZW50YXRpb24pOwogfQogCiBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGls
ZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjExLDI5ICsyMTEsMjkg
QEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKIH07CiAKIHN0cnVjdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyB7Ci0gICAgSW1hZ2VQYWludGluZ09wdGlvbnMoQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgYmxlbmRN
b2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUgPSBEZWNv
ZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50
YXRpb25EZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCBJbnRlcnBv
bGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0
KQorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
ZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5k
TW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpT
eW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRp
b246Ok5vbmUsIEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5ID0gSW50
ZXJwb2xhdGlvbkRlZmF1bHQpCiAgICAgICAgIDogbV9jb21wb3NpdGVPcGVyYXRvcihjb21wb3Np
dGVPcGVyYXRvcikKICAgICAgICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUpCiAgICAgICAgICwg
bV9kZWNvZGluZ01vZGUoZGVjb2RpbmdNb2RlKQotICAgICAgICAsIG1fb3JpZW50YXRpb25EZXNj
cmlwdGlvbihvcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorICAgICAgICAsIG1fb3JpZW50YXRpb24o
b3JpZW50YXRpb24pCiAgICAgICAgICwgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eShpbnRlcnBvbGF0
aW9uUXVhbGl0eSkKICAgICB7CiAgICAgfQogCi0gICAgSW1hZ2VQYWludGluZ09wdGlvbnMoSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIEludGVycG9s
YXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5ID0gSW50ZXJwb2xhdGlvbkRlZmF1bHQs
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zl
ciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGUg
ZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykKKyAgICBJbWFnZVBhaW50
aW5nT3B0aW9ucyhJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVh
bGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0LCBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5k
TW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5n
TW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpCiAgICAgICAgIDogbV9jb21wb3NpdGVP
cGVyYXRvcihjb21wb3NpdGVPcGVyYXRvcikKICAgICAgICAgLCBtX2JsZW5kTW9kZShibGVuZE1v
ZGUpCiAgICAgICAgICwgbV9kZWNvZGluZ01vZGUoZGVjb2RpbmdNb2RlKQotICAgICAgICAsIG1f
b3JpZW50YXRpb25EZXNjcmlwdGlvbihvcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorICAgICAgICAs
IG1fb3JpZW50YXRpb24ob3JpZW50YXRpb24pCiAgICAgICAgICwgbV9pbnRlcnBvbGF0aW9uUXVh
bGl0eShpbnRlcnBvbGF0aW9uUXVhbGl0eSkKICAgICB7CiAgICAgfQogCi0gICAgSW1hZ2VQYWlu
dGluZ09wdGlvbnMoSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHksIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uID0gSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJh
dG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9k
ZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cykKKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhJbnRlcnBvbGF0aW9uUXVhbGl0eSBp
bnRlcnBvbGF0aW9uUXVhbGl0eSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IEltYWdl
T3JpZW50YXRpb246Ok5vbmUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0g
Q29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9y
bWFsLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91
cykKICAgICAgICAgOiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQogICAg
ICAgICAsIG1fYmxlbmRNb2RlKGJsZW5kTW9kZSkKICAgICAgICAgLCBtX2RlY29kaW5nTW9kZShk
ZWNvZGluZ01vZGUpCi0gICAgICAgICwgbV9vcmllbnRhdGlvbkRlc2NyaXB0aW9uKG9yaWVudGF0
aW9uRGVzY3JpcHRpb24pCisgICAgICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKICAg
ICAgICAgLCBtX2ludGVycG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQogICAg
IHsKICAgICB9CkBAIC0yNDMsNyArMjQzLDcgQEAgc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25z
IHsKICAgICBDb21wb3NpdGVPcGVyYXRvciBtX2NvbXBvc2l0ZU9wZXJhdG9yOwogICAgIEJsZW5k
TW9kZSBtX2JsZW5kTW9kZTsKICAgICBEZWNvZGluZ01vZGUgbV9kZWNvZGluZ01vZGU7Ci0gICAg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG1fb3JpZW50YXRpb25EZXNjcmlwdGlvbjsKKyAg
ICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247CiAgICAgSW50ZXJwb2xhdGlvblF1YWxp
dHkgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eTsKIH07CiAKQEAgLTM0Nyw3ICszNDcsNyBAQCBwdWJs
aWM6CiAgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZTsgfQogCiAjaWYgVVNFKENHKSB8fCBVU0UoRElSRUNUMkQpIHx8IFVTRShDQUlS
TykKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21w
b3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgSW1hZ2VPcmll
bnRhdGlvbiA9IEltYWdlT3JpZW50YXRpb24oKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNl
bGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0g
QmxlbmRNb2RlOjpOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpO
b25lKTsKICNlbmRpZgogCiAjaWYgVVNFKENHKSB8fCBVU0UoRElSRUNUMkQpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRJbXBsLmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDEz
ICs0MCwxMyBAQCBHcmFwaGljc0NvbnRleHRJbXBsOjp+R3JhcGhpY3NDb250ZXh0SW1wCiBJbWFn
ZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd0ltYWdlSW1wbChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBp
bWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWlu
ZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoY29udGV4dCwgaW1hZ2VQYWludGlu
Z09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXco
Y29udGV4dCwgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21w
b3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fZGVjb2RpbmdNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVu
dGF0aW9uRGVzY3JpcHRpb24pOworICAgIHJldHVybiBpbWFnZS5kcmF3KGNvbnRleHQsIGRlc3Rp
bmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3Is
IGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5t
X2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbik7CiB9CiAK
IEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0
aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlN
YWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIGltYWdl
UGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFn
ZS5kcmF3VGlsZWQoY29udGV4dCwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNp
bmcsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9k
ZSk7CisgICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZChjb250ZXh0LCBkZXN0aW5hdGlvbiwgc291
cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVP
cGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdP
cHRpb25zLm1fZGVjb2RpbmdNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9u
KTsKIH0KIAogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZElt
YWdlSW1wbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0
U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxl
UnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRp
b25zKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAko
cmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBJbWFnZTo6ZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JgogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERy
YXcoKnRoaXMpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGlj
c0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UG9p
bnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlZFRpbGVTaXplLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
LCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlKQorSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3
VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbikKIHsKICAgICBDb2xvciBjb2xvciA9IHNpbmdsZVBpeGVsU29saWRDb2xv
cigpOwogICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKQEAgLTE4NCw3ICsxODQsNyBAQCBJbWFn
ZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljCiAgICAgICAgIHZpc2libGVTcmNS
ZWN0LnNldFkoKGRlc3RSZWN0LnkoKSAtIG9uZVRpbGVSZWN0LnkoKSkgLyBzY2FsZS5oZWlnaHQo
KSk7CiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBz
Y2FsZS53aWR0aCgpKTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0
LmhlaWdodCgpIC8gc2NhbGUuaGVpZ2h0KCkpOwotICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBk
ZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIGRlY29kaW5nTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBk
ZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIGRlY29kaW5nTW9kZSwgb3Jp
ZW50YXRpb24pOwogICAgIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0xOTYsNyAr
MTk2LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpYwogICAgICAg
ICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0gb25lVGlsZVJlY3QueSgp
KSAvIHNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRo
KDEpOwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdo
dCgpIC8gc2NhbGUuaGVpZ2h0KCkpOwotICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVz
dFJlY3QsIHZpc2libGVTcmNSZWN0LCBvcCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuIGRy
YXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBvcCwgQmxlbmRNb2RlOjpOb3JtYWws
IGRlY29kaW5nTW9kZSwgb3JpZW50YXRpb24pOwogICAgICAgICB9CiAgICAgICAgIGlmIChzaXpl
KCkuaGVpZ2h0KCkgPT0gMSAmJiBpbnRlcnNlY3Rpb24ob25lVGlsZVJlY3QsIGRlc3RSZWN0KS53
aWR0aCgpID09IGRlc3RSZWN0LndpZHRoKCkpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCB2aXNp
YmxlU3JjUmVjdDsKQEAgLTIwNCw3ICsyMDQsNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRy
YXdUaWxlZChHcmFwaGljCiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRZKDApOwogICAg
ICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0V2lkdGgoZGVzdFJlY3Qud2lkdGgoKSAvIHNjYWxl
LndpZHRoKCkpOwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KDEpOwotICAg
ICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBvcCwg
QmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVT
cmNSZWN0LCBvcCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgb3JpZW50YXRpb24p
OwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCkBAIC0yMzYsNyArMjM2LDcgQEAgSW1hZ2VEcmF3
UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpYwogICAgICAgICAgICAgICAgIEZsb2F0UmVj
dCBmcm9tUmVjdCh0b0Zsb2F0UG9pbnQoY3VycmVudFRpbGVSZWN0LmxvY2F0aW9uKCkgLSBvbmVU
aWxlUmVjdC5sb2NhdGlvbigpKSwgY3VycmVudFRpbGVSZWN0LnNpemUoKSk7CiAgICAgICAgICAg
ICAgICAgZnJvbVJlY3Quc2NhbGUoMSAvIHNjYWxlLndpZHRoKCksIDEgLyBzY2FsZS5oZWlnaHQo
KSk7CiAKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBkcmF3KGN0eHQsIHRvUmVjdCwgZnJvbVJl
Y3QsIG9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZHJhdyhjdHh0LCB0b1Jl
Y3QsIGZyb21SZWN0LCBvcCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgb3JpZW50
YXRpb24pOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gSW1hZ2VEcmF3UmVzdWx0OjpE
aWRSZXF1ZXN0RGVjb2RpbmcpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgICAgICAgICAgICAgdG9YICs9IGN1cnJlbnRUaWxlUmVjdC53aWR0aCgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCShyZXZpc2lvbiAyNDg0NDIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTAsOCArMTkwLDggQEAgcHJvdGVjdGVkOgogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2
aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9z
aXRlT3BlcmF0b3IpIHsgfQogI2VuZGlmCi0gICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJh
dyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pID0gMDsKLSAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2Rp
bmdNb2RlKTsKKyAgICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRp
b24pID0gMDsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNv
bnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsK
ICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNp
emUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb21w
b3NpdGVPcGVyYXRvcik7CiAKICAgICAvLyBTdXBwb3J0aW5nIHRpbGVkIGRyYXdpbmcKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgJKHJldmlz
aW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJh
bWUuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogICAgIFN1YnNh
bXBsaW5nTGV2ZWwgbV9zdWJzYW1wbGluZ0xldmVsIHsgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCB9OwogICAgIERlY29kaW5nT3B0aW9ucyBtX2RlY29kaW5nT3B0aW9uczsKIAotICAgIEltYWdl
T3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uIH07Cisg
ICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uIHsgSW1hZ2VPcmllbnRhdGlvbjo6Tm9u
ZSB9OwogICAgIFNlY29uZHMgbV9kdXJhdGlvbjsKICAgICBib29sIG1faGFzQWxwaGEgeyB0cnVl
IH07CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmll
bnRhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlT3JpZW50YXRpb24uaAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywx
MDcgKzI0LDEwNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEltYWdlT3JpZW50YXRp
b25faAotI2RlZmluZSBJbWFnZU9yaWVudGF0aW9uX2gKKyNwcmFnbWEgb25jZQogCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7CisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiRmxv
YXRTaXplLmgiCiAKLWNsYXNzIEFmZmluZVRyYW5zZm9ybTsKLWNsYXNzIEZsb2F0U2l6ZTsKK25h
bWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gVGhpcyBlbnVtIGludGVudGlvbmFsbHkgbWF0Y2hlcyB0
aGUgb3JpZW50YXRpb24gdmFsdWVzIGZyb20gdGhlIEVYSUYgc3BlYy4KLS8vIFNlZSBKRUlUQSBD
UC0zNDUxLCBwYWdlIDE4LiBodHRwOi8vd3d3LmV4aWYub3JnL0V4aWYyLTIuUERGCi1lbnVtIElt
YWdlT3JpZW50YXRpb25FbnVtIHsKLSAgICAvLyAiVG9wTGVmdCIgbWVhbnMgdGhhdCB0aGUgMCBy
b3cgc3RhcnRzIGF0IHRoZSBUb3AsIHRoZSAwIGNvbHVtbiBzdGFydHMgYXQgdGhlIExlZnQuCi0g
ICAgT3JpZ2luVG9wTGVmdCA9IDEsIC8vIGRlZmF1bHQKLSAgICBPcmlnaW5Ub3BSaWdodCA9IDIs
IC8vIG1pcnJvciBhbG9uZyB5LWF4aXMKLSAgICBPcmlnaW5Cb3R0b21SaWdodCA9IDMsIC8vIDE4
MCBkZWdyZWUgcm90YXRpb24KLSAgICBPcmlnaW5Cb3R0b21MZWZ0ID0gNCwgLy8gbWlycm9yIGFs
b25nIHRoZSB4LWF4aXMKLSAgICBPcmlnaW5MZWZ0VG9wID0gNSwgLy8gbWlycm9yIGFsb25nIHgt
YXhpcyArIDI3MCBkZWdyZWUgQ1cgcm90YXRpb24KLSAgICBPcmlnaW5SaWdodFRvcCA9IDYsIC8v
IDkwIGRlZ3JlZSBDVyByb3RhdGlvbgotICAgIE9yaWdpblJpZ2h0Qm90dG9tID0gNywgLy8gbWly
cm9yIGFsb25nIHgtYXhpcyArIDkwIGRlZ3JlZSBDVyByb3RhdGlvbgotICAgIE9yaWdpbkxlZnRC
b3R0b20gPSA4LCAvLyAyNzAgZGVncmVlIENXIHJvdGF0aW9uCi0gICAgLy8gQWxsIG90aGVyIHZh
bHVlcyBhcmUgInJlc2VydmVkIiBhcyBvZiBFWElGIDIuMgotICAgIERlZmF1bHRJbWFnZU9yaWVu
dGF0aW9uID0gT3JpZ2luVG9wTGVmdCwKLX07CitzdHJ1Y3QgSW1hZ2VPcmllbnRhdGlvbiB7Cisg
ICAgZW51bSBJbWFnZU9yaWVudGF0aW9uRW51bSB7CisgICAgICAgIEZyb21JbWFnZSAgICAgICAg
ID0gMCwKKworICAgICAgICAvLyBUaGlzIHJhbmdlIGludGVudGlvbmFsbHkgbWF0Y2hlcyB0aGUg
b3JpZW50YXRpb24gdmFsdWVzIGZyb20gdGhlIEVYSUYgc3BlYy4KKyAgICAgICAgLy8gU2VlIEpF
SVRBIENQLTM0NTEsIHBhZ2UgMTguIGh0dHA6Ly93d3cuZXhpZi5vcmcvRXhpZjItMi5QREYKKyAg
ICAgICAgT3JpZ2luVG9wTGVmdCAgICAgPSAxLCAvLyBkZWZhdWx0CisgICAgICAgIE9yaWdpblRv
cFJpZ2h0ICAgID0gMiwgLy8gbWlycm9yIGFsb25nIHktYXhpcworICAgICAgICBPcmlnaW5Cb3R0
b21SaWdodCA9IDMsIC8vIDE4MCBkZWdyZWUgcm90YXRpb24KKyAgICAgICAgT3JpZ2luQm90dG9t
TGVmdCAgPSA0LCAvLyBtaXJyb3IgYWxvbmcgdGhlIHgtYXhpcworICAgICAgICBPcmlnaW5MZWZ0
VG9wICAgICA9IDUsIC8vIG1pcnJvciBhbG9uZyB4LWF4aXMgKyAyNzAgZGVncmVlIENXIHJvdGF0
aW9uCisgICAgICAgIE9yaWdpblJpZ2h0VG9wICAgID0gNiwgLy8gOTAgZGVncmVlIENXIHJvdGF0
aW9uCisgICAgICAgIE9yaWdpblJpZ2h0Qm90dG9tID0gNywgLy8gbWlycm9yIGFsb25nIHgtYXhp
cyArIDkwIGRlZ3JlZSBDVyByb3RhdGlvbgorICAgICAgICBPcmlnaW5MZWZ0Qm90dG9tICA9IDgs
IC8vIDI3MCBkZWdyZWUgQ1cgcm90YXRpb24KKworICAgICAgICBOb25lICAgICAgICAgICAgICA9
IE9yaWdpblRvcExlZnQsCisgICAgICAgIERlZmF1bHQgICAgICAgICAgID0gTm9uZSwKKworICAg
ICAgICBFWElGRmlyc3QgICAgICAgICA9IE9yaWdpblRvcExlZnQsCisgICAgICAgIEVYSUZMYXN0
ICAgICAgICAgID0gT3JpZ2luTGVmdEJvdHRvbSwKKworICAgICAgICBGaXJzdCAgICAgICAgICAg
ICA9IEZyb21JbWFnZSwKKyAgICAgICAgTGFzdCAgICAgICAgICAgICAgPSBFWElGTGFzdAorICAg
IH07CiAKLWVudW0gUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHsKLSAgICBEb05vdFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uID0gMCwKLSAgICBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9IDEK
LX07CisgICAgSW1hZ2VPcmllbnRhdGlvbigpID0gZGVmYXVsdDsKIAotc3RydWN0IEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbiB7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwK
LSAgICAgICAgSW1hZ2VPcmllbnRhdGlvbkVudW0gb3JpZW50YXRpb24pCi0gICAgICAgIDogbV9y
ZXNwZWN0T3JpZW50YXRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCi0gICAgICAg
ICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKKyAgICBJbWFnZU9yaWVudGF0aW9uKEltYWdl
T3JpZW50YXRpb25FbnVtIG9yaWVudGF0aW9uKQorICAgICAgICA6IG1fb3JpZW50YXRpb24ob3Jp
ZW50YXRpb24pCiAgICAgewogICAgIH0KIAotICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
bigpCi0gICAgICAgIDogbV9yZXNwZWN0T3JpZW50YXRpb24oRG9Ob3RSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbikKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKERlZmF1bHRJbWFnZU9yaWVudGF0aW9u
KQorICAgIGV4cGxpY2l0IEltYWdlT3JpZW50YXRpb24oaW50IG9yaWVudGF0aW9uKQorICAgICAg
ICA6IEltYWdlT3JpZW50YXRpb24oaXNWYWxpZE9yaWVudGF0aW9uKG9yaWVudGF0aW9uKSA/IHN0
YXRpY19jYXN0PEltYWdlT3JpZW50YXRpb25FbnVtPihvcmllbnRhdGlvbikgOiBOb25lKQogICAg
IHsKICAgICB9CiAKLSAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oUmVzcGVjdEltYWdl
T3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAgICAgICA6
IG1fcmVzcGVjdE9yaWVudGF0aW9uKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAg
ICAgICAsIG1fb3JpZW50YXRpb24oRGVmYXVsdEltYWdlT3JpZW50YXRpb24pCisgICAgc3RhdGlj
IEltYWdlT3JpZW50YXRpb24gZnJvbUVYSUZPcmllbnRhdGlvbihpbnQgb3JpZW50YXRpb24pCiAg
ICAgeworICAgICAgICByZXR1cm4gaXNWYWxpZEVYSUZPcmllbnRhdGlvbihvcmllbnRhdGlvbikg
PyBzdGF0aWNfY2FzdDxJbWFnZU9yaWVudGF0aW9uRW51bT4ob3JpZW50YXRpb24pIDogTm9uZTsK
ICAgICB9CiAKLSAgICB2b2lkIHNldFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgeyBtX3Jlc3Bl
Y3RPcmllbnRhdGlvbiA9IHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uOyB9Ci0gICAgUmVz
cGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgeyByZXR1
cm4gbV9yZXNwZWN0T3JpZW50YXRpb247IH0KLQotICAgIHZvaWQgc2V0SW1hZ2VPcmllbnRhdGlv
bkVudW0oSW1hZ2VPcmllbnRhdGlvbkVudW0gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9
IG9yaWVudGF0aW9uOyB9Ci0gICAgSW1hZ2VPcmllbnRhdGlvbkVudW0gaW1hZ2VPcmllbnRhdGlv
bigpIHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICBvcGVyYXRvciBpbnQoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KG1fb3JpZW50YXRpb24pOyB9CiAKLSAgICBSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbkVudW0gbV9yZXNwZWN0T3JpZW50YXRpb247Ci0gICAgSW1hZ2VPcmll
bnRhdGlvbkVudW0gbV9vcmllbnRhdGlvbjsKLX07Ci0KLWNsYXNzIEltYWdlT3JpZW50YXRpb24g
ewotcHVibGljOgotICAgIEltYWdlT3JpZW50YXRpb24oKQotICAgICAgICA6IG1fb3JpZW50YXRp
b24oRGVmYXVsdEltYWdlT3JpZW50YXRpb24pCisgICAgYm9vbCB1c2VzV2lkdGhBc0hlaWdodCgp
IGNvbnN0CiAgICAgeworICAgICAgICBBU1NFUlQoaXNWYWxpZEVYSUZPcmllbnRhdGlvbihtX29y
aWVudGF0aW9uKSk7CisgICAgICAgIC8vIFZhbHVlcyA1IHRocm91Z2ggOCBhbGwgZmxpcCB0aGUg
d2lkdGgvaGVpZ2h0LgorICAgICAgICByZXR1cm4gbV9vcmllbnRhdGlvbiA+PSBPcmlnaW5MZWZ0
VG9wOwogICAgIH0KIAotICAgIGV4cGxpY2l0IEltYWdlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRh
dGlvbkVudW0gb3JpZW50YXRpb24pCi0gICAgICAgIDogbV9vcmllbnRhdGlvbihvcmllbnRhdGlv
bikKKyAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtRnJvbURlZmF1bHQoY29uc3QgRmxvYXRT
aXplJiBkcmF3blNpemUpIGNvbnN0CiAgICAgeworICAgICAgICBmbG9hdCB3ID0gZHJhd25TaXpl
LndpZHRoKCk7CisgICAgICAgIGZsb2F0IGggPSBkcmF3blNpemUuaGVpZ2h0KCk7CisKKyAgICAg
ICAgc3dpdGNoIChtX29yaWVudGF0aW9uKSB7CisgICAgICAgIGNhc2UgRnJvbUltYWdlOgorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gQWZmaW5l
VHJhbnNmb3JtKCk7CisgICAgICAgIGNhc2UgT3JpZ2luVG9wTGVmdDoKKyAgICAgICAgICAgIHJl
dHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKKyAgICAgICAgY2FzZSBPcmlnaW5Ub3BSaWdodDoKKyAg
ICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oLTEsICAwLCAgMCwgIDEsICB3LCAwKTsK
KyAgICAgICAgY2FzZSBPcmlnaW5Cb3R0b21SaWdodDoKKyAgICAgICAgICAgIHJldHVybiBBZmZp
bmVUcmFuc2Zvcm0oLTEsICAwLCAgMCwgLTEsICB3LCBoKTsKKyAgICAgICAgY2FzZSBPcmlnaW5C
b3R0b21MZWZ0OgorICAgICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSggMSwgIDAsICAw
LCAtMSwgIDAsIGgpOworICAgICAgICBjYXNlIE9yaWdpbkxlZnRUb3A6CisgICAgICAgICAgICBy
ZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCAwLCAgMSwgIDEsICAwLCAgMCwgMCk7CisgICAgICAgIGNh
c2UgT3JpZ2luUmlnaHRUb3A6CisgICAgICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCAw
LCAgMSwgLTEsICAwLCAgdywgMCk7CisgICAgICAgIGNhc2UgT3JpZ2luUmlnaHRCb3R0b206Cisg
ICAgICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCAwLCAtMSwgLTEsICAwLCAgdywgaCk7
CisgICAgICAgIGNhc2UgT3JpZ2luTGVmdEJvdHRvbToKKyAgICAgICAgICAgIHJldHVybiBBZmZp
bmVUcmFuc2Zvcm0oIDAsIC0xLCAgMSwgIDAsICAwLCBoKTsKKyAgICAgICAgfQorCisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7
CiAgICAgfQogCi0gICAgYm9vbCB1c2VzV2lkdGhBc0hlaWdodCgpIGNvbnN0Citwcml2YXRlOgor
ICAgIHN0YXRpYyBib29sIGlzVmFsaWRPcmllbnRhdGlvbihpbnQgb3JpZW50YXRpb24pCiAgICAg
ewotICAgICAgICAvLyBWYWx1ZXMgNSB0aHJvdWdoIDggYWxsIGZsaXAgdGhlIHdpZHRoL2hlaWdo
dC4KLSAgICAgICAgcmV0dXJuIG1fb3JpZW50YXRpb24gPj0gT3JpZ2luTGVmdFRvcDsKKyAgICAg
ICAgcmV0dXJuIG9yaWVudGF0aW9uID49IHN0YXRpY19jYXN0PGludD4oRmlyc3QpICYmIG9yaWVu
dGF0aW9uIDw9IHN0YXRpY19jYXN0PGludD4oTGFzdCk7CiAgICAgfQogCi0gICAgLy8gSW1hZ2VP
cmllbnRhdGlvbkVudW0gY3VycmVudGx5IG1hdGNoZXMgRVhJRiB2YWx1ZXMsIGhvd2V2ZXIgY29k
ZSBvdXRzaWRlCi0gICAgLy8gdGhpcyBmdW5jdGlvbiBzaG91bGQgbmV2ZXIgYXNzdW1lIHRoYXQu
Ci0gICAgc3RhdGljIEltYWdlT3JpZW50YXRpb24gZnJvbUVYSUZWYWx1ZShpbnQgZXhpZlZhbHVl
KQotICAgIHsKLSAgICAgICAgLy8gVmFsdWVzIGRpcmVjdCBmcm9tIGltYWdlcyBtYXkgYmUgaW52
YWxpZCwgaW4gd2hpY2ggY2FzZSB3ZSB1c2UgdGhlIGRlZmF1bHQuCi0gICAgICAgIGlmIChleGlm
VmFsdWUgPCBPcmlnaW5Ub3BMZWZ0IHx8IGV4aWZWYWx1ZSA+IE9yaWdpbkxlZnRCb3R0b20pCi0g
ICAgICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbigpOwotICAgICAgICByZXR1cm4gSW1h
Z2VPcmllbnRhdGlvbihzdGF0aWNfY2FzdDxJbWFnZU9yaWVudGF0aW9uRW51bT4oZXhpZlZhbHVl
KSk7Ci0gICAgfQotCi0gICAgLy8gVGhpcyB0cmFuc2Zvcm0gY2FuIGJlIHVzZWQgZm9yIGRyYXdp
bmcgYW4gaW1hZ2UgYWNjb3JkaW5nIHRvIHRoZSBvcmllbnRhdGlvbi4KLSAgICAvLyBJdCBzaG91
bGQgYmUgdXNlZCBpbiBhIHJpZ2h0LWhhbmRlZCBjb29yZGluYXRlIHN5c3RlbS4KLSAgICBBZmZp
bmVUcmFuc2Zvcm0gdHJhbnNmb3JtRnJvbURlZmF1bHQoY29uc3QgRmxvYXRTaXplJiBkcmF3blNp
emUpIGNvbnN0OwotCi0gICAgaW5saW5lIG9wZXJhdG9yIEltYWdlT3JpZW50YXRpb25FbnVtKCkg
Y29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQotICAgIAotICAgIGlubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90
aGVyLm1fb3JpZW50YXRpb24gPT0gbV9vcmllbnRhdGlvbjsgfQotICAgIGlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOyB9CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEVYSUZPcmllbnRhdGlv
bihpbnQgb3JpZW50YXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gb3JpZW50YXRpb24gPj0g
c3RhdGljX2Nhc3Q8aW50PihFWElGRmlyc3QpICYmIG9yaWVudGF0aW9uIDw9IHN0YXRpY19jYXN0
PGludD4oRVhJRkxhc3QpOworICAgIH0KIAotcHJpdmF0ZToKLSAgICAvLyBGSVhNRTogVGhpcyBv
bmx5IG5lZWRzIHRvIGJlIG9uZSBieXRlLgotICAgIEltYWdlT3JpZW50YXRpb25FbnVtIG1fb3Jp
ZW50YXRpb247CisgICAgSW1hZ2VPcmllbnRhdGlvbkVudW0gbV9vcmllbnRhdGlvbiB7IE5vbmUg
fTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEltYWdlT3JpZW50
YXRpb25faApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODksNyArNjg5
LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykKICAgICB0cy5kdW1w
UHJvcGVydHkoInNvbGlkLWNvbG9yIiwgc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkpOwogCiAgICAg
SW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4KDAp
OwotICAgIGlmIChvcmllbnRhdGlvbiAhPSBPcmlnaW5Ub3BMZWZ0KQorICAgIGlmIChvcmllbnRh
dGlvbiAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKQogICAgICAgICB0cy5kdW1wUHJvcGVydHko
Im9yaWVudGF0aW9uIiwgb3JpZW50YXRpb24pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5jcHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDcgKzQwLDcgQEAgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpOYW1lZEltYWdlR2VuZQogICAg
IHNldENvbnRhaW5lclNpemUoc2l6ZSk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBOYW1lZEltYWdl
R2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0
ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0
aW9uKQogewogI2lmIFVTRShORVdfVEhFTUUpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmgJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBJbWFn
ZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwor
ICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwogICAg
IHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CiAKICAgICBO
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UoU3RyaW5nIG5hbWUsIGNvbnN0IEZsb2F0U2l6ZSYpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5o
CShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIEludFNpemUgbmF0
aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWcKIGJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShj
b25zdCBOYXRpdmVJbWFnZVB0ciYpOwogQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlk
Q29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbnRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSwgY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYpOwordm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbnRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7CiB2b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKICAgICAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQkocmV2aXNpb24gMjQ4NDQyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNv
ZGVyQVZGT2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTMxLDcgKzUzMSw3IEBAIGJvb2wgSW1h
Z2VEZWNvZGVyQVZGT2JqQzo6ZnJhbWVJc0NvbXBsZXQKIAogSW1hZ2VPcmllbnRhdGlvbiBJbWFn
ZURlY29kZXJBVkZPYmpDOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb24oKTsKKyAgICByZXR1cm4gSW1hZ2VPcmllbnRh
dGlvbjo6Tm9uZTsKIH0KIAogU2Vjb25kcyBJbWFnZURlY29kZXJBVkZPYmpDOjpmcmFtZUR1cmF0
aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAJ
KHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OSw3ICsxNzksNyBA
QCBzdGF0aWMgdm9pZCBkcmF3U2hhZG93TGF5ZXJCdWZmZXIoUGxhdGZvCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKSkgewotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJm
YWNlLmdldCgpLCBGbG9hdFJlY3Qocm91bmRlZEludFBvaW50KGxheWVyT3JpZ2luKSwgbGF5ZXJT
aXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbGF5ZXJTaXplKSwgc2hhZG93U3RhdGUuZ2xv
YmFsQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9u
KCksCisgICAgICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0
KCksIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBsYXllclNpemUpLCBzaGFkb3dTdGF0ZS5nbG9iYWxDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlOjpOb3JtYWwsIEltYWdlT3JpZW50YXRpb246Ok5vbmUs
CiAgICAgICAgICAgICBJbnRlcnBvbGF0aW9uRGVmYXVsdCwgc2hhZG93U3RhdGUuZ2xvYmFsQWxw
aGEsIFNoYWRvd1N0YXRlKCkpOwogICAgIH0KIH0KQEAgLTE5Miw3ICsxOTIsNyBAQCBzdGF0aWMg
dm9pZCBkcmF3U2hhZG93SW1hZ2UoUGxhdGZvcm1Db250CiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkg
ewotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgp
LCBkZXN0UmVjdCwgc3JjUmVjdCwgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZTo6Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uKCksCisgICAgICAgIGRyYXdOYXRp
dmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0
LCBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlOjpOb3JtYWws
IEltYWdlT3JpZW50YXRpb246Ok5vbmUsCiAgICAgICAgICAgICBJbnRlcnBvbGF0aW9uRGVmYXVs
dCwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRlKCkpOwogICAgIH0KIH0KQEAg
LTg4OSw3ICs4ODksNyBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWly
CiAgICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBsYXRmb3JtQ29u
dGV4dCwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSk7CiAKICAgICBGbG9hdFJlY3QgZHN0
ID0gZGVzdFJlY3Q7Ci0gICAgaWYgKG9yaWVudGF0aW9uICE9IERlZmF1bHRJbWFnZU9yaWVudGF0
aW9uKSB7CisgICAgaWYgKG9yaWVudGF0aW9uICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsK
ICAgICAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBlY3RzIHRoZSBvcmlnaW4gdG8gYmUgYXQg
KDAsIDApLgogICAgICAgICBDYWlybzo6dHJhbnNsYXRlKHBsYXRmb3JtQ29udGV4dCwgZHN0Lngo
KSwgZHN0LnkoKSk7CiAgICAgICAgIGRzdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
by5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTQsNyArMzU0LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIAogewogICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weU1vZGUgPSAmZGVzdGluYXRp
b25Db250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNr
aW5nU3RvcmU7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNvcHlJbWFnZShjb3B5TW9kZSk7
Ci0gICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGU6OlN5
bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSkpOworICAgIGRlc3RpbmF0
aW9uQ29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWlu
dGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1h
Z2VPcmllbnRhdGlvbjo6RGVmYXVsdCkpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJu
VHJhbnNmb3JtLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
TmF0aXZlSW1hZ2VDYWlyby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAJKHJldmlzaW9uIDI0ODQ0MikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fp
cm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIENvbG9yIG5hdGl2ZUltYWdl
U2luZ2xlUGl4ZWxTb2xpZENvbG9yKGMKICAgICByZXR1cm4gY29sb3JGcm9tUHJlbXVsdGlwbGll
ZEFSR0IoKnBpeGVsKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgaW1hZ2VT
aXplLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5k
TW9kZSwgY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYgb3JpZW50YXRpb24pCit2b2lkIGRyYXdOYXRp
dmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KQogewogICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RS
ZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05h
dGl2ZUltYWdlKGNvCiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIGFkanVzdGVk
RGVzdFJlY3QueCgpLCBhZGp1c3RlZERlc3RSZWN0LnkoKSk7CiAgICAgYWRqdXN0ZWREZXN0UmVj
dC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOwogCi0gICAgaWYgKG9yaWVudGF0aW9uICE9IERl
ZmF1bHRJbWFnZU9yaWVudGF0aW9uKSB7CisgICAgaWYgKG9yaWVudGF0aW9uICE9IEltYWdlT3Jp
ZW50YXRpb246Ok5vbmUpIHsKICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG9y
aWVudGF0aW9uLnRyYW5zZm9ybUZyb21EZWZhdWx0KGFkanVzdGVkRGVzdFJlY3Quc2l6ZSgpKSk7
CiAgICAgICAgIGlmIChvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKSB7CiAgICAgICAg
ICAgICAvLyBUaGUgZGVzdGluYXRpb24gcmVjdCB3aWxsIGhhdmUgaXQncyB3aWR0aCBhbmQgaGVp
Z2h0IGFscmVhZHkgcmV2ZXJzZWQgZm9yIHRoZSBvcmllbnRhdGlvbiBvZgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsMTEgKzE1Niwx
MSBAQCBzdGF0aWMgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkZyb21QCiAgICAgQVNTRVJU
KGltYWdlUHJvcGVydGllcyk7CiAgICAgQ0ZOdW1iZXJSZWYgb3JpZW50YXRpb25Qcm9wZXJ0eSA9
IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShpbWFnZVByb3BlcnRpZXMsIGtDR0lt
YWdlUHJvcGVydHlPcmllbnRhdGlvbik7CiAgICAgaWYgKCFvcmllbnRhdGlvblByb3BlcnR5KQot
ICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbigpOworICAgICAgICByZXR1cm4gSW1hZ2VP
cmllbnRhdGlvbjo6Tm9uZTsKICAgICAKICAgICBpbnQgZXhpZlZhbHVlOwogICAgIENGTnVtYmVy
R2V0VmFsdWUob3JpZW50YXRpb25Qcm9wZXJ0eSwga0NGTnVtYmVySW50VHlwZSwgJmV4aWZWYWx1
ZSk7Ci0gICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246OmZyb21FWElGVmFsdWUoZXhpZlZhbHVl
KTsKKyAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6ZnJvbUVYSUZPcmllbnRhdGlvbihleGlm
VmFsdWUpOwogfQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQpAQCAtMzUwLDcgKzM1MCw3IEBAIElt
YWdlT3JpZW50YXRpb24gSW1hZ2VEZWNvZGVyQ0c6OmZyYW1lT3IKIHsKICAgICBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVBy
b3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgaW5kZXgsIGltYWdlU291cmNl
T3B0aW9ucygpLmdldCgpKSk7CiAgICAgaWYgKCFwcm9wZXJ0aWVzKQotICAgICAgICByZXR1cm4g
SW1hZ2VPcmllbnRhdGlvbigpOworICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6Tm9u
ZTsKICAgICAKICAgICByZXR1cm4gb3JpZW50YXRpb25Gcm9tUHJvcGVydGllcyhwcm9wZXJ0aWVz
LmdldCgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05h
dGl2ZUltYWdlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjksNyArNjksNyBAQCBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRD
b2xvcihjCiAgICAgcmV0dXJuIENvbG9yKHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVs
WzFdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzNd
KTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBjb25zdCBJbWFnZU9yaWVudGF0aW9uJiBvcmll
bnRhdGlvbikKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgbW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
bikKIHsKICAgICAvLyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0
IGlzIHNtYWxsZXIgdGhhbiBzaXplKCkuCiAgICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXpl
ID0gbmF0aXZlSW1hZ2VTaXplKGltYWdlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCShyZXZpc2lv
biAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgUERG
RG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2UKICAgICBkZWNvZGVkU2l6ZUNoYW5nZWQo
aW50ZXJuYWxTaXplLnVuY2xhbXBlZEFyZWEoKSAqIDQpOwogfQogCi1JbWFnZURyYXdSZXN1bHQg
UERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBvcCwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1faGFzUGFnZSkK
ICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmgJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBp
bnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmlu
c2ljUmF0aW8pIG92ZXJyaWRlOwogICAgIEZsb2F0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24p
IG92ZXJyaWRlOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIG92
ZXJyaWRlOwogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2Vy
dmF0aXZlLgogICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxMSwxMSArMTQxMSwxMSBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlCiAgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNl
X3RhZyhtZXNzYWdlLCAmdGFncyk7CiAgICAgICAgIGlmIChnc3RfdGFnX2xpc3RfZ2V0X3N0cmlu
Zyh0YWdzLCBHU1RfVEFHX0lNQUdFX09SSUVOVEFUSU9OLCAmdGFnLm91dFB0cigpKSkgewogICAg
ICAgICAgICAgaWYgKCFnX3N0cmNtcDAodGFnLmdldCgpLCAicm90YXRlLTkwIikpCi0gICAgICAg
ICAgICAgICAgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uKE9yaWdp
blJpZ2h0VG9wKSk7CisgICAgICAgICAgICAgICAgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihJ
bWFnZU9yaWVudGF0aW9uOjpPcmlnaW5SaWdodFRvcCk7CiAgICAgICAgICAgICBlbHNlIGlmICgh
Z19zdHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS0xODAiKSkKLSAgICAgICAgICAgICAgICBzZXRW
aWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24oT3JpZ2luQm90dG9tUmlnaHQp
KTsKKyAgICAgICAgICAgICAgICBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50
YXRpb246Ok9yaWdpbkJvdHRvbVJpZ2h0KTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNt
cDAodGFnLmdldCgpLCAicm90YXRlLTI3MCIpKQotICAgICAgICAgICAgICAgIHNldFZpZGVvU291
cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbihPcmlnaW5MZWZ0Qm90dG9tKSk7CisgICAg
ICAgICAgICAgICAgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uOjpP
cmlnaW5MZWZ0Qm90dG9tKTsKICAgICAgICAgfQogICAgICAgICBnc3RfdGFnX2xpc3RfdW5yZWYo
dGFncyk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04ODMsNyArODgzLDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYQogCiAgICAgSW1hZ2VQYWludGlu
Z09wdGlvbnMgcGFpbnRpbmdPcHRpb25zKENvbXBvc2l0ZUNvcHkpOwogICAgIGlmIChtX3JlbmRl
cmluZ0NhbkJlQWNjZWxlcmF0ZWQpCi0gICAgICAgIHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0
aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0obV92aWRlb1NvdXJjZU9yaWVu
dGF0aW9uKTsKKyAgICAgICAgcGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb24gPSBtX3ZpZGVv
U291cmNlT3JpZW50YXRpb247CiAKICAgICBhdXRvIGdzdEltYWdlID0gSW1hZ2VHU3RyZWFtZXI6
OmNyZWF0ZUltYWdlKG1fc2FtcGxlLmdldCgpKTsKICAgICBpZiAoIWdzdEltYWdlKQpAQCAtOTYx
LDcgKzk2MSw3IEBAIE5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW0KIH0K
ICNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSX0dMKQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OnNldFZpZGVvU291cmNlT3JpZW50YXRpb24oY29uc3QgSW1hZ2VPcmllbnRh
dGlvbiYgb3JpZW50YXRpb24pCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OnNldFZpZGVvU291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikK
IHsKICAgICBpZiAobV92aWRlb1NvdXJjZU9yaWVudGF0aW9uID09IG9yaWVudGF0aW9uKQogICAg
ICAgICByZXR1cm47CkBAIC05NzYsMTYgKzk3NiwxNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2U6OnNlCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OnVwZGF0ZVRleHR1cmVNYXBwZXJGbGFncygpCiB7CiAgICAgc3dpdGNoIChtX3ZpZGVvU291cmNl
T3JpZW50YXRpb24pIHsKLSAgICBjYXNlIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOgorICAgIGNh
c2UgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZToKICAgICAgICAgbV90ZXh0dXJlTWFwcGVyRmxhZ3Mg
PSAwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE9yaWdpblJpZ2h0VG9wOgorICAgIGNhc2Ug
SW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luUmlnaHRUb3A6CiAgICAgICAgIG1fdGV4dHVyZU1hcHBl
ckZsYWdzID0gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRSb3RhdGVUZXh0dXJlOTA7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgT3JpZ2luQm90dG9tUmlnaHQ6CisgICAgY2FzZSBJbWFnZU9yaWVu
dGF0aW9uOjpPcmlnaW5Cb3R0b21SaWdodDoKICAgICAgICAgbV90ZXh0dXJlTWFwcGVyRmxhZ3Mg
PSBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZFJvdGF0ZVRleHR1cmUxODA7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgT3JpZ2luTGVmdEJvdHRvbToKKyAgICBjYXNlIEltYWdlT3JpZW50YXRpb246
Ok9yaWdpbkxlZnRCb3R0b206CiAgICAgICAgIG1fdGV4dHVyZU1hcHBlckZsYWdzID0gVGV4dHVy
ZU1hcHBlckdMOjpTaG91bGRSb3RhdGVUZXh0dXJlMjcwOwogICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5oCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xODUsNyArMTg1LDcgQEAgcHVibGljOgogICAgIE5hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAg
dm9pZCBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKGNvbnN0IEltYWdlT3JpZW50YXRpb24mKTsK
KyAgICB2b2lkIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbik7CiAg
ICAgR3N0RWxlbWVudCogcGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX3BpcGVsaW5lLmdldCgp
OyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlU3luY01lc3NhZ2UoR3N0TWVzc2FnZSopOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4
dHVyZUNvcGllckdTdHJlYW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5jcHAJ
KHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NCwxNyArOTQsMTcgQEAgdm9pZCBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OnVwZGF0
ZQogICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4Lm1ha2VJZGVudGl0eSgpOwogCiAgICAgc3dpdGNo
IChtX29yaWVudGF0aW9uKSB7Ci0gICAgY2FzZSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjoKKyAg
ICBjYXNlIEltYWdlT3JpZW50YXRpb246Ok5vbmU6CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
T3JpZ2luUmlnaHRUb3A6CisgICAgY2FzZSBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5SaWdodFRv
cDoKICAgICAgICAgbV90ZXh0dXJlU3BhY2VNYXRyaXgucm90YXRlKC05MCk7CiAgICAgICAgIG1f
dGV4dHVyZVNwYWNlTWF0cml4LnRyYW5zbGF0ZSgtMSwgMCk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgT3JpZ2luQm90dG9tUmlnaHQ6CisgICAgY2FzZSBJbWFnZU9yaWVudGF0aW9uOjpPcmln
aW5Cb3R0b21SaWdodDoKICAgICAgICAgbV90ZXh0dXJlU3BhY2VNYXRyaXgucm90YXRlKDE4MCk7
CiAgICAgICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4LnRyYW5zbGF0ZSgtMSwgLTEpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIE9yaWdpbkxlZnRCb3R0b206CisgICAgY2FzZSBJbWFnZU9yaWVu
dGF0aW9uOjpPcmlnaW5MZWZ0Qm90dG9tOgogICAgICAgICBtX3RleHR1cmVTcGFjZU1hdHJpeC5y
b3RhdGUoLTI3MCk7CiAgICAgICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4LnRyYW5zbGF0ZSgwLCAt
MSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgVmlkZW9UZXh0dXJl
Q29waWVyR1N0cmVhbWVyOjp1cGRhdGUKICAgICAgICAgLTEsIDEsIC0oZmFyVmFsdWUgKyBuZWFy
VmFsdWUpIC8gKGZhclZhbHVlIC0gbmVhclZhbHVlKSwgMSk7CiB9CiAKLWJvb2wgVmlkZW9UZXh0
dXJlQ29waWVyR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR0x1
aW50IGlucHV0VGV4dHVyZSwgSW50U2l6ZSYgZnJhbWVTaXplLCBHTHVpbnQgb3V0cHV0VGV4dHVy
ZSwgR0xlbnVtIG91dHB1dFRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1h
dCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGJvb2wgZmxpcFksIEltYWdlT3JpZW50YXRp
b24mIHNvdXJjZU9yaWVudGF0aW9uKQorYm9vbCBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6
OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHTHVpbnQgaW5wdXRUZXh0dXJlLCBJ
bnRTaXplJiBmcmFtZVNpemUsIEdMdWludCBvdXRwdXRUZXh0dXJlLCBHTGVudW0gb3V0cHV0VGFy
Z2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVudW0gZm9ybWF0LCBH
TGVudW0gdHlwZSwgYm9vbCBmbGlwWSwgSW1hZ2VPcmllbnRhdGlvbiBzb3VyY2VPcmllbnRhdGlv
bikKIHsKICAgICBpZiAoIW1fc2hhZGVyUHJvZ3JhbSB8fCAhbV9mcmFtZWJ1ZmZlciB8fCAhbV92
Ym8gfHwgZnJhbWVTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNv
cGllckdTdHJlYW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaAkocmV2aXNpb24g
MjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Zp
ZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3
IEBAIHB1YmxpYzoKICAgICBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIoQ29sb3JDb252ZXJz
aW9uKTsKICAgICB+VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyKCk7CiAKLSAgICBib29sIGNv
cHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHTHVpbnQgaW5wdXRUZXh0dXJlLCBJbnRT
aXplJiBmcmFtZVNpemUsIEdMdWludCBvdXRwdXRUZXh0dXJlLCBHTGVudW0gb3V0cHV0VGFyZ2V0
LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVudW0gZm9ybWF0LCBHTGVu
dW0gdHlwZSwgYm9vbCBmbGlwWSwgSW1hZ2VPcmllbnRhdGlvbiYgc291cmNlT3JpZW50YXRpb24p
OworICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdMdWludCBpbnB1
dFRleHR1cmUsIEludFNpemUmIGZyYW1lU2l6ZSwgR0x1aW50IG91dHB1dFRleHR1cmUsIEdMZW51
bSBvdXRwdXRUYXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMZW51
bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBib29sIGZsaXBZLCBJbWFnZU9yaWVudGF0aW9uIHNvdXJj
ZU9yaWVudGF0aW9uKTsKICAgICB2b2lkIHVwZGF0ZUNvbG9yQ29udmVyc2lvbk1hdHJpeChDb2xv
ckNvbnZlcnNpb24pOwogICAgIHZvaWQgdXBkYXRlVGV4dHVyZVNwYWNlTWF0cml4KCk7CiAgICAg
dm9pZCB1cGRhdGVUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9u
cy5jcHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTEsNyAr
NzkxLDcgQEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZQogICAgIGNv
bnRleHQtPlNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOwogICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0
TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKIAotICAgIGlmIChvcmllbnRhdGlvbiAhPSBEZWZhdWx0
SW1hZ2VPcmllbnRhdGlvbikgeworICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbWFnZU9yaWVudGF0
aW9uOjpOb25lKSB7CiAgICAgICAgIGNvbmNhdENUTShwbGF0Zm9ybUNvbnRleHQsIG9yaWVudGF0
aW9uLnRyYW5zZm9ybUZyb21EZWZhdWx0KGFkanVzdGVkRGVzdFJlY3Quc2l6ZSgpKSk7CiAgICAg
ICAgIGlmIChvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKSB7CiAgICAgICAgICAgICAv
LyBUaGUgZGVzdGluYXRpb24gcmVjdCB3aWxsIGhhdmUgaXQncyB3aWR0aCBhbmQgaGVpZ2h0IGFs
cmVhZHkgcmV2ZXJzZWQgZm9yIHRoZSBvcmllbnRhdGlvbiBvZgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAkocmV2aXNp
b24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
Q0dXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIGJvb2wgQml0bWFwSW1h
Z2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE0KICAgICBpZiAoc2l6ZSkKICAgICAgICAgZHJhd0Zy
YW1lTWF0Y2hpbmdTb3VyY2VTaXplKGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5i
bVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgKnNpemUsIENvbXBvc2l0ZUNvcHkpOwogICAgIGVs
c2UKLSAgICAgICAgZHJhdyhnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0
aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lk
dGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2RlOjpOb3Jt
YWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
bigpKTsKKyAgICAgICAgZHJhdyhnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1X
aWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUu
d2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2RlOjpO
b3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246OkRlZmF1
bHQpOwogCiAgICAgLy8gRG8gY2xlYW51cAogICAgIENHQ29udGV4dFJlbGVhc2UoY2dDb250ZXh0
KTsKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyYwogICAgICAgICBpZiAoaW1hZ2UgJiYgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkgPT0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBDR0ltYWdlR2V0V2lkdGgoaW1h
Z2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewogICAgICAgICAg
ICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAgICAgbV9j
dXJyZW50RnJhbWUgPSBpOwotICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJl
Y3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgY29tcG9z
aXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJl
Y3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0
KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXMsIEltYWdlT3JpZW50YXRpb246OkRlZmF1bHQpOwogICAgICAgICAgICAgbV9jdXJyZW50
RnJhbWUgPSBjdXJyZW50RnJhbWU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTEwMyw3ICsxMDMsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJj
CiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29ycmVjdCBzaXplIHdhcyBmb3VuZCwgZmFsbGJh
Y2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFtZQogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUg
PSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwotICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0
KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBjb21w
b3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZs
b2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgp
KSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9u
b3VzLCBJbWFnZU9yaWVudGF0aW9uOjpEZWZhdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fp
cm9XaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZUNhaXJvV2luLmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04MSw3ICs4MSw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJ
VE0KICAgICBpZiAoc2l6ZSkKICAgICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKGdj
LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0
KSwgKnNpemUsIENvbXBvc2l0ZUNvcHkpOwogICAgIGVsc2UKLSAgICAgICAgZHJhdyhnYywgRmxv
YXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZs
b2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgp
KSwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgZHJhdyhnYywg
RmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCks
IEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdo
dCgpKSwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3lu
Y2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246OkRlZmF1bHQpOwogCiAgICAgLy8gRG8gY2xlYW51
cAogICAgIGNhaXJvX2Rlc3Ryb3kodGFyZ2V0UmVmKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lk
IEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjCiAgICAgICAgIGlmIChjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChz
dXJmYWNlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgoKSkpIHsK
ICAgICAgICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICAg
ICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsKLSAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVj
dCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQo
KSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJv
bm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAgZHJhdyhj
dHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNT
aXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpEZWZhdWx0KTsKICAgICAgICAgICAg
IG1fY3VycmVudEZyYW1lID0gY3VycmVudEZyYW1lOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0
Y2hpbmdTb3VyYwogCiAgICAgLy8gTm8gaW1hZ2Ugb2YgdGhlIGNvcnJlY3Qgc2l6ZSB3YXMgZm91
bmQsIGZhbGxiYWNrIHRvIGRyYXdpbmcgdGhlIGN1cnJlbnQgZnJhbWUKICAgICBGbG9hdFNpemUg
aW1hZ2VTaXplID0gQml0bWFwSW1hZ2U6OnNpemUoKTsKLSAgICBkcmF3KGN0eHQsIGRzdFJlY3Qs
IEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdo
dCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNo
cm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgZHJhdyhjdHh0LCBk
c3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6
ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVsdCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAkocmV2aXNpb24g
MjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVj
b2RlckRpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDIwICsxNTksMjAgQEAgYm9v
bCBJbWFnZURlY29kZXJEaXJlY3QyRDo6ZnJhbWVJc0NvbXBsZQogSW1hZ2VPcmllbnRhdGlvbiBJ
bWFnZURlY29kZXJEaXJlY3QyRDo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4
KSBjb25zdAogewogICAgIGlmICghbV9uYXRpdmVEZWNvZGVyKQotICAgICAgICByZXR1cm4gSW1h
Z2VPcmllbnRhdGlvbigpOworICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZTsK
IAogICAgIENPTVB0cjxJV0lDQml0bWFwRnJhbWVEZWNvZGU+IGZyYW1lOwogICAgIEhSRVNVTFQg
aHIgPSBtX25hdGl2ZURlY29kZXItPkdldEZyYW1lKGluZGV4LCAmZnJhbWUpOwogICAgIGlmICgh
U1VDQ0VFREVEKGhyKSkKLSAgICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb24oKTsKKyAgICAg
ICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok5vbmU7CiAKICAgICBDT01QdHI8SVdJQ01ldGFk
YXRhUXVlcnlSZWFkZXI+IG1ldGFkYXRhOwogICAgIGhyID0gZnJhbWUtPkdldE1ldGFkYXRhUXVl
cnlSZWFkZXIoJm1ldGFkYXRhKTsKICAgICBpZiAoIVNVQ0NFRURFRChocikpCi0gICAgICAgIHJl
dHVybiBJbWFnZU9yaWVudGF0aW9uKCk7CisgICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9u
OjpOb25lOwogCiAgICAgLy8gRklYTUU6IElkZW50aWZ5IGltYWdlIHR5cGUsIGFuZCBhc2sgcHJv
cGVyIG9yaWVudGF0aW9uLgotICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7CisgICAgcmV0
dXJuIEltYWdlT3JpZW50YXRpb246Ok5vbmU7CiB9CiAKIFNlY29uZHMgSW1hZ2VEZWNvZGVyRGly
ZWN0MkQ6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURpcmVjdDJELmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEaXJl
Y3QyRC5jcHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZURpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEs
NyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjCiAgICAgICAgIGlm
IChpbWFnZSAmJiBjbGFtcFRvPGludD4oaW1hZ2VTaXplLmhlaWdodCgpKSA9PSBzdGF0aWNfY2Fz
dDxpbnQ+KHNyY1NpemUuaGVpZ2h0KCkpICYmIGNsYW1wVG88aW50PihpbWFnZVNpemUud2lkdGgo
KSkgPT0gc3RhdGljX2Nhc3Q8aW50PihzcmNTaXplLndpZHRoKCkpKSB7CiAgICAgICAgICAgICBz
aXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAgICAgICAgICBtX2N1cnJl
bnRGcmFtZSA9IGk7Ci0gICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgw
LjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVP
cCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwg
RmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSks
IGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91
cywgSW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVsdCk7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFt
ZSA9IGN1cnJlbnRGcmFtZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtODks
NyArODksNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjCiAKICAg
ICAvLyBObyBpbWFnZSBvZiB0aGUgY29ycmVjdCBzaXplIHdhcyBmb3VuZCwgZmFsbGJhY2sgdG8g
ZHJhd2luZyB0aGUgY3VycmVudCBmcmFtZQogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBCaXRt
YXBJbWFnZTo6c2l6ZSgpOwotICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYs
IDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVP
cCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVj
dCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgY29t
cG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJ
bWFnZU9yaWVudGF0aW9uOjpEZWZhdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGly
ZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAgQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQ
aXhlbFNvbGlkQ29sb3IoYwogICAgIHJldHVybiBDb2xvcigpOwogfQogCi12b2lkIGRyYXdOYXRp
dmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYgb3JpZW50YXRpb24p
Cit2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmll
bnRhdGlvbikKIHsKICAgICBhdXRvIHBsYXRmb3JtQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1D
b250ZXh0KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VH
dGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1h
Z2VHdGsuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvRHJhZ0ltYWdlR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBEcmFn
SW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uCiAgICAgcmV0dXJuIGltYWdlOwog
fQogCi1EcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWFnZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFn
ZUZyb21JbWFnZShJbWFnZSogaW1hZ2UsIEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgcmV0dXJu
IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUuaAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQmFja2luZ1N0b3JlPiBtX2JhY2tpbmdTdG9yZTsKICAgICBEaXNwb3NhbE1l
dGhvZCBtX2Rpc3Bvc2FsTWV0aG9kIHsgRGlzcG9zYWxNZXRob2Q6OlVuc3BlY2lmaWVkIH07CiAK
LSAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24geyBEZWZhdWx0SW1hZ2VPcmllbnRh
dGlvbiB9OworICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IEltYWdlT3JpZW50
YXRpb246Ok5vbmUgfTsKICAgICBTZWNvbmRzIG1fZHVyYXRpb247CiAgICAgYm9vbCBtX2hhc0Fs
cGhhIHsgdHJ1ZSB9OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAko
cmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDExICsx
ODksMTEgQEAgc3RhdGljIEltYWdlT3JpZW50YXRpb24gcmVhZEltYWdlT3JpZW50YQogICAgICAg
ICAgICAgdW5zaWduZWQgdHlwZSA9IHJlYWRVaW50MTYoaWZkICsgMiwgaXNCaWdFbmRpYW4pOwog
ICAgICAgICAgICAgdW5zaWduZWQgY291bnQgPSByZWFkVWludDMyKGlmZCArIDQsIGlzQmlnRW5k
aWFuKTsKICAgICAgICAgICAgIGlmICh0YWcgPT0gb3JpZW50YXRpb25UYWcgJiYgdHlwZSA9PSBz
aG9ydFR5cGUgJiYgY291bnQgPT0gMSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSW1hZ2VPcmll
bnRhdGlvbjo6ZnJvbUVYSUZWYWx1ZShyZWFkVWludDE2KGlmZCArIDgsIGlzQmlnRW5kaWFuKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246OmZyb21FWElGT3JpZW50
YXRpb24ocmVhZFVpbnQxNihpZmQgKyA4LCBpc0JpZ0VuZGlhbikpOwogICAgICAgICB9CiAgICAg
fQogCi0gICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb24oKTsKKyAgICByZXR1cm4gSW1hZ2VPcmll
bnRhdGlvbjo6Tm9uZTsKIH0KIAogY2xhc3MgSlBFR0ltYWdlUmVhZGVyIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQkocmV2aXNpb24gMjQ4NDQy
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBEcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJh
Z0ltYWdlUmVmCiAKIHN0YXRpYyBmbG9hdCBtYXhpbXVtQWxsb3dlZERyYWdJbWFnZUFyZWEgPSA2
MDAgKiAxMDI0OwogCi1EcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdl
KiBpbWFnZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uKQorRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1hZ2UsIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPndpZHRoKCkg
fHwgIWltYWdlLT5oZWlnaHQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTk2LDkgKzk2LDcg
QEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbQogICAgICAgICBHcmFw
aGljc0NvbnRleHQgY29udGV4dChyZW5kZXJlckNvbnRleHQuQ0dDb250ZXh0KTsKICAgICAgICAg
Y29udGV4dC50cmFuc2xhdGUoMCwgaW1hZ2VTaXplLmhlaWdodCk7CiAgICAgICAgIGNvbnRleHQu
c2NhbGUoeyBhZGp1c3RlZEltYWdlU2NhbGUsIC1hZGp1c3RlZEltYWdlU2NhbGUgfSk7Ci0gICAg
ICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5nT3B0aW9uczsKLSAgICAgICAgcGFpbnRp
bmdPcHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbiA9IG9yaWVudGF0aW9uOwotICAgICAg
ICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoKSwgcGFpbnRpbmdPcHRpb25z
KTsKKyAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFBvaW50KCksIEltYWdl
UGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uKSk7CiAgICAgfV07CiAgICAgcmV0dXJuIGltYWdl
Q29weS5DR0ltYWdlOwogfQpAQCAtMjc0LDcgKzI3Miw3IEBAIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBzY2FsZURyYWdJbWFnZShSZXQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmV0YWluUHRy
PENHSW1hZ2VSZWY+IGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSosIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbikKK1JldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIHJldHVybiBudWxscHRy
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1t
CShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0lt
YWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxOSArOTIsMTggQEAgUmV0YWluUHRyPE5T
SW1hZ2U+IGRpc3NvbHZlRHJhZ0ltYWdlVG9GcgogICAgIHJldHVybiBkaXNzb2x2ZWRJbWFnZTsK
IH0KICAgICAgICAgCi1SZXRhaW5QdHI8TlNJbWFnZT4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdl
KEltYWdlKiBpbWFnZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQor
UmV0YWluUHRyPE5TSW1hZ2U+IGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1hZ2Us
IEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgRmxvYXRTaXplIHNpemUgPSBp
bWFnZS0+c2l6ZSgpOwogCiAgICAgaWYgKGlzPEJpdG1hcEltYWdlPigqaW1hZ2UpKSB7Ci0gICAg
ICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb247CiAgICAgICAgIEJpdG1hcEltYWdlJiBi
aXRtYXBJbWFnZSA9IGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2UpOwogICAgICAgICBJbnRT
aXplIHNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBiaXRtYXBJbWFnZS5zaXplUmVzcGVjdGlu
Z09yaWVudGF0aW9uKCk7CiAKLSAgICAgICAgaWYgKGRlc2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCisgICAgICAgIGlmIChvcmll
bnRhdGlvbiA9PSBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UpCiAgICAgICAgICAgICBvcmll
bnRhdGlvbiA9IGJpdG1hcEltYWdlLm9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCk7CiAKLSAg
ICAgICAgaWYgKG9yaWVudGF0aW9uICE9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKSB7CisgICAg
ICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKSB7CiAgICAgICAg
ICAgICAvLyBDb25zdHJ1Y3QgYSBjb3JyZWN0bHktcm90YXRlZCBjb3B5IG9mIHRoZSBpbWFnZSB0
byB1c2UgYXMgdGhlIGRyYWcgaW1hZ2UuCiAgICAgICAgICAgICBGbG9hdFJlY3QgZGVzdFJlY3Qo
RmxvYXRQb2ludCgpLCBzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCShyZXZpc2lvbiAy
NDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgZXhpdDoKICAgICByZXR1cm4gaGJt
cC5sZWFrKCk7CiB9CiAgICAgCi1EcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdl
KEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK0RyYWdJbWFnZVJlZiBj
cmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbikKIHsK
ICAgICBIV25kREMgZGMoMCk7CiAgICAgYXV0byB3b3JraW5nREMgPSBhZG9wdEdESU9iamVjdCg6
OkNyZWF0ZUNvbXBhdGlibGVEQyhkYykpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0RyYWdJbWFnZUNhaXJvV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgZXhpdDoKICAgICByZXR1cm4gaGJtcC5sZWFrKCk7
CiB9CiAgICAgCi1EcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBp
bWcsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFn
SW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICBIV25k
REMgZGMoMCk7CiAgICAgYXV0byB3b3JraW5nREMgPSBhZG9wdEdESU9iamVjdCg6OkNyZWF0ZUNv
bXBhdGlibGVEQyhkYykpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJ
bWFnZURpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRHJhZ0ltYWdlRGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04OSw3ICs4OSw3IEBAIERyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYK
ICAgICByZXR1cm4gaGJtcC5sZWFrKCk7CiB9CiAKLURyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1h
Z2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorRHJh
Z0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFnZU9yaWVu
dGF0aW9uKQogewogICAgIEhXbmREQyBkYyhudWxscHRyKTsKICAgICBhdXRvIHdvcmtpbmdEQyA9
IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRlQ29tcGF0aWJsZURDKGRjKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJldmlz
aW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1NSw3ICs5NTUsNyBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllCiAKICAgICAgICAgICAgIGF1dG8gaW50ZXJwb2xh
dGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsICppbWFnZSwgJmJnTGF5
ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOwogICAgICAgICAgICAgYXV0byBkZWNvZGluZ01vZGUg
PSBkZWNvZGluZ01vZGVGb3JJbWFnZURyYXcoKmltYWdlLCBwYWludEluZm8pOwotICAgICAgICAg
ICAgYXV0byBkcmF3UmVzdWx0ID0gY29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21l
dHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwg
Z2VvbWV0cnkudGlsZVNpemUoKSwgZ2VvbWV0cnkuc3BhY2VTaXplKCksIEltYWdlUGFpbnRpbmdP
cHRpb25zKGNvbXBvc2l0ZU9wLCBiZ0xheWVyLmJsZW5kTW9kZSgpLCBkZWNvZGluZ01vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCBpbnRlcnBvbGF0aW9uKSk7CisgICAgICAgICAg
ICBhdXRvIGRyYXdSZXN1bHQgPSBjb250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgZ2VvbWV0
cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBn
ZW9tZXRyeS50aWxlU2l6ZSgpLCBnZW9tZXRyeS5zcGFjZVNpemUoKSwgSW1hZ2VQYWludGluZ09w
dGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXIuYmxlbmRNb2RlKCksIGRlY29kaW5nTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbjo6RGVmYXVsdCwgaW50ZXJwb2xhdGlvbikpOwogICAgICAgICAgICAgaWYg
KGRyYXdSZXN1bHQgPT0gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1ZXN0RGVjb2RpbmcpIHsKICAg
ICAgICAgICAgICAgICBBU1NFUlQoYmdJbWFnZS0+aXNDYWNoZWRJbWFnZSgpKTsKICAgICAgICAg
ICAgICAgICBiZ0ltYWdlLT5jYWNoZWRJbWFnZSgpLT5hZGRDbGllbnRXYWl0aW5nRm9yQXN5bmNE
ZWNvZGluZygqdGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMzAsMTYgKzIwMzAsMTggQEAg
Ym9vbCBSZW5kZXJFbGVtZW50OjpjaGVja0ZvclJlcGFpbnREdXJpbgogICAgIHJldHVybiAhc2V0
dGluZ3MoKS5yZXBhaW50T3V0c2lkZUxheW91dEVuYWJsZWQoKTsKIH0KIAotUmVzcGVjdEltYWdl
T3JpZW50YXRpb25FbnVtIFJlbmRlckVsZW1lbnQ6OnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKCkgY29uc3QKK0ltYWdlT3JpZW50YXRpb24gUmVuZGVyRWxlbWVudDo6aW1hZ2VPcmllbnRh
dGlvbigpIGNvbnN0CiB7CiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1Qy
RCkKICAgICAvLyBUaGlzIGNhbiBvbmx5IGJlIGVuYWJsZWQgZm9yIHBvcnRzIHdoaWNoIGhvbm9y
IHRoZSBvcmllbnRhdGlvbiBmbGFnIGluIHRoZWlyIGRyYXdpbmcgY29kZS4KICAgICBpZiAoZG9j
dW1lbnQoKS5pc0ltYWdlRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uOworICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlOwog
I2VuZGlmCiAgICAgLy8gUmVzcGVjdCB0aGUgaW1hZ2UncyBvcmllbnRhdGlvbiBpZiBpdCdzIGJl
aW5nIHVzZWQgYXMgYSBmdWxsLXBhZ2UgaW1hZ2Ugb3IgaXQncwogICAgIC8vIGFuIDxpbWc+IGFu
ZCB0aGUgc2V0dGluZyB0byByZXNwZWN0IGl0IGV2ZXJ5d2hlcmUgaXMgc2V0LgotICAgIHJldHVy
biBzZXR0aW5ncygpLnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgJiYgaXM8SFRNTElt
YWdlRWxlbWVudD4oZWxlbWVudCgpKSA/IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uIDogRG9Ob3RS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbjsKKyAgICBpZiAoc2V0dGluZ3MoKS5zaG91bGRSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbigpICYmIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkpCisg
ICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2U7CisgICAgcmV0dXJuIHN0
eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpOwogfQogCiB2b2lkIFJlbmRlckVsZW1lbnQ6OmFkanVz
dEZyYWdtZW50ZWRGbG93U3RhdGVPbkNvbnRhaW5pbmdCbG9ja0NoYW5nZUlmTmVlZGVkKCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAkocmV2aXNpb24gMjQ4
NDQyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjA0LDcgKzIwNCw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJCbG9jayogY29u
dGFpbmluZ0Jsb2NrRm9yRml4ZWRQb3NpdGlvbigpIGNvbnN0OwogICAgIFJlbmRlckJsb2NrKiBj
b250YWluaW5nQmxvY2tGb3JBYnNvbHV0ZVBvc2l0aW9uKCkgY29uc3Q7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZU9yaWVudGF0aW9uIGlt
YWdlT3JpZW50YXRpb24oKSBjb25zdDsKIAogICAgIHZvaWQgcmVtb3ZlRnJvbVJlbmRlckZyYWdt
ZW50ZWRGbG93KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0RW5jbG9zaW5nRnJhZ21lbnRlZEZs
b3dBbmRDaGlsZEluZm9JbmNsdWRpbmdEZXNjZW5kYW50cyhSZW5kZXJGcmFnbWVudGVkRmxvdyop
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRP
YmplY3QuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsOCArMjI0LDcg
QEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRTbmFwc2hvdAogICAgICAgICByZXR1
cm47CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uID0gY2hvb3NlSW50
ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgaW1hZ2UsICZpbWFnZSwgYWxpZ25lZFJlY3Quc2l6
ZSgpKTsKLSAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlw
dGlvbihzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpLCBzdHlsZSgpLmltYWdlT3JpZW50
YXRpb24oKSk7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIGFsaWduZWRSZWN0LCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCBpbnRlcnBvbGF0aW9uKSk7
CisgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5n
T3B0aW9ucyhpbWFnZU9yaWVudGF0aW9uKCksIGludGVycG9sYXRpb24pKTsKIH0KIAogdm9pZCBS
ZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRDb250ZW50cyhQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjksMTEgKzQ2
OSw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmYKICAgICAgICAg
ICAgICAgICAgICAgY2VudGVyWSA9IDA7CiAgICAgICAgICAgICAgICAgaW1hZ2VPZmZzZXQgPSBM
YXlvdXRTaXplKGxlZnRCb3JkZXIgKyBsZWZ0UGFkICsgY2VudGVyWCArIG1pc3NpbmdJbWFnZUJv
cmRlcldpZHRoLCB0b3BCb3JkZXIgKyB0b3BQYWQgKyBjZW50ZXJZICsgbWlzc2luZ0ltYWdlQm9y
ZGVyV2lkdGgpOwogCi0gICAgICAgICAgICAgICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
IG9yaWVudGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSk7
Ci0jaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKLSAgICAgICAgICAgICAgICBvcmll
bnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VP
cmllbnRhdGlvbigpKTsKLSNlbmRpZgotICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdl
KCppbWFnZSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsg
aW1hZ2VPZmZzZXQsIGltYWdlU2l6ZSksIGRldmljZVNjYWxlRmFjdG9yKSwgb3JpZW50YXRpb25E
ZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBz
bmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNl
dCwgaW1hZ2VTaXplKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBpbWFnZU9yaWVudGF0aW9uKCkpOwog
ICAgICAgICAgICAgICAgIGVycm9yUGljdHVyZURyYXduID0gdHJ1ZTsKICAgICAgICAgICAgIH0K
IApAQCAtNjM1LDkgKzYzMSw4IEBAIEltYWdlRHJhd1Jlc3VsdCBSZW5kZXJJbWFnZTo6cGFpbnRJ
bnRvUmUKICAgICBpZiAoaXM8Qml0bWFwSW1hZ2U+KGltYWdlKSkKICAgICAgICAgZG93bmNhc3Q8
Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRlRnJvbVNldHRpbmdzKHNldHRpbmdzKCkpOwogCi0g
ICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24oc2hv
dWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSwgc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkp
OwogICAgIGF1dG8gZGVjb2RpbmdNb2RlID0gZGVjb2RpbmdNb2RlRm9ySW1hZ2VEcmF3KCppbWFn
ZSwgcGFpbnRJbmZvKTsKLSAgICBhdXRvIGRyYXdSZXN1bHQgPSBwYWludEluZm8uY29udGV4dCgp
LmRyYXdJbWFnZSgqaW1nLCByZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgb3JpZW50YXRpb25EZXNjcmlw
dGlvbiwgaW50ZXJwb2xhdGlvbikpOworICAgIGF1dG8gZHJhd1Jlc3VsdCA9IHBhaW50SW5mby5j
b250ZXh0KCkuZHJhd0ltYWdlKCppbWcsIHJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdNb2RlLCBpbWFnZU9yaWVu
dGF0aW9uKCksIGludGVycG9sYXRpb24pKTsKICAgICBpZiAoZHJhd1Jlc3VsdCA9PSBJbWFnZURy
YXdSZXN1bHQ6OkRpZFJlcXVlc3REZWNvZGluZykKICAgICAgICAgaW1hZ2VSZXNvdXJjZSgpLmNh
Y2hlZEltYWdlKCktPmFkZENsaWVudFdhaXRpbmdGb3JBc3luY0RlY29kaW5nKCp0aGlzKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDc2LDcgKzI0NzYsNyBAQCBib29s
IFJlbmRlckxheWVyQmFja2luZzo6aXNEaXJlY3RseUNvbXBvCiAgICAgICAgIGlmICghaXM8Qml0
bWFwSW1hZ2U+KGltYWdlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBp
ZiAoZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkub3JpZW50YXRpb25Gb3JDdXJyZW50RnJh
bWUoKSAhPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikKKyAgICAgICAgaWYgKGRvd25jYXN0PEJp
dG1hcEltYWdlPigqaW1hZ2UpLm9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgIT0gSW1hZ2VP
cmllbnRhdGlvbjo6Tm9uZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIChQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAJKHJldmlzaW9uIDI0ODQ0
MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw4ICsxNDUsNyBAQCB2b2lkIFJlbmRlclNuYXBzaG90
dGVkUGx1Z0luOjpwYWludFNuYXBzCiAgICAgICAgIHJldHVybjsKIAogICAgIEludGVycG9sYXRp
b25RdWFsaXR5IGludGVycG9sYXRpb24gPSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250
ZXh0LCAqaW1hZ2UsIGltYWdlLCBhbGlnbmVkUmVjdC5zaXplKCkpOwotICAgIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKHNob3VsZFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uKCksIHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKLSAgICBjb250ZXh0
LmRyYXdJbWFnZSgqaW1hZ2UsIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmll
bnRhdGlvbkRlc2NyaXB0aW9uLCBpbnRlcnBvbGF0aW9uKSk7CisgICAgY29udGV4dC5kcmF3SW1h
Z2UoKmltYWdlLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoaW1hZ2VPcmllbnRh
dGlvbigpLCBpbnRlcnBvbGF0aW9uKSk7CiB9CiAKIEN1cnNvckRpcmVjdGl2ZSBSZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbjo6Z2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgQ3Vyc29y
JiBvdmVycmlkZUN1cnNvcikgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzUyLDcg
Kzc1Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSBj
b25zdCB7IHJldHVybiBXZWJDb3JlOjppc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKHdyaXRpbmdN
b2RlKCkpOyB9CiAgICAgYm9vbCBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIFdlYkNvcmU6OmlzRmxpcHBlZFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKCkpOyB9CiAK
LSAgICBJbWFnZU9yaWVudGF0aW9uRW51bSBpbWFnZU9yaWVudGF0aW9uKCkgY29uc3Q7CisgICAg
SW1hZ2VPcmllbnRhdGlvbiBpbWFnZU9yaWVudGF0aW9uKCkgY29uc3Q7CiAKICAgICBJbWFnZVJl
bmRlcmluZyBpbWFnZVJlbmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdl
UmVuZGVyaW5nPihtX3JhcmVJbmhlcml0ZWREYXRhLT5pbWFnZVJlbmRlcmluZyk7IH0KIApAQCAt
OTUxLDcgKzk1MSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19JTUFHRV9P
UklFTlRBVElPTikKLSAgICB2b2lkIHNldEltYWdlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlv
bkVudW0gdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGltYWdlT3JpZW50YXRpb24s
IHN0YXRpY19jYXN0PGludD4odikpOyB9CisgICAgdm9pZCBzZXRJbWFnZU9yaWVudGF0aW9uKElt
YWdlT3JpZW50YXRpb24gdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGltYWdlT3Jp
ZW50YXRpb24sIHN0YXRpY19jYXN0PGludD4odikpOyB9CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0
SW1hZ2VSZW5kZXJpbmcoSW1hZ2VSZW5kZXJpbmcgdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRl
ZERhdGEsIGltYWdlUmVuZGVyaW5nLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odikpOyB9CkBAIC0x
NTgyLDcgKzE1ODIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIE9wdGlvblNldDxUZXh0RW1waGFz
aXNQb3NpdGlvbj4gaW5pdGlhbFRleHRFbXBoYXNpc1Bvc2l0aW9uKCkgeyByZXR1cm4geyBUZXh0
RW1waGFzaXNQb3NpdGlvbjo6T3ZlciwgVGV4dEVtcGhhc2lzUG9zaXRpb246OlJpZ2h0IH07IH0K
ICAgICBzdGF0aWMgUnVieVBvc2l0aW9uIGluaXRpYWxSdWJ5UG9zaXRpb24oKSB7IHJldHVybiBS
dWJ5UG9zaXRpb246OkJlZm9yZTsgfQogICAgIHN0YXRpYyBMaW5lQm94Q29udGFpbiBpbml0aWFs
TGluZUJveENvbnRhaW4oKSB7IHJldHVybiBMaW5lQm94Q29udGFpbkJsb2NrIHwgTGluZUJveENv
bnRhaW5JbmxpbmUgfCBMaW5lQm94Q29udGFpblJlcGxhY2VkOyB9Ci0gICAgc3RhdGljIEltYWdl
T3JpZW50YXRpb25FbnVtIGluaXRpYWxJbWFnZU9yaWVudGF0aW9uKCkgeyByZXR1cm4gT3JpZ2lu
VG9wTGVmdDsgfQorICAgIHN0YXRpYyBJbWFnZU9yaWVudGF0aW9uIGluaXRpYWxJbWFnZU9yaWVu
dGF0aW9uKCkgeyByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVsdDsgfQogICAgIHN0YXRp
YyBJbWFnZVJlbmRlcmluZyBpbml0aWFsSW1hZ2VSZW5kZXJpbmcoKSB7IHJldHVybiBJbWFnZVJl
bmRlcmluZzo6QXV0bzsgfQogICAgIHN0YXRpYyBJbWFnZVJlc29sdXRpb25Tb3VyY2UgaW5pdGlh
bEltYWdlUmVzb2x1dGlvblNvdXJjZSgpIHsgcmV0dXJuIEltYWdlUmVzb2x1dGlvblNvdXJjZTo6
U3BlY2lmaWVkOyB9CiAgICAgc3RhdGljIEltYWdlUmVzb2x1dGlvblNuYXAgaW5pdGlhbEltYWdl
UmVzb2x1dGlvblNuYXAoKSB7IHJldHVybiBJbWFnZVJlc29sdXRpb25TbmFwOjpOb25lOyB9CkBA
IC0yMDkxLDEyICsyMDkxLDEyIEBAIGlubGluZSBib29sIFJlbmRlclN0eWxlOjpoYXNJbmxpbmVD
b2x1bW4KICAgICByZXR1cm4gYXhpcyA9PSBDb2x1bW5BeGlzOjpBdXRvIHx8IGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgPT0gKGF4aXMgPT0gQ29sdW1uQXhpczo6SG9yaXpvbnRhbCk7CiB9CiAK
LWlubGluZSBJbWFnZU9yaWVudGF0aW9uRW51bSBSZW5kZXJTdHlsZTo6aW1hZ2VPcmllbnRhdGlv
bigpIGNvbnN0CitpbmxpbmUgSW1hZ2VPcmllbnRhdGlvbiBSZW5kZXJTdHlsZTo6aW1hZ2VPcmll
bnRhdGlvbigpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SW1hZ2VPcmllbnRhdGlvbkVudW0+KG1fcmFyZUluaGVyaXRl
ZERhdGEtPmltYWdlT3JpZW50YXRpb24pOworICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKG1f
cmFyZUluaGVyaXRlZERhdGEtPmltYWdlT3JpZW50YXRpb24pOwogI2Vsc2UKLSAgICByZXR1cm4g
RGVmYXVsdEltYWdlT3JpZW50YXRpb247CisgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246OkRl
ZmF1bHQ7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNyArMjAyLDcgQEAgSW1hZ2VE
cmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbgogCiAgICAgZnJhbWVWaWV3KCktPnNj
cm9sbFRvRnJhZ21lbnQoaW5pdGlhbEZyYWdtZW50VVJMKTsKIAotICAgIEltYWdlRHJhd1Jlc3Vs
dCByZXN1bHQgPSBkcmF3KGNvbnRleHQsIGRzdFJlY3QsIHNjYWxlZFNyYywgY29tcG9zaXRlT3As
IGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKCkpOworICAgIEltYWdlRHJhd1Jlc3VsdCByZXN1bHQgPSBkcmF3KGNvbnRleHQs
IGRzdFJlY3QsIHNjYWxlZFNyYywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVsdCk7CiAKICAgICBzZXRJbWFn
ZU9ic2VydmVyKG9ic2VydmVyKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjIxLDcgKzIyMSw3
IEBAIE5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckMKICAgICBpZiAoIWJ1
ZmZlcikgLy8gZmFpbGVkIHRvIGFsbG9jYXRlIGltYWdlCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCByZWN0KCksIENvbXBvc2l0
ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3Vz
LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgZHJhdyhidWZmZXItPmNvbnRl
eHQoKSwgcmVjdCgpLCByZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9y
bWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpEZWZhdWx0
KTsKIAogICAgIC8vIEZJWE1FOiBXSyhCdWcgMTEzNjU3KTogV2Ugc2hvdWxkIHVzZSBEb250Q29w
eUJhY2tpbmdTdG9yZSBoZXJlLgogICAgIHJldHVybiBidWZmZXItPmNvcHlJbWFnZShDb3B5QmFj
a2luZ1N0b3JlKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKQEAgLTI0Nyw3ICsyNDcs
NyBAQCBOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2UoY29uCiAgICAgUGxhdGZv
cm1Db250ZXh0RGlyZWN0MkQgcGxhdGZvcm1Db250ZXh0KG5hdGl2ZUltYWdlVGFyZ2V0LmdldCgp
KTsKICAgICBHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQsIEdy
YXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAK
LSAgICBkcmF3KGxvY2FsQ29udGV4dCwgcmVjdCgpLCByZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92
ZXIsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgZHJhdyhsb2NhbENvbnRleHQsIHJlY3QoKSwg
cmVjdCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdN
b2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVsdCk7CiAKICAgICByZXR1
cm4gbmF0aXZlSW1hZ2U7CiB9CkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJh
d1BhdHRlcm5Gb3JDb250YWluZXIoRwogICAgIGltYWdlLT5kcmF3UGF0dGVybihjb250ZXh0LCBk
c3RSZWN0LCBzY2FsZWRTcmNSZWN0LCB1bnNjYWxlZFBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBz
cGFjaW5nLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IFNW
R0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBv
c2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5k
TW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIGlmICghbV9wYWdl
KQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgJKHJldmlzaW9uIDI0ODQ0MikKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05
NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydEFuaW1hdGlvblRpbWVyRmlyZWQo
KTsKIAogICAgIGV4cGxpY2l0IFNWR0ltYWdlKEltYWdlT2JzZXJ2ZXImKTsKLSAgICBJbWFnZURy
YXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwg
RGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIGZpbmFsOworICAgIElt
YWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZnJv
bVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIGZpbmFsOwogICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6
ZSBjb250YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxG
cmFnbWVudFVSTCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogICAgIHZvaWQgZHJhd1BhdHRl
cm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplJiBjb250YWlu
ZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVS
TCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLAogICAgICAgICBD
b21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiwgQmxlbmRNb2RlKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVy
LmNwcAkocmV2aXNpb24gMjQ4NDQyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlRm9yQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBG
bG9hdFNpemUgU1ZHSW1hZ2VGb3JDb250YWluZXI6OnNpemUoKSBjCiB9CiAKIEltYWdlRHJhd1Jl
c3VsdCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKLSAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNv
ZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKKyAgICBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxl
bmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgcmV0dXJuIG1f
aW1hZ2UtPmRyYXdGb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX2NvbnRh
aW5lclpvb20sIG1faW5pdGlhbEZyYWdtZW50VVJMLCBkc3RSZWN0LCBzcmNSZWN0LCBjb21wb3Np
dGVPcCwgYmxlbmRNb2RlKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCShyZXZpc2lvbiAyNDg0NDIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1faW1hZ2UtPmNvbXB1dGVJ
bnRyaW5zaWNEaW1lbnNpb25zKGludHJpbnNpY1dpZHRoLCBpbnRyaW5zaWNIZWlnaHQsIGludHJp
bnNpY1JhdGlvKTsKICAgICB9CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
bikgZmluYWw7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBmaW5hbDsKIAogICAgIHZvaWQg
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0
IEZsb2F0U2l6ZSYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkocmV2aXNpb24gMjQ4NDUyKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wOC0wOCAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIHNob3VsZFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uIHNob3VsZCBiZSBhIHZhbHVlIGluIEltYWdlT3JpZW50YXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDU1MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjppbWFnZVBvc2l0aW9u
SW5mb3JtYXRpb24pOgorCiAyMDE5LTA4LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIHRocmVhZGluZyBhc3NlcnRpb25zIHRvIFdlYlN0b3JhZ2UgY29k
ZQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0JKHJldmlzaW9uIDI0ODQ0MikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNjM4LDggKzI2
MzgsNyBAQCBzdGF0aWMgdm9pZCBpbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24oV2ViCiAgICAgaWYg
KCFncmFwaGljc0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc2hvdWxkUmVz
cGVjdEltYWdlT3JpZW50YXRpb24gPSByZW5kZXJJbWFnZS5zaG91bGRSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbigpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRS
ZWN0KDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSksIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbihzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikpOwor
ICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRSZWN0KDAsIDAsIGJp
dG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSksIHJlbmRlckltYWdlLmltYWdl
T3JpZW50YXRpb24oKSk7CiAgICAgaW5mby5pbWFnZSA9IHNoYXJlZEJpdG1hcDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376089</attachid>
            <date>2019-08-12 13:10:41 -0700</date>
            <delta_ts>2019-08-13 09:44:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200553-20190812131040.patch</filename>
            <type>text/plain</type>
            <size>109126</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3OSBAQAorMjAxOS0wOC0xMiAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIHNob3VsZFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uIHNob3VsZCBiZSBhIHZhbHVlIGluIEltYWdlT3JpZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDU1
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaXMgYSBzdGVwIHRvd2FyZHMgaW1wbGVtZW50aW5nIHRoZSBjc3MgaW1hZ2Utb3JpZW50
YXRpb24uCisKKyAgICAgICAgSW5zdGVhZCBvZiBoYXZpbmcgSW1hZ2VPcmllbnRhdGlvbkVudW0s
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiwKKyAgICAgICAgSW1hZ2VPcmllbnRhdGlvbiBh
bmQgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHdlIGFyZSBnb2luZyB0byBoYXZlIGEKKyAg
ICAgICAgc2luZ2xlIHN0cnVjdHVyZSBuYW1lZCAnSW1hZ2VPcmllbnRhdGlvbicgd2hpY2ggaXMg
YSB3cmFwcGVyIGZvcgorICAgICAgICBJbWFnZU9yaWVudGF0aW9uRW51bS4gVGhlIHN0cnVjdCB3
aWxsIGhhdmUgYSBjb25zdHJ1Y3RvciBhbmQgY2FzdGluZworICAgICAgICBvcGVyYXRvciBzdWNo
IHRoYXQgYXNzaWduaW5nIGFuIGVudW0gdmFsdWUgYW5kIGNvbXBhcmluZyB3aXRoIGFuIGVudW0K
KyAgICAgICAgdmFsdWUgd2lsbCBiZSBkb25lIGltcGxpY2l0bHkuCisKKyAgICAgICAgVGhlIFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uIHdpbGwgYmUgcmVwcmVzZW50ZWQgYXMgYSBuZXcgZW51bSB2
YWx1ZSBuYW1lZAorICAgICAgICAnRnJvbUltYWdlJyBpbiBJbWFnZU9yaWVudGF0aW9uRW51bS4K
KworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBJbWFnZU9y
aWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpv
cGVyYXRvciBJbWFnZU9yaWVudGF0aW9uRW51bSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
ZG9tL0RhdGFUcmFuc2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNy
ZWF0ZURyYWdJbWFnZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRJbWFnZTo6aW1hZ2VTaXplRm9yUmVuZGVyZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRvSW1h
Z2VEcmFnKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbVNuYXBzaG90KToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0ltYWdlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6OkltYWdl
UGFpbnRpbmdPcHRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGw6OmRy
YXdJbWFnZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJh
d1RpbGVkSW1hZ2VJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJh
bWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uOjpJbWFnZU9yaWVudGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb246Om9wZXJhdG9yIGludCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uOjp1c2VzV2lkdGhBc0hlaWdodCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uOjp0cmFuc2Zvcm1Gcm9t
RGVmYXVsdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uOjppc1Zh
bGlkRVhJRk9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb246
OmlzVmFsaWRPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb246OkltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb246OnNldFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbjo6cmVzcGVjdEltYWdlT3JpZW50YXRpb24pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uOjpzZXRJbWFnZU9yaWVudGF0
aW9uRW51bSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb246OmltYWdlT3JpZW50YXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VPcmllbnRhdGlvbjo6ZnJvbUVYSUZWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbWFnZU9yaWVudGF0aW9uOjpvcGVyYXRvciBJbWFnZU9yaWVudGF0aW9uRW51bSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uOjpvcGVyYXRv
cj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb246
Om9wZXJhdG9yIT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpkdW1wKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpmcmFtZU9yaWVudGF0aW9uQXRJ
bmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3U2hhZG93TGF5ZXJCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRyYXdTaGFkb3dJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpDYWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRp
dmVJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om9yaWVudGF0aW9uRnJvbVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyQ0c6OmZyYW1lT3JpZW50YXRpb25BdEluZGV4IGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9j
dW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpkcmF3
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmhhbmRsZU1lc3NhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFZpZGVvU291cmNlT3JpZW50
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZTo6dXBkYXRlVGV4dHVyZU1hcHBlckZsYWdzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjp1cGRh
dGVUZXh0dXJlU3BhY2VNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UZXh0dXJlQ29w
aWVyR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFt
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURlY29kZXJEaXJlY3QyRDo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXggY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURpcmVjdDJELmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL0RyYWdJbWFnZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1h
Z2VEZWNvZGVyRnJhbWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEltYWdlT3JpZW50
YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW06CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VE
aXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2Up
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRWxlbWVudDo6aW1hZ2VPcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJFbGVtZW50OjpzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpw
YWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9S
ZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6aXNEaXJlY3RseUNvbXBvc2l0ZWRJbWFn
ZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNuYXBz
aG90KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRJbWFnZU9yaWVudGF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VPcmllbnRhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW1hZ2VPcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaDoKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdG
b3JDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhdyk6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFp
bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3KToK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaDoKKwogMjAxOS0w
OC0xMiAgVGhpYmF1bHQgU2F1bmllciAgPHRzYXVuaWVyQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dTdHJlYW1lcl1bV2ViUlRDXSBIYW5kbGUgYnJva2VuIGRhdGEgaW4gdGhlIGxpYndlYnJ0YyBH
U3RyZWFtZXIgZGVjb2RlcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNDg1MzApCisr
KyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTgxOSw3ICsx
ODE5LDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVu
dGF0aW9uLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9JbnRQb2ludC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExNzg5LDcgKzExNzg5LDYgQEAKIAkJ
QTg3MURGRTEwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlcldpZGdldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyV2lkZ2V0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTg3NDhCREYxMkNCRjJEQzAwMUZCQTQxIC8qIEhhc2hUb29scy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYXNoVG9vbHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg3NDhENjYxMkNDMzc2MzAwMUZCQTQxIC8qIEltYWdlT3Jp
ZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VPcmllbnRh
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBODc0OEQ3NDEyQ0MzRjg5MDAx
RkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbWFnZU9yaWVudGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTg4MDVBRjExNkM5NkFFQTAwMEU5RDk4IC8qIElucHV0U3RyZWFtUHJlcHJvY2Vzc29y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE4ODJEQTFGMTU5Mzg0NkEwMDAxMTVFRCAvKiBDU1NUb1N0eWxl
TWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1RvU3R5bGVN
YXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODgyREEyMjE1OTM4NDhEMDAw
MTE1RUQgLyogQ1NTVG9TdHlsZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDU1NUb1N0eWxlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzA4NCw4
ICsxNzA4Myw4IEBACiAJCQkJQzIxQkY3MjAyMUNEODlERDAwMjI3OTc5IC8qIFdITFNMRW51bWVy
YXRpb25EZWZpbml0aW9uLmggKi8sCiAJCQkJQzIxQkY3MjYyMUNEODlFMzAwMjI3OTc5IC8qIFdI
TFNMRW51bWVyYXRpb25NZW1iZXIuaCAqLywKIAkJCQlDMjFCRjcwMjIxQ0Q4OUM0MDAyMjc5Nzkg
LyogV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaCAqLywKLQkJCQlDMjFCRjcwQzIxQ0Q4
OUNDMDAyMjc5NzkgLyogV0hMU0xFeHByZXNzaW9uLmggKi8sCiAJCQkJNTIyRDA3QTMyMkZCQUI0
MzAwQjkwNUJFIC8qIFdITFNMRXhwcmVzc2lvbi5jcHAgKi8sCisJCQkJQzIxQkY3MEMyMUNEODlD
QzAwMjI3OTc5IC8qIFdITFNMRXhwcmVzc2lvbi5oICovLAogCQkJCUMyMUJGNzAwMjFDRDg5QzIw
MDIyNzk3OSAvKiBXSExTTEZhbGx0aHJvdWdoLmggKi8sCiAJCQkJQzIxQkY3MzUyMUNEODlGMjAw
MjI3OTc5IC8qIFdITFNMRmxvYXRMaXRlcmFsLmggKi8sCiAJCQkJMUNCNjlCMzgyMURGMDNFMTAw
NkU4NDZBIC8qIFdITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHAgKi8sCkBAIC0yNDU0NCw3ICsyNDU0
Myw2IEBACiAJCQkJNTU3NkE1NjIxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuY3BwICov
LAogCQkJCTU1NzZBNTYzMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggKi8sCiAJCQkJ
QkM3RjQ0QTcwQjlFMzI0RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCAqLywKLQkJCQlBODc0
OEQ3NDEyQ0MzRjg5MDAxRkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5jcHAgKi8sCiAJCQkJQTg3
NDhENjYxMkNDMzc2MzAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uaCAqLywKIAkJCQk0OTI5
MUU0QTEzNDE3MkM4MDBFNzUzREUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmggKi8sCiAJCQkJNTU0
Njc1NzcxRkQxRkMxQTAwM0IxMEIwIC8qIEltYWdlU291cmNlLmNwcCAqLywKQEAgLTI4NjAxLDYg
KzI4NTk5LDcgQEAKIAkJCQlFMUZFMTM3NTE4NDAyQTY3MDA4OTJGMTMgLyogQ29tbW9uQ3J5cHRv
VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYwRjMyQjFERkJCMTA3MDA0MTZENkMg
LyogQ29tbW9uVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDOTNGMzRBMUFBNkJBNUUwMEE5OEJB
QiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUU0RTk0
RDYxMjJGRjE1OEEwMEREMTkxRiAvKiBDb21wbGV4TGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzJGNEU3OEMxRTQ1QzNFRjAwNkQ3MTA1IC8qIENvbXBsZXhUZXh0Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTRCQTUwOTAxQkNGQkQ5NTAwRTM0RUY3IC8qIENvbXBvc2Vk
VHJlZUFuY2VzdG9ySXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NEZBMTg1MUJDQTZC
NUEwMDkxQjZFRiAvKiBDb21wb3NlZFRyZWVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MDgxNSw3ICszMDgxNCw2IEBACiAJCQkJMUE3RkE2MTkwRERBM0IzQTAwMjhGOEE1IC8qIE5ldHdv
cmtTdGF0ZU5vdGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTNFRjM0NDE2ODRFQ0Y0MDAz
NEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjkz
OTcyNDFBNEE1QjY0MDBFODM0OUQgLyogTkZBLmggaW4gSGVhZGVycyAqLywKLQkJCQlFNEU5NEQ2
MTIyRkYxNThBMDBERDE5MUYgLyogQ29tcGxleExpbmVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTI2OTM5NzIyMUE0QTQxMkYwMEU4MzQ5RCAvKiBORkFOb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyNjc3MjYwMTFBNUIzQUQ5MDAzQzI0REQgLyogTkZBVG9ERkEuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDRUY0M0REMEU2NzQwMTIwMDFDMTI4NyAvKiBOaW5lUGllY2VJbWFnZS5oIGluIEhl
YWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBw
aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZU1hcHBpbmdzLmgJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4NzQsNDkgKzQ4NzQs
NTAgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogCiAjaWYgRU5B
QkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEltYWdlT3JpZW50YXRpb25FbnVtIGUpCit0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoSW1hZ2VP
cmllbnRhdGlvbiBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7CiAgICAgbV9w
cmltaXRpdmVVbml0VHlwZSA9IENTU19ERUc7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBP
cmlnaW5Ub3BMZWZ0OgorICAgIGNhc2UgSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luVG9wTGVmdDoK
ICAgICAgICAgbV92YWx1ZS5udW0gPSAwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE9yaWdp
blJpZ2h0VG9wOgorICAgIGNhc2UgSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luUmlnaHRUb3A6CiAg
ICAgICAgIG1fdmFsdWUubnVtID0gOTA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3JpZ2lu
Qm90dG9tUmlnaHQ6CisgICAgY2FzZSBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5Cb3R0b21SaWdo
dDoKICAgICAgICAgbV92YWx1ZS5udW0gPSAxODA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
T3JpZ2luTGVmdEJvdHRvbToKKyAgICBjYXNlIEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkxlZnRC
b3R0b206CiAgICAgICAgIG1fdmFsdWUubnVtID0gMjcwOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIE9yaWdpblRvcFJpZ2h0OgotICAgIGNhc2UgT3JpZ2luTGVmdFRvcDoKLSAgICBjYXNlIE9y
aWdpbkJvdHRvbUxlZnQ6Ci0gICAgY2FzZSBPcmlnaW5SaWdodEJvdHRvbToKKyAgICBjYXNlIElt
YWdlT3JpZW50YXRpb246OkZyb21JbWFnZToKKyAgICBjYXNlIEltYWdlT3JpZW50YXRpb246Ok9y
aWdpblRvcFJpZ2h0OgorICAgIGNhc2UgSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luTGVmdFRvcDoK
KyAgICBjYXNlIEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkJvdHRvbUxlZnQ6CisgICAgY2FzZSBJ
bWFnZU9yaWVudGF0aW9uOjpPcmlnaW5SaWdodEJvdHRvbToKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgSW1hZ2VPcmllbnRhdGlvbkVudW0oKSBjb25zdAordGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEltYWdlT3JpZW50YXRpb24oKSBjb25zdAog
ewogICAgIEFTU0VSVChpc0FuZ2xlKCkpOwogICAgIGRvdWJsZSBxdWFydGVycyA9IDQgKiBkb3Vi
bGVWYWx1ZShDU1NfVFVSTik7CiAgICAgaW50IG9yaWVudGF0aW9uID0gMyAmIHN0YXRpY19jYXN0
PGludD4ocXVhcnRlcnMgPCAwID8gZmxvb3IocXVhcnRlcnMpIDogY2VpbChxdWFydGVycykpOwog
ICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHsKICAgICBjYXNlIDA6Ci0gICAgICAgIHJldHVybiBP
cmlnaW5Ub3BMZWZ0OworICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luVG9w
TGVmdDsKICAgICBjYXNlIDE6Ci0gICAgICAgIHJldHVybiBPcmlnaW5SaWdodFRvcDsKKyAgICAg
ICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok9yaWdpblJpZ2h0VG9wOwogICAgIGNhc2UgMjoK
LSAgICAgICAgcmV0dXJuIE9yaWdpbkJvdHRvbVJpZ2h0OworICAgICAgICByZXR1cm4gSW1hZ2VP
cmllbnRhdGlvbjo6T3JpZ2luQm90dG9tUmlnaHQ7CiAgICAgY2FzZSAzOgotICAgICAgICByZXR1
cm4gT3JpZ2luTGVmdEJvdHRvbTsKKyAgICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok9y
aWdpbkxlZnRCb3R0b207CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIE9yaWdpblRvcExlZnQ7CisgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok5vbmU7
CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDQsNyArNTQ0
LDcgQEAgRHJhZ0ltYWdlUmVmIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRHJhZ0ltYQogICAgIGxvY2F0
aW9uID0gbV9kcmFnTG9jYXRpb247CiAKICAgICBpZiAobV9kcmFnSW1hZ2UpCi0gICAgICAgIHJl
dHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UobV9kcmFnSW1hZ2UtPmltYWdlKCksIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFn
ZUZyb21JbWFnZShtX2RyYWdJbWFnZS0+aW1hZ2UoKSwgSW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVs
dCk7CiAKICAgICBpZiAobV9kcmFnSW1hZ2VFbGVtZW50KSB7CiAgICAgICAgIGlmIChGcmFtZSog
ZnJhbWUgPSBtX2RyYWdJbWFnZUVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDg1MzAp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjEwLDE3ICs2MTAsMTAgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQo
R3JhcGhpY3NDbwogCiAgICAgICAgIGlmIChzaG91bGRQYWludCkgewogICAgICAgICAgICAgaWYg
KGhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpKSB7Ci0gICAgICAgICAgICAgICAgSW1hZ2VCdWZmZXIq
IGltYWdlQnVmZmVyID0gYnVmZmVyKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGltYWdlQnVmZmVy
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX3ByZXNlbnRlZEltYWdlKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25E
ZXNjcmlwdGlvbjsKLSNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgICAgICAg
ICAgICAgICAgICAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9u
RW51bShyZW5kZXJlcigpLT5zdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7Ci0jZW5kaWYKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCptX3ByZXNlbnRlZEltYWdl
LCBzbmFwcGVkSW50UmVjdChyKSwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNj
cmlwdGlvbikpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgc25hcHBlZEludFJl
Y3QocikpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobV9wcmVzZW50
ZWRJbWFnZSkKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKm1fcHJlc2Vu
dGVkSW1hZ2UsIHNuYXBwZWRJbnRSZWN0KHIpLCByZW5kZXJlcigpLT5pbWFnZU9yaWVudGF0aW9u
KCkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlciA9
IGJ1ZmZlcigpKQorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigq
aW1hZ2VCdWZmZXIsIHNuYXBwZWRJbnRSZWN0KHIpKTsKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKGlzR1BVQmFzZWQoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgwLDcgKzI4
MCw3IEBAIEZsb2F0U2l6ZSBDYWNoZWRJbWFnZTo6aW1hZ2VTaXplRm9yUmVuZGUKICAgICBpZiAo
IW1faW1hZ2UpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBpZiAoaXM8Qml0bWFwSW1hZ2U+
KCptX2ltYWdlKSAmJiByZW5kZXJlciAmJiByZW5kZXJlci0+c2hvdWxkUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKKyAgICBpZiAoaXM8Qml0bWFw
SW1hZ2U+KCptX2ltYWdlKSAmJiByZW5kZXJlciAmJiByZW5kZXJlci0+aW1hZ2VPcmllbnRhdGlv
bigpID09IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkKICAgICAgICAgcmV0dXJuIGRvd25j
YXN0PEJpdG1hcEltYWdlPigqbV9pbWFnZSkuc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpOwog
CiAgICAgaWYgKGlzPFNWR0ltYWdlPigqbV9pbWFnZSkgJiYgc2l6ZVR5cGUgPT0gVXNlZFNpemUp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjQ4
NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExOTcsMTAgKzExOTcsMTAgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZG9JbWFn
ZURyYWcoRWxlbWVudAogICAgIGlmICghZWxlbWVudC5yZW5kZXJlcigpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlw
dGlvbihlbGVtZW50LnJlbmRlcmVyKCktPnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCks
IGVsZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOworICAgIElt
YWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBlbGVtZW50LnJlbmRlcmVyKCktPmltYWdlT3Jp
ZW50YXRpb24oKTsKIAogICAgIEltYWdlKiBpbWFnZSA9IGdldEltYWdlKGVsZW1lbnQpOwotICAg
IGlmIChpbWFnZSAmJiAhbGF5b3V0UmVjdC5pc0VtcHR5KCkgJiYgc2hvdWxkVXNlQ2FjaGVkSW1h
Z2VGb3JEcmFnSW1hZ2UoKmltYWdlKSAmJiAoZHJhZ0ltYWdlID0gRHJhZ0ltYWdlIHsgY3JlYXRl
RHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLCBlbGVtZW50LnJlbmRlcmVyKCkgPyBvcmllbnRhdGlv
bkRlc2NyaXB0aW9uIDogSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpIH0pKSB7CisgICAg
aWYgKGltYWdlICYmICFsYXlvdXRSZWN0LmlzRW1wdHkoKSAmJiBzaG91bGRVc2VDYWNoZWRJbWFn
ZUZvckRyYWdJbWFnZSgqaW1hZ2UpICYmIChkcmFnSW1hZ2UgPSBEcmFnSW1hZ2UgeyBjcmVhdGVE
cmFnSW1hZ2VGcm9tSW1hZ2UoaW1hZ2UsIG9yaWVudGF0aW9uKSB9KSkgewogICAgICAgICBkcmFn
SW1hZ2UgPSBEcmFnSW1hZ2UgeyBmaXREcmFnSW1hZ2VUb01heFNpemUoZHJhZ0ltYWdlLmdldCgp
LCBsYXlvdXRSZWN0LnNpemUoKSwgbWF4RHJhZ0ltYWdlU2l6ZSgpKSB9OwogICAgICAgICBJbnRT
aXplIGZpdHRlZFNpemUgPSBkcmFnSW1hZ2VTaXplKGRyYWdJbWFnZS5nZXQoKSk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTAyLDIwICsxMDIsMTUgQEAgc3RhdGljIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9t
UwogICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uOwotI2lmIEVOQUJMRShDU1NfSU1B
R0VfT1JJRU5UQVRJT04pCisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbjsKICAgICBp
ZiAobm9kZSkgewogICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVy
ZXIoKTsKICAgICAgICAgaWYgKCFyZW5kZXJlciB8fCAhaXM8UmVuZGVyRWxlbWVudD4ocmVuZGVy
ZXIpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0byYgcmVuZGVy
RWxlbWVudCA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpyZW5kZXJlcik7Ci0gICAgICAgIG9y
aWVudGF0aW9uLnNldFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKHJlbmRlckVsZW1lbnQuc2hvdWxk
UmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSk7Ci0gICAgICAgIG9yaWVudGF0aW9uLnNldEltYWdl
T3JpZW50YXRpb25FbnVtKHJlbmRlckVsZW1lbnQuc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkp
OworICAgICAgICBvcmllbnRhdGlvbiA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpyZW5kZXJl
cikuaW1hZ2VPcmllbnRhdGlvbigpOwogICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG5v
ZGUpOwotI2VuZGlmCisKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gSW1hZ2VCdWZmZXI6OnNp
bmtJbnRvSW1hZ2UoV1RGTW92ZShzbmFwc2hvdCksIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsK
ICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMwNSw3ICszMDAs
NyBAQCBEcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLURyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1h
Z2UqLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJh
Z0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRHJhZ0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RHJhZ0ltYWdlLmgJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RyYWdJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIERyYWdJbWFnZVJl
ZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYKIERyYWdJbWFnZVJlZiBwbGF0Zm9ybUFkanVz
dERyYWdJbWFnZUZvckRldmljZVNjYWxlRmFjdG9yKERyYWdJbWFnZVJlZiwgZmxvYXQgZGV2aWNl
U2NhbGVGYWN0b3IpOwogRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihE
cmFnSW1hZ2VSZWYsIGZsb2F0IGRlbHRhKTsKIAotRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFn
ZUZyb21JbWFnZShJbWFnZSosIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbik7CitEcmFnSW1h
Z2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VPcmllbnRhdGlvbik7
CiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlRmlsZW5hbWUo
Y29uc3QgU3RyaW5nJik7CiAKIFdFQkNPUkVfRVhQT1JUIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFn
SW1hZ2VGb3JOb2RlKEZyYW1lJiwgTm9kZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xv
cigpCiB9CiAjZW5kaWYKIAotSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIERl
Y29kaW5nTW9kZSBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNj
cmlwdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBEZWNvZGluZ01v
ZGUgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIGlm
IChkZXN0UmVjdC5pc0VtcHR5KCkgfHwgc3JjUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkBAIC0yNjgsOCArMjY4LDcgQEAgSW1hZ2VE
cmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaQogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KIAotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24oZGVzY3JpcHRpb24u
aW1hZ2VPcmllbnRhdGlvbigpKTsKLSAgICBpZiAoZGVzY3JpcHRpb24ucmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKKyAgICBpZiAob3JpZW50YXRp
b24gPT0gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlKQogICAgICAgICBvcmllbnRhdGlvbiA9
IGZyYW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIAogICAgIGRyYXdOYXRp
dmVJbWFnZShpbWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc2l6ZSgp
KSwgb3AsIG1vZGUsIG9yaWVudGF0aW9uKTsKQEAgLTMwNiw3ICszMDUsNyBAQCB2b2lkIEJpdG1h
cEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvCiAgICAgICAgIC8vIFRlbXBvcmFyaWx5IHJl
c2V0IGltYWdlIG9ic2VydmVyLCB3ZSBkb24ndCB3YW50IHRvIHJlY2VpdmUgYW55IGNoYW5nZUlu
UmVjdCgpIGNhbGxzIGR1ZSB0byB0aGlzIHJlbGF5b3V0LgogICAgICAgICBzZXRJbWFnZU9ic2Vy
dmVyKG51bGxwdHIpOwogCi0gICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHRpbGVSZWN0
LCB0aWxlUmVjdCwgb3AsIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICBkcmF3KGJ1ZmZlci0+Y29udGV4
dCgpLCB0aWxlUmVjdCwgdGlsZVJlY3QsIG9wLCBibGVuZE1vZGUsIERlY29kaW5nTW9kZTo6U3lu
Y2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246OkRlZmF1bHQpOwogCiAgICAgICAgIHNldEltYWdl
T2JzZXJ2ZXIob2JzZXJ2ZXIpOwogICAgICAgICBidWZmZXItPmNvbnZlcnRUb0x1bWluYW5jZU1h
c2soKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDcgKzE2MSw3IEBAIHBy
b3RlY3RlZDoKICAgICAvLyB8ZGVzdHJveUFsbHwgYWxvbmcuCiAgICAgdm9pZCBkZXN0cm95RGVj
b2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lBbGwgPSB0cnVlKTsKIAotICAgIEltYWdl
RHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
LCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7Cisg
ICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFs
KSBvdmVycmlkZTsKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBkcmF3RnJhbWVNYXRjaGlu
Z1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgb3ZlcnJpZGU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6
ZHJhd0Nyb3NzZgogICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotSW1h
Z2VEcmF3UmVzdWx0IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
LCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK0ltYWdlRHJhd1Jl
c3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2Rp
bmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlv
bihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAkocmV2
aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJs
aWM6CiAgICAgRmxvYXRTaXplIHNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Nyb3Nz
ZmFkZVNpemU7IH0KIAogcHJvdGVjdGVkOgotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRy
YXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAogICAgIENyb3NzZmFkZUdlbmVyYXRlZEltYWdl
KEltYWdlJiBmcm9tSW1hZ2UsIEltYWdlJiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25z
dCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFn
ZS5jcHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNyArMTcwLDcg
QEAgSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdAogICAgIHJldHVybiBJ
bWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBDdXN0b21QYWlu
dEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQog
ewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihkZXN0Q29udGV4dCk7
CiAgICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVu
ZE1vZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFp
bnRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0N1c3RvbVBhaW50SW1hZ2UuaAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01
Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAKICAgICBJbWFnZURyYXdSZXN1bHQgZG9DdXN0b21QYWlu
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmKTsKIAotICAgIEltYWdlRHJhd1Jl
c3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNv
ZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgZmluYWw7CisgICAgSW1hZ2VE
cmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUs
IERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7CiAgICAgdm9pZCBkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9y
bSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7CiAKICAgICBXZWFrUHRyPFBhaW50V29y
a2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24+IG1fcGFpbnREZWZpbml0aW9uOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFn
ZS5oCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HZW5lcmF0ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIC8qZGVzdHJveUFsbCovID0gdHJ1
ZSkgb3ZlcnJpZGUgeyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlID0gMDsKKyAgICBJbWFnZURyYXdS
ZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVj
b2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZSA9IDA7CiAgICAgdm9pZCBkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwKICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgb3ZlcnJpZGUgPSAwOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudElt
YWdlLmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhZGllbnRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAg
R3JhZGllbnRJbWFnZTo6R3JhZGllbnRJbWFnZShHcmFkaWVudCYgZwogCiBHcmFkaWVudEltYWdl
Ojp+R3JhZGllbnRJbWFnZSgpID0gZGVmYXVsdDsKIAotSW1hZ2VEcmF3UmVzdWx0IEdyYWRpZW50
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24pCitJbWFnZURyYXdSZXN1bHQgR3JhZGllbnRJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBC
bGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCiB7CiAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGRlc3RDb250ZXh0KTsKICAg
ICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9k
ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGll
bnRJbWFnZS5oCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFkaWVudEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBHcmFkaWVudEltYWdlKEdyYWRpZW50JiwgY29uc3QgRmxv
YXRTaXplJik7CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24pIGZpbmFsOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRp
b24pIGZpbmFsOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZp
bmFsOwogICAgIGJvb2wgaXNHcmFkaWVudEltYWdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZvaWQgZHVtcChXVEY6OlRleHRTdHJlYW0mKSBjb25zdCBmaW5hbDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMzLDcgKzczMyw3
IEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWEKICAgICAgICAgcmV0
dXJuIG1faW1wbC0+ZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBh
aW50aW5nT3B0aW9ucyk7CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50
ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3KCp0aGlzLCBk
ZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJh
dG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb25EZXNj
cmlwdGlvbik7CisgICAgcmV0dXJuIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3Vy
Y2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9k
ZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbik7CiB9CiAKIEltYWdlRHJhd1Jl
c3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBG
bG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKQEAgLTc0NSw3ICs3NDUsNyBA
QCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsCiAgICAgICAgIHJldHVy
biBtX2ltcGwtPmRyYXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxl
U2l6ZSwgc3BhY2luZywgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogCiAgICAgSW50ZXJwb2xhdGlv
blF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlz
LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICByZXR1
cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwg
c3BhY2luZywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQ
YWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fZGVjb2Rp
bmdNb2RlKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwg
c291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3Np
dGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fZGVjb2RpbmdNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0
aW9uKTsKIH0KIAogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1h
Z2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMSwyOSArMjExLDI5IEBAIHN0
cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CiB9OwogCiBzdHJ1Y3QgSW1hZ2VQYWludGluZ09w
dGlvbnMgewotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBv
c2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9
IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdN
b2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9u
RGVzY3JpcHRpb24gPSBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgSW50ZXJwb2xhdGlv
blF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBJbnRlcnBvbGF0aW9uRGVmYXVsdCkKKyAg
ICBJbWFnZVBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRv
ciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6
Ok5vcm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXMsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpO
b25lLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9s
YXRpb25EZWZhdWx0KQogICAgICAgICA6IG1fY29tcG9zaXRlT3BlcmF0b3IoY29tcG9zaXRlT3Bl
cmF0b3IpCiAgICAgICAgICwgbV9ibGVuZE1vZGUoYmxlbmRNb2RlKQogICAgICAgICAsIG1fZGVj
b2RpbmdNb2RlKGRlY29kaW5nTW9kZSkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uRGVzY3JpcHRp
b24ob3JpZW50YXRpb25EZXNjcmlwdGlvbikKKyAgICAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVu
dGF0aW9uKQogICAgICAgICAsIG1faW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlvblF1
YWxpdHkpCiAgICAgewogICAgIH0KIAotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCBJbnRlcnBvbGF0aW9u
UXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0LCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJs
ZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlIGRlY29k
aW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpCisgICAgSW1hZ2VQYWludGluZ09w
dGlvbnMoSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgSW50ZXJwb2xhdGlvblF1YWxpdHkg
aW50ZXJwb2xhdGlvblF1YWxpdHkgPSBJbnRlcnBvbGF0aW9uRGVmYXVsdCwgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUg
YmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUg
PSBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKQogICAgICAgICA6IG1fY29tcG9zaXRlT3BlcmF0
b3IoY29tcG9zaXRlT3BlcmF0b3IpCiAgICAgICAgICwgbV9ibGVuZE1vZGUoYmxlbmRNb2RlKQog
ICAgICAgICAsIG1fZGVjb2RpbmdNb2RlKGRlY29kaW5nTW9kZSkKLSAgICAgICAgLCBtX29yaWVu
dGF0aW9uRGVzY3JpcHRpb24ob3JpZW50YXRpb25EZXNjcmlwdGlvbikKKyAgICAgICAgLCBtX29y
aWVudGF0aW9uKG9yaWVudGF0aW9uKQogICAgICAgICAsIG1faW50ZXJwb2xhdGlvblF1YWxpdHko
aW50ZXJwb2xhdGlvblF1YWxpdHkpCiAgICAgewogICAgIH0KIAotICAgIEltYWdlUGFpbnRpbmdP
cHRpb25zKEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5LCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbigpLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9
IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5v
cm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25v
dXMpCisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMoSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJw
b2xhdGlvblF1YWxpdHksIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBJbWFnZU9yaWVu
dGF0aW9uOjpOb25lLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBv
c2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwg
RGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpCiAg
ICAgICAgIDogbV9jb21wb3NpdGVPcGVyYXRvcihjb21wb3NpdGVPcGVyYXRvcikKICAgICAgICAg
LCBtX2JsZW5kTW9kZShibGVuZE1vZGUpCiAgICAgICAgICwgbV9kZWNvZGluZ01vZGUoZGVjb2Rp
bmdNb2RlKQotICAgICAgICAsIG1fb3JpZW50YXRpb25EZXNjcmlwdGlvbihvcmllbnRhdGlvbkRl
c2NyaXB0aW9uKQorICAgICAgICAsIG1fb3JpZW50YXRpb24ob3JpZW50YXRpb24pCiAgICAgICAg
ICwgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eShpbnRlcnBvbGF0aW9uUXVhbGl0eSkKICAgICB7CiAg
ICAgfQpAQCAtMjQzLDcgKzI0Myw3IEBAIHN0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9ucyB7CiAg
ICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9jb21wb3NpdGVPcGVyYXRvcjsKICAgICBCbGVuZE1vZGUg
bV9ibGVuZE1vZGU7CiAgICAgRGVjb2RpbmdNb2RlIG1fZGVjb2RpbmdNb2RlOwotICAgIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbiBtX29yaWVudGF0aW9uRGVzY3JpcHRpb247CisgICAgSW1h
Z2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOwogICAgIEludGVycG9sYXRpb25RdWFsaXR5IG1f
aW50ZXJwb2xhdGlvblF1YWxpdHk7CiB9OwogCkBAIC0zNDcsNyArMzQ3LDcgQEAgcHVibGljOgog
ICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGU7IH0KIAogI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJEKSB8fCBVU0UoQ0FJUk8pCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIEltYWdlT3JpZW50YXRp
b24gPSBJbWFnZU9yaWVudGF0aW9uKCkpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05h
dGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5k
TW9kZTo6Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uID0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7
CiAjZW5kaWYKIAogI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJEKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1w
bC5jcHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMyArNDAs
MTMgQEAgR3JhcGhpY3NDb250ZXh0SW1wbDo6fkdyYXBoaWNzQ29udGV4dEltcAogSW1hZ2VEcmF3
UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdJbWFnZUltcGwoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQ
YWludGluZ09wdGlvbnMpCiB7CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGlu
dGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3KGNvbnRl
eHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRl
T3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlv
bkRlc2NyaXB0aW9uKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhdyhjb250ZXh0LCBkZXN0aW5hdGlv
biwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFn
ZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9kZWNv
ZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb24pOwogfQogCiBJbWFn
ZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNp
emUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IGltYWdlUGFpbnRpbmdPcHRpb25zKQogewogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRh
aW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZShjb250ZXh0LCBpbWFnZVBhaW50
aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICByZXR1cm4gaW1hZ2UuZHJh
d1RpbGVkKGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0
aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9kZWNvZGluZ01vZGUpOwor
ICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoY29udGV4dCwgZGVzdGluYXRpb24sIHNvdXJjZSwg
dGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0
b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9u
cy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbik7CiB9
CiAKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUlt
cGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUm
IHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUg
dlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAJKHJldmlz
aW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KCp0
aGlzKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250
ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBz
cmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVj
b2RpbmdNb2RlIGRlY29kaW5nTW9kZSkKK0ltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVk
KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNpemUsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBi
bGVuZE1vZGUsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24pCiB7CiAgICAgQ29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsK
ICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7CkBAIC0xODQsNyArMTg0LDcgQEAgSW1hZ2VEcmF3
UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpYwogICAgICAgICB2aXNpYmxlU3JjUmVjdC5z
ZXRZKChkZXN0UmVjdC55KCkgLSBvbmVUaWxlUmVjdC55KCkpIC8gc2NhbGUuaGVpZ2h0KCkpOwog
ICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0aChkZXN0UmVjdC53aWR0aCgpIC8gc2NhbGUu
d2lkdGgoKSk7CiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldEhlaWdodChkZXN0UmVjdC5oZWln
aHQoKSAvIHNjYWxlLmhlaWdodCgpKTsKLSAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJl
Y3QsIHZpc2libGVTcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBkZWNvZGluZ01vZGUsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJl
Y3QsIHZpc2libGVTcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBkZWNvZGluZ01vZGUsIG9yaWVudGF0
aW9uKTsKICAgICB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTk2LDcgKzE5Niw3
IEBAIEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWMKICAgICAgICAgICAg
IHZpc2libGVTcmNSZWN0LnNldFkoKGRlc3RSZWN0LnkoKSAtIG9uZVRpbGVSZWN0LnkoKSkgLyBz
Y2FsZS5oZWlnaHQoKSk7CiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0aCgxKTsK
ICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldEhlaWdodChkZXN0UmVjdC5oZWlnaHQoKSAv
IHNjYWxlLmhlaWdodCgpKTsKLSAgICAgICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0
LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybiBkcmF3KGN0
eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNv
ZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKICAgICAgICAgfQogICAgICAgICBpZiAoc2l6ZSgpLmhl
aWdodCgpID09IDEgJiYgaW50ZXJzZWN0aW9uKG9uZVRpbGVSZWN0LCBkZXN0UmVjdCkud2lkdGgo
KSA9PSBkZXN0UmVjdC53aWR0aCgpKSB7CiAgICAgICAgICAgICBGbG9hdFJlY3QgdmlzaWJsZVNy
Y1JlY3Q7CkBAIC0yMDQsNyArMjA0LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGls
ZWQoR3JhcGhpYwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgwKTsKICAgICAgICAg
ICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0
aCgpKTsKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldEhlaWdodCgxKTsKLSAgICAgICAg
ICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5k
TW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigp
KTsKKyAgICAgICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVj
dCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKICAg
ICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMjM2LDcgKzIzNiw3IEBAIEltYWdlRHJhd1Jlc3Vs
dCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWMKICAgICAgICAgICAgICAgICBGbG9hdFJlY3QgZnJv
bVJlY3QodG9GbG9hdFBvaW50KGN1cnJlbnRUaWxlUmVjdC5sb2NhdGlvbigpIC0gb25lVGlsZVJl
Y3QubG9jYXRpb24oKSksIGN1cnJlbnRUaWxlUmVjdC5zaXplKCkpOwogICAgICAgICAgICAgICAg
IGZyb21SZWN0LnNjYWxlKDEgLyBzY2FsZS53aWR0aCgpLCAxIC8gc2NhbGUuaGVpZ2h0KCkpOwog
Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZHJhdyhjdHh0LCB0b1JlY3QsIGZyb21SZWN0LCBv
cCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKCkpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRyYXcoY3R4dCwgdG9SZWN0LCBm
cm9tUmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9u
KTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVx
dWVzdERlY29kaW5nKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAg
ICAgICAgICAgIHRvWCArPSBjdXJyZW50VGlsZVJlY3Qud2lkdGgoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MTkwLDggKzE5MCw4IEBAIHByb3RlY3RlZDoKICNpZiBQTEFURk9STShXSU4pCiAgICAgdmlydHVh
bCB2b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9w
ZXJhdG9yKSB7IH0KICNlbmRpZgotICAgIHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSA9IDA7Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdU
aWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9k
ZSk7CisgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSA9
IDA7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBG
bG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7CiAgICAg
SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRTaXplJiB0
aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgQ29tcG9zaXRl
T3BlcmF0b3IpOwogCiAgICAgLy8gU3VwcG9ydGluZyB0aWxlZCBkcmF3aW5nCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCShyZXZpc2lvbiAy
NDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgcHJpdmF0ZToKICAgICBTdWJzYW1wbGlu
Z0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbCB7IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQgfTsK
ICAgICBEZWNvZGluZ09wdGlvbnMgbV9kZWNvZGluZ09wdGlvbnM7CiAKLSAgICBJbWFnZU9yaWVu
dGF0aW9uIG1fb3JpZW50YXRpb24geyBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbiB9OworICAgIElt
YWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IEltYWdlT3JpZW50YXRpb246Ok5vbmUgfTsK
ICAgICBTZWNvbmRzIG1fZHVyYXRpb247CiAgICAgYm9vbCBtX2hhc0FscGhhIHsgdHJ1ZSB9Owog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlT3JpZW50YXRpb24uY3BwCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0x
LDYzICswLDAgQEAKLQotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbWFn
ZU9yaWVudGF0aW9uLmgiCi0KLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRl
ICJGbG9hdFNpemUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1BZmZpbmVUcmFuc2Zvcm0g
SW1hZ2VPcmllbnRhdGlvbjo6dHJhbnNmb3JtRnJvbURlZmF1bHQoY29uc3QgRmxvYXRTaXplJiBk
cmF3blNpemUpIGNvbnN0Ci17Ci0gICAgZmxvYXQgdyA9IGRyYXduU2l6ZS53aWR0aCgpOwotICAg
IGZsb2F0IGggPSBkcmF3blNpemUuaGVpZ2h0KCk7Ci0KLSAgICBzd2l0Y2ggKG1fb3JpZW50YXRp
b24pIHsKLSAgICBjYXNlIE9yaWdpblRvcExlZnQ6Ci0gICAgICAgIHJldHVybiBBZmZpbmVUcmFu
c2Zvcm0oKTsKLSAgICBjYXNlIE9yaWdpblRvcFJpZ2h0OgotICAgICAgICByZXR1cm4gQWZmaW5l
VHJhbnNmb3JtKC0xLCAgMCwgIDAsICAxLCAgdywgMCk7Ci0gICAgY2FzZSBPcmlnaW5Cb3R0b21S
aWdodDoKLSAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgtMSwgIDAsICAwLCAtMSwgIHcs
IGgpOwotICAgIGNhc2UgT3JpZ2luQm90dG9tTGVmdDoKLSAgICAgICAgcmV0dXJuIEFmZmluZVRy
YW5zZm9ybSggMSwgIDAsICAwLCAtMSwgIDAsIGgpOwotICAgIGNhc2UgT3JpZ2luTGVmdFRvcDoK
LSAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSggMCwgIDEsICAxLCAgMCwgIDAsIDApOwot
ICAgIGNhc2UgT3JpZ2luUmlnaHRUb3A6Ci0gICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0o
IDAsICAxLCAtMSwgIDAsICB3LCAwKTsKLSAgICBjYXNlIE9yaWdpblJpZ2h0Qm90dG9tOgotICAg
ICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCAwLCAtMSwgLTEsICAwLCAgdywgaCk7Ci0gICAg
Y2FzZSBPcmlnaW5MZWZ0Qm90dG9tOgotICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCAw
LCAtMSwgIDEsICAwLCAgMCwgaCk7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VPcmllbnRhdGlvbi5oCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEwNyAr
MjQsMTAyIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgSW1hZ2VPcmllbnRhdGlvbl9o
Ci0jZGVmaW5lIEltYWdlT3JpZW50YXRpb25faAorI3ByYWdtYSBvbmNlCiAKLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJGbG9hdFNp
emUuaCIKIAotY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwotY2xhc3MgRmxvYXRTaXplOworbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0vLyBUaGlzIGVudW0gaW50ZW50aW9uYWxseSBtYXRjaGVzIHRoZSBv
cmllbnRhdGlvbiB2YWx1ZXMgZnJvbSB0aGUgRVhJRiBzcGVjLgotLy8gU2VlIEpFSVRBIENQLTM0
NTEsIHBhZ2UgMTguIGh0dHA6Ly93d3cuZXhpZi5vcmcvRXhpZjItMi5QREYKLWVudW0gSW1hZ2VP
cmllbnRhdGlvbkVudW0gewotICAgIC8vICJUb3BMZWZ0IiBtZWFucyB0aGF0IHRoZSAwIHJvdyBz
dGFydHMgYXQgdGhlIFRvcCwgdGhlIDAgY29sdW1uIHN0YXJ0cyBhdCB0aGUgTGVmdC4KLSAgICBP
cmlnaW5Ub3BMZWZ0ID0gMSwgLy8gZGVmYXVsdAotICAgIE9yaWdpblRvcFJpZ2h0ID0gMiwgLy8g
bWlycm9yIGFsb25nIHktYXhpcwotICAgIE9yaWdpbkJvdHRvbVJpZ2h0ID0gMywgLy8gMTgwIGRl
Z3JlZSByb3RhdGlvbgotICAgIE9yaWdpbkJvdHRvbUxlZnQgPSA0LCAvLyBtaXJyb3IgYWxvbmcg
dGhlIHgtYXhpcwotICAgIE9yaWdpbkxlZnRUb3AgPSA1LCAvLyBtaXJyb3IgYWxvbmcgeC1heGlz
ICsgMjcwIGRlZ3JlZSBDVyByb3RhdGlvbgotICAgIE9yaWdpblJpZ2h0VG9wID0gNiwgLy8gOTAg
ZGVncmVlIENXIHJvdGF0aW9uCi0gICAgT3JpZ2luUmlnaHRCb3R0b20gPSA3LCAvLyBtaXJyb3Ig
YWxvbmcgeC1heGlzICsgOTAgZGVncmVlIENXIHJvdGF0aW9uCi0gICAgT3JpZ2luTGVmdEJvdHRv
bSA9IDgsIC8vIDI3MCBkZWdyZWUgQ1cgcm90YXRpb24KLSAgICAvLyBBbGwgb3RoZXIgdmFsdWVz
IGFyZSAicmVzZXJ2ZWQiIGFzIG9mIEVYSUYgMi4yCi0gICAgRGVmYXVsdEltYWdlT3JpZW50YXRp
b24gPSBPcmlnaW5Ub3BMZWZ0LAotfTsKK3N0cnVjdCBJbWFnZU9yaWVudGF0aW9uIHsKKyAgICBl
bnVtIE9yaWVudGF0aW9uIHsKKyAgICAgICAgRnJvbUltYWdlICAgICAgICAgPSAwLCAvLyBPcmll
bnRhdGlvbiBmcm9tIHRoZSBpbWFnZSBzaG91bGQgYmUgcmVzcGVjdGVkLgorCisgICAgICAgIC8v
IFRoaXMgcmFuZ2UgaW50ZW50aW9uYWxseSBtYXRjaGVzIHRoZSBvcmllbnRhdGlvbiB2YWx1ZXMg
ZnJvbSB0aGUgRVhJRiBzcGVjLgorICAgICAgICAvLyBTZWUgSkVJVEEgQ1AtMzQ1MSwgcGFnZSAx
OC4gaHR0cDovL3d3dy5leGlmLm9yZy9FeGlmMi0yLlBERgorICAgICAgICBPcmlnaW5Ub3BMZWZ0
ICAgICA9IDEsIC8vIGRlZmF1bHQKKyAgICAgICAgT3JpZ2luVG9wUmlnaHQgICAgPSAyLCAvLyBt
aXJyb3IgYWxvbmcgeS1heGlzCisgICAgICAgIE9yaWdpbkJvdHRvbVJpZ2h0ID0gMywgLy8gMTgw
IGRlZ3JlZSByb3RhdGlvbgorICAgICAgICBPcmlnaW5Cb3R0b21MZWZ0ICA9IDQsIC8vIG1pcnJv
ciBhbG9uZyB0aGUgeC1heGlzCisgICAgICAgIE9yaWdpbkxlZnRUb3AgICAgID0gNSwgLy8gbWly
cm9yIGFsb25nIHgtYXhpcyArIDI3MCBkZWdyZWUgQ1cgcm90YXRpb24KKyAgICAgICAgT3JpZ2lu
UmlnaHRUb3AgICAgPSA2LCAvLyA5MCBkZWdyZWUgQ1cgcm90YXRpb24KKyAgICAgICAgT3JpZ2lu
UmlnaHRCb3R0b20gPSA3LCAvLyBtaXJyb3IgYWxvbmcgeC1heGlzICsgOTAgZGVncmVlIENXIHJv
dGF0aW9uCisgICAgICAgIE9yaWdpbkxlZnRCb3R0b20gID0gOCwgLy8gMjcwIGRlZ3JlZSBDVyBy
b3RhdGlvbgorCisgICAgICAgIE5vbmUgICAgICAgICAgICAgID0gT3JpZ2luVG9wTGVmdCwKKyAg
ICAgICAgRGVmYXVsdCAgICAgICAgICAgPSBOb25lLAorCisgICAgICAgIEVYSUZGaXJzdCAgICAg
ICAgID0gT3JpZ2luVG9wTGVmdCwKKyAgICAgICAgRVhJRkxhc3QgICAgICAgICAgPSBPcmlnaW5M
ZWZ0Qm90dG9tLAorCisgICAgICAgIEZpcnN0ICAgICAgICAgICAgID0gRnJvbUltYWdlLAorICAg
ICAgICBMYXN0ICAgICAgICAgICAgICA9IEVYSUZMYXN0CisgICAgfTsKIAotZW51bSBSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbkVudW0gewotICAgIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24g
PSAwLAotICAgIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID0gMQotfTsKKyAgICBJbWFnZU9yaWVu
dGF0aW9uKCkgPSBkZWZhdWx0OwogCi1zdHJ1Y3QgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
IHsKLSAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oUmVzcGVjdEltYWdlT3JpZW50YXRp
b25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uLAotICAgICAgICBJbWFnZU9yaWVu
dGF0aW9uRW51bSBvcmllbnRhdGlvbikKLSAgICAgICAgOiBtX3Jlc3BlY3RPcmllbnRhdGlvbihz
aG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKG9y
aWVudGF0aW9uKQorICAgIEltYWdlT3JpZW50YXRpb24oT3JpZW50YXRpb24gb3JpZW50YXRpb24p
CisgICAgICAgIDogbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKICAgICB7CiAgICAgfQogCi0g
ICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkKLSAgICAgICAgOiBtX3Jlc3BlY3RPcmll
bnRhdGlvbihEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAgICAgICAsIG1fb3JpZW50
YXRpb24oRGVmYXVsdEltYWdlT3JpZW50YXRpb24pCisgICAgZXhwbGljaXQgSW1hZ2VPcmllbnRh
dGlvbihpbnQgb3JpZW50YXRpb24pCisgICAgICAgIDogSW1hZ2VPcmllbnRhdGlvbihpc1ZhbGlk
T3JpZW50YXRpb24ob3JpZW50YXRpb24pID8gc3RhdGljX2Nhc3Q8T3JpZW50YXRpb24+KG9yaWVu
dGF0aW9uKSA6IE5vbmUpCiAgICAgewogICAgIH0KIAotICAgIEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbihSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24pCi0gICAgICAgIDogbV9yZXNwZWN0T3JpZW50YXRpb24oc2hvdWxkUmVzcGVjdElt
YWdlT3JpZW50YXRpb24pCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihEZWZhdWx0SW1hZ2VPcmll
bnRhdGlvbikKKyAgICBvcGVyYXRvciBpbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KG1fb3JpZW50YXRpb24pOyB9CisKKyAgICBib29sIHVzZXNXaWR0aEFzSGVpZ2h0KCkgY29u
c3QKICAgICB7CisgICAgICAgIEFTU0VSVChpc1ZhbGlkRVhJRk9yaWVudGF0aW9uKG1fb3JpZW50
YXRpb24pKTsKKyAgICAgICAgLy8gVmFsdWVzIDUgdGhyb3VnaCA4IGFsbCBmbGlwIHRoZSB3aWR0
aC9oZWlnaHQuCisgICAgICAgIHJldHVybiBtX29yaWVudGF0aW9uID49IE9yaWdpbkxlZnRUb3A7
CiAgICAgfQogCi0gICAgdm9pZCBzZXRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbihSZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pIHsgbV9yZXNw
ZWN0T3JpZW50YXRpb24gPSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbjsgfQotICAgIFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSByZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpIHsgcmV0
dXJuIG1fcmVzcGVjdE9yaWVudGF0aW9uOyB9CisgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9y
bUZyb21EZWZhdWx0KGNvbnN0IEZsb2F0U2l6ZSYgZHJhd25TaXplKSBjb25zdAorICAgIHsKKyAg
ICAgICAgZmxvYXQgdyA9IGRyYXduU2l6ZS53aWR0aCgpOworICAgICAgICBmbG9hdCBoID0gZHJh
d25TaXplLmhlaWdodCgpOwogCi0gICAgdm9pZCBzZXRJbWFnZU9yaWVudGF0aW9uRW51bShJbWFn
ZU9yaWVudGF0aW9uRW51bSBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRp
b247IH0KLSAgICBJbWFnZU9yaWVudGF0aW9uRW51bSBpbWFnZU9yaWVudGF0aW9uKCkgeyByZXR1
cm4gbV9vcmllbnRhdGlvbjsgfQorICAgICAgICBzd2l0Y2ggKG1fb3JpZW50YXRpb24pIHsKKyAg
ICAgICAgY2FzZSBGcm9tSW1hZ2U6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKKyAgICAgICAgY2FzZSBPcmln
aW5Ub3BMZWZ0OgorICAgICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOworICAgICAg
ICBjYXNlIE9yaWdpblRvcFJpZ2h0OgorICAgICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9y
bSgtMSwgIDAsICAwLCAgMSwgIHcsIDApOworICAgICAgICBjYXNlIE9yaWdpbkJvdHRvbVJpZ2h0
OgorICAgICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgtMSwgIDAsICAwLCAtMSwgIHcs
IGgpOworICAgICAgICBjYXNlIE9yaWdpbkJvdHRvbUxlZnQ6CisgICAgICAgICAgICByZXR1cm4g
QWZmaW5lVHJhbnNmb3JtKCAxLCAgMCwgIDAsIC0xLCAgMCwgaCk7CisgICAgICAgIGNhc2UgT3Jp
Z2luTGVmdFRvcDoKKyAgICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oIDAsICAxLCAg
MSwgIDAsICAwLCAwKTsKKyAgICAgICAgY2FzZSBPcmlnaW5SaWdodFRvcDoKKyAgICAgICAgICAg
IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oIDAsICAxLCAtMSwgIDAsICB3LCAwKTsKKyAgICAgICAg
Y2FzZSBPcmlnaW5SaWdodEJvdHRvbToKKyAgICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zv
cm0oIDAsIC0xLCAtMSwgIDAsICB3LCBoKTsKKyAgICAgICAgY2FzZSBPcmlnaW5MZWZ0Qm90dG9t
OgorICAgICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSggMCwgLTEsICAxLCAgMCwgIDAs
IGgpOworICAgICAgICB9CiAKLSAgICBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gbV9yZXNw
ZWN0T3JpZW50YXRpb247Ci0gICAgSW1hZ2VPcmllbnRhdGlvbkVudW0gbV9vcmllbnRhdGlvbjsK
LX07Ci0KLWNsYXNzIEltYWdlT3JpZW50YXRpb24gewotcHVibGljOgotICAgIEltYWdlT3JpZW50
YXRpb24oKQotICAgICAgICA6IG1fb3JpZW50YXRpb24oRGVmYXVsdEltYWdlT3JpZW50YXRpb24p
Ci0gICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEFm
ZmluZVRyYW5zZm9ybSgpOwogICAgIH0KIAotICAgIGV4cGxpY2l0IEltYWdlT3JpZW50YXRpb24o
SW1hZ2VPcmllbnRhdGlvbkVudW0gb3JpZW50YXRpb24pCi0gICAgICAgIDogbV9vcmllbnRhdGlv
bihvcmllbnRhdGlvbikKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRVhJRk9yaWVudGF0aW9uKGlu
dCBvcmllbnRhdGlvbikKICAgICB7CisgICAgICAgIHJldHVybiBvcmllbnRhdGlvbiA+PSBzdGF0
aWNfY2FzdDxpbnQ+KEVYSUZGaXJzdCkgJiYgb3JpZW50YXRpb24gPD0gc3RhdGljX2Nhc3Q8aW50
PihFWElGTGFzdCk7CiAgICAgfQogCi0gICAgYm9vbCB1c2VzV2lkdGhBc0hlaWdodCgpIGNvbnN0
Citwcml2YXRlOgorICAgIHN0YXRpYyBib29sIGlzVmFsaWRPcmllbnRhdGlvbihpbnQgb3JpZW50
YXRpb24pCiAgICAgewotICAgICAgICAvLyBWYWx1ZXMgNSB0aHJvdWdoIDggYWxsIGZsaXAgdGhl
IHdpZHRoL2hlaWdodC4KLSAgICAgICAgcmV0dXJuIG1fb3JpZW50YXRpb24gPj0gT3JpZ2luTGVm
dFRvcDsKKyAgICAgICAgcmV0dXJuIG9yaWVudGF0aW9uID49IHN0YXRpY19jYXN0PGludD4oRmly
c3QpICYmIG9yaWVudGF0aW9uIDw9IHN0YXRpY19jYXN0PGludD4oTGFzdCk7CiAgICAgfQogCi0g
ICAgLy8gSW1hZ2VPcmllbnRhdGlvbkVudW0gY3VycmVudGx5IG1hdGNoZXMgRVhJRiB2YWx1ZXMs
IGhvd2V2ZXIgY29kZSBvdXRzaWRlCi0gICAgLy8gdGhpcyBmdW5jdGlvbiBzaG91bGQgbmV2ZXIg
YXNzdW1lIHRoYXQuCi0gICAgc3RhdGljIEltYWdlT3JpZW50YXRpb24gZnJvbUVYSUZWYWx1ZShp
bnQgZXhpZlZhbHVlKQotICAgIHsKLSAgICAgICAgLy8gVmFsdWVzIGRpcmVjdCBmcm9tIGltYWdl
cyBtYXkgYmUgaW52YWxpZCwgaW4gd2hpY2ggY2FzZSB3ZSB1c2UgdGhlIGRlZmF1bHQuCi0gICAg
ICAgIGlmIChleGlmVmFsdWUgPCBPcmlnaW5Ub3BMZWZ0IHx8IGV4aWZWYWx1ZSA+IE9yaWdpbkxl
ZnRCb3R0b20pCi0gICAgICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbigpOwotICAgICAg
ICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbihzdGF0aWNfY2FzdDxJbWFnZU9yaWVudGF0aW9uRW51
bT4oZXhpZlZhbHVlKSk7Ci0gICAgfQotCi0gICAgLy8gVGhpcyB0cmFuc2Zvcm0gY2FuIGJlIHVz
ZWQgZm9yIGRyYXdpbmcgYW4gaW1hZ2UgYWNjb3JkaW5nIHRvIHRoZSBvcmllbnRhdGlvbi4KLSAg
ICAvLyBJdCBzaG91bGQgYmUgdXNlZCBpbiBhIHJpZ2h0LWhhbmRlZCBjb29yZGluYXRlIHN5c3Rl
bS4KLSAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtRnJvbURlZmF1bHQoY29uc3QgRmxvYXRT
aXplJiBkcmF3blNpemUpIGNvbnN0OwotCi0gICAgaW5saW5lIG9wZXJhdG9yIEltYWdlT3JpZW50
YXRpb25FbnVtKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQotICAgIAotICAgIGlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIG90aGVyLm1fb3JpZW50YXRpb24gPT0gbV9vcmllbnRhdGlvbjsgfQotICAgIGlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRklYTUU6
IFRoaXMgb25seSBuZWVkcyB0byBiZSBvbmUgYnl0ZS4KLSAgICBJbWFnZU9yaWVudGF0aW9uRW51
bSBtX29yaWVudGF0aW9uOworICAgIE9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24geyBOb25lIH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBJbWFnZU9yaWVudGF0
aW9uX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjg5LDcgKzY4OSw3
IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpCiAgICAgdHMuZHVtcFBy
b3BlcnR5KCJzb2xpZC1jb2xvciIsIHNpbmdsZVBpeGVsU29saWRDb2xvcigpKTsKIAogICAgIElt
YWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBmcmFtZU9yaWVudGF0aW9uQXRJbmRleCgwKTsK
LSAgICBpZiAob3JpZW50YXRpb24gIT0gT3JpZ2luVG9wTGVmdCkKKyAgICBpZiAob3JpZW50YXRp
b24gIT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJv
cmllbnRhdGlvbiIsIG9yaWVudGF0aW9uKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1h
Z2UuY3BwCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3
ICs0MCw3IEBAIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6TmFtZWRJbWFnZUdlbmUKICAgICBz
ZXRDb250YWluZXJTaXplKHNpemUpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgTmFtZWRJbWFnZUdl
bmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBOYW1lZEltYWdlR2VuZXJhdGVk
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bikKIHsKICNpZiBVU0UoTkVXX1RIRU1FKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VH
ZW5lcmF0ZWRJbWFnZS5oCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSW1hZ2VE
cmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUs
IERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKICAgICB2
b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIG92ZXJyaWRlOwogCiAgICAgTmFt
ZWRJbWFnZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBjb25zdCBGbG9hdFNpemUmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAko
cmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0
aXZlSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBJbnRTaXplIG5hdGl2
ZUltYWdlU2l6ZShjb25zdCBOYXRpdmVJbWFnCiBib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29u
c3QgTmF0aXZlSW1hZ2VQdHImKTsKIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENv
bG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIGNvbnN0IEltYWdlT3JpZW50YXRpb24mKTsKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb24pOwogdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJik7CiAgICAgCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0JKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2Rl
ckFWRk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTUzMSw3ICs1MzEsNyBAQCBib29sIEltYWdl
RGVjb2RlckFWRk9iakM6OmZyYW1lSXNDb21wbGV0CiAKIEltYWdlT3JpZW50YXRpb24gSW1hZ2VE
ZWNvZGVyQVZGT2JqQzo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdAogewot
ICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7CisgICAgcmV0dXJuIEltYWdlT3JpZW50YXRp
b246Ok5vbmU7CiB9CiAKIFNlY29uZHMgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6ZnJhbWVEdXJhdGlv
bkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCShy
ZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9DYWlyb09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzksNyArMTc5LDcgQEAg
c3RhdGljIHZvaWQgZHJhd1NoYWRvd0xheWVyQnVmZmVyKFBsYXRmbwogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCkpIHsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFj
ZS5nZXQoKSwgRmxvYXRSZWN0KHJvdW5kZWRJbnRQb2ludChsYXllck9yaWdpbiksIGxheWVyU2l6
ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGxheWVyU2l6ZSksIHNoYWRvd1N0YXRlLmdsb2Jh
bENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbigp
LAorICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgp
LCBGbG9hdFJlY3Qocm91bmRlZEludFBvaW50KGxheWVyT3JpZ2luKSwgbGF5ZXJTaXplKSwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgbGF5ZXJTaXplKSwgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lLAog
ICAgICAgICAgICAgSW50ZXJwb2xhdGlvbkRlZmF1bHQsIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhh
LCBTaGFkb3dTdGF0ZSgpKTsKICAgICB9CiB9CkBAIC0xOTIsNyArMTkyLDcgQEAgc3RhdGljIHZv
aWQgZHJhd1NoYWRvd0ltYWdlKFBsYXRmb3JtQ29udAogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpIHsK
LSAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGU6Ok5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbigpLAorICAgICAgICBkcmF3TmF0aXZl
SW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwg
c2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBJ
bWFnZU9yaWVudGF0aW9uOjpOb25lLAogICAgICAgICAgICAgSW50ZXJwb2xhdGlvbkRlZmF1bHQs
IHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKICAgICB9CiB9CkBAIC04
ODksNyArODg5LDcgQEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcgog
ICAgICAgICBDYWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRl
eHQsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUpOwogCiAgICAgRmxvYXRSZWN0IGRzdCA9
IGRlc3RSZWN0OwotICAgIGlmIChvcmllbnRhdGlvbiAhPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlv
bikgeworICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKSB7CiAg
ICAgICAgIC8vIEltYWdlT3JpZW50YXRpb24gZXhwZWN0cyB0aGUgb3JpZ2luIHRvIGJlIGF0ICgw
LCAwKS4KICAgICAgICAgQ2Fpcm86OnRyYW5zbGF0ZShwbGF0Zm9ybUNvbnRleHQsIGRzdC54KCks
IGRzdC55KCkpOwogICAgICAgICBkc3Quc2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzU0LDcgKzM1NCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3ND
b250ZXh0JiAKIHsKICAgICBCYWNraW5nU3RvcmVDb3B5IGNvcHlNb2RlID0gJmRlc3RpbmF0aW9u
Q29udGV4dCA9PSAmY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2lu
Z1N0b3JlOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBjb3B5SW1hZ2UoY29weU1vZGUpOwot
ICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBkZXN0UmVjdCwgc3JjUmVj
dCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpKTsKKyAgICBkZXN0aW5hdGlv
bkNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRp
bmdPcHRpb25zKG9wLCBibGVuZE1vZGUsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdl
T3JpZW50YXRpb246OkRlZmF1bHQpKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05h
dGl2ZUltYWdlQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCShyZXZpc2lvbiAyNDg1MzApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBDb2xvciBuYXRpdmVJbWFnZVNp
bmdsZVBpeGVsU29saWRDb2xvcihjCiAgICAgcmV0dXJuIGNvbG9yRnJvbVByZW11bHRpcGxpZWRB
UkdCKCpwaXhlbCk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIGltYWdlU2l6
ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1v
ZGUsIGNvbnN0IEltYWdlT3JpZW50YXRpb24mIG9yaWVudGF0aW9uKQordm9pZCBkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikK
IHsKICAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVj
dCwgc3JjUmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRp
dmVJbWFnZShjbwogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCBhZGp1c3RlZERl
c3RSZWN0LngoKSwgYWRqdXN0ZWREZXN0UmVjdC55KCkpOwogICAgIGFkanVzdGVkRGVzdFJlY3Qu
c2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKIAotICAgIGlmIChvcmllbnRhdGlvbiAhPSBEZWZh
dWx0SW1hZ2VPcmllbnRhdGlvbikgeworICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbWFnZU9yaWVu
dGF0aW9uOjpOb25lKSB7CiAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBvcmll
bnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3RlZERlc3RSZWN0LnNpemUoKSkpOwog
ICAgICAgICBpZiAob3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSkgewogICAgICAgICAg
ICAgLy8gVGhlIGRlc3RpbmF0aW9uIHJlY3Qgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5kIGhlaWdo
dCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5j
cHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDExICsxNTYsMTEg
QEAgc3RhdGljIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25Gcm9tUAogICAgIEFTU0VSVChp
bWFnZVByb3BlcnRpZXMpOwogICAgIENGTnVtYmVyUmVmIG9yaWVudGF0aW9uUHJvcGVydHkgPSAo
Q0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaW1hZ2VQcm9wZXJ0aWVzLCBrQ0dJbWFn
ZVByb3BlcnR5T3JpZW50YXRpb24pOwogICAgIGlmICghb3JpZW50YXRpb25Qcm9wZXJ0eSkKLSAg
ICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb24oKTsKKyAgICAgICAgcmV0dXJuIEltYWdlT3Jp
ZW50YXRpb246Ok5vbmU7CiAgICAgCiAgICAgaW50IGV4aWZWYWx1ZTsKICAgICBDRk51bWJlckdl
dFZhbHVlKG9yaWVudGF0aW9uUHJvcGVydHksIGtDRk51bWJlckludFR5cGUsICZleGlmVmFsdWUp
OwotICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpmcm9tRVhJRlZhbHVlKGV4aWZWYWx1ZSk7
CisgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246OmlzVmFsaWRFWElGT3JpZW50YXRpb24oZXhp
ZlZhbHVlKSA/IEltYWdlT3JpZW50YXRpb24oZXhpZlZhbHVlKSA6IEltYWdlT3JpZW50YXRpb246
Ok5vbmU7CiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCkBAIC0zNTAsNyArMzUwLDcgQEAgSW1h
Z2VPcmllbnRhdGlvbiBJbWFnZURlY29kZXJDRzo6ZnJhbWVPcgogewogICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJv
cGVydGllc0F0SW5kZXgobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBpbmRleCwgaW1hZ2VTb3VyY2VP
cHRpb25zKCkuZ2V0KCkpKTsKICAgICBpZiAoIXByb3BlcnRpZXMpCi0gICAgICAgIHJldHVybiBJ
bWFnZU9yaWVudGF0aW9uKCk7CisgICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpOb25l
OwogICAgIAogICAgIHJldHVybiBvcmllbnRhdGlvbkZyb21Qcm9wZXJ0aWVzKHByb3BlcnRpZXMu
Z2V0KCkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0
aXZlSW1hZ2VDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02OSw3ICs2OSw3IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENv
bG9yKGMKICAgICByZXR1cm4gQ29sb3IocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxb
MV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10p
OwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIGNvbnN0IEltYWdlT3JpZW50YXRpb24mIG9yaWVu
dGF0aW9uKQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KQogewogICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQg
aXMgc21hbGxlciB0aGFuIHNpemUoKS4KICAgICBJbnRTaXplIHN1YnNhbXBsZWRJbWFnZVNpemUg
PSBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAJKHJldmlzaW9u
IDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBQREZE
b2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFnZQogICAgIGRlY29kZWRTaXplQ2hhbmdlZChp
bnRlcm5hbFNpemUudW5jbGFtcGVkQXJlYSgpICogNCk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBQ
REZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKQorSW1hZ2VEcmF3UmVzdWx0IFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uKQogewogICAgIGlmICghbV9kb2N1bWVudCB8fCAhbV9oYXNQYWdlKQog
ICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuaAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGlu
dHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5z
aWNSYXRpbykgb3ZlcnJpZGU7CiAgICAgRmxvYXRTaXplIHNpemUoKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikg
b3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3Zl
cnJpZGU7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2
YXRpdmUuCiAgICAgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDExLDExICsxNDExLDExIEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGUKICAgICAgICAgZ3N0X21lc3NhZ2VfcGFyc2Vf
dGFnKG1lc3NhZ2UsICZ0YWdzKTsKICAgICAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5n
KHRhZ3MsIEdTVF9UQUdfSU1BR0VfT1JJRU5UQVRJT04sICZ0YWcub3V0UHRyKCkpKSB7CiAgICAg
ICAgICAgICBpZiAoIWdfc3RyY21wMCh0YWcuZ2V0KCksICJyb3RhdGUtOTAiKSkKLSAgICAgICAg
ICAgICAgICBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24oT3JpZ2lu
UmlnaHRUb3ApKTsKKyAgICAgICAgICAgICAgICBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKElt
YWdlT3JpZW50YXRpb246Ok9yaWdpblJpZ2h0VG9wKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFn
X3N0cmNtcDAodGFnLmdldCgpLCAicm90YXRlLTE4MCIpKQotICAgICAgICAgICAgICAgIHNldFZp
ZGVvU291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbihPcmlnaW5Cb3R0b21SaWdodCkp
OworICAgICAgICAgICAgICAgIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRh
dGlvbjo6T3JpZ2luQm90dG9tUmlnaHQpOwogICAgICAgICAgICAgZWxzZSBpZiAoIWdfc3RyY21w
MCh0YWcuZ2V0KCksICJyb3RhdGUtMjcwIikpCi0gICAgICAgICAgICAgICAgc2V0VmlkZW9Tb3Vy
Y2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uKE9yaWdpbkxlZnRCb3R0b20pKTsKKyAgICAg
ICAgICAgICAgICBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb246Ok9y
aWdpbkxlZnRCb3R0b20pOwogICAgICAgICB9CiAgICAgICAgIGdzdF90YWdfbGlzdF91bnJlZih0
YWdzKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4Nyw3ICs4ODcsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhCiAKICAgICBJbWFnZVBhaW50aW5n
T3B0aW9ucyBwYWludGluZ09wdGlvbnMoQ29tcG9zaXRlQ29weSk7CiAgICAgaWYgKG1fcmVuZGVy
aW5nQ2FuQmVBY2NlbGVyYXRlZCkKLSAgICAgICAgcGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRp
b25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShtX3ZpZGVvU291cmNlT3JpZW50
YXRpb24pOworICAgICAgICBwYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbiA9IG1fdmlkZW9T
b3VyY2VPcmllbnRhdGlvbjsKIAogICAgIGF1dG8gZ3N0SW1hZ2UgPSBJbWFnZUdTdHJlYW1lcjo6
Y3JlYXRlSW1hZ2UobV9zYW1wbGUuZ2V0KCkpOwogICAgIGlmICghZ3N0SW1hZ2UpCkBAIC05NjUs
NyArOTY1LDcgQEAgTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbQogfQog
I2VuZGlmIC8vIFVTRShHU1RSRUFNRVJfR0wpCiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZTo6c2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihjb25zdCBJbWFnZU9yaWVudGF0
aW9uJiBvcmllbnRhdGlvbikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
c2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQog
ewogICAgIGlmIChtX3ZpZGVvU291cmNlT3JpZW50YXRpb24gPT0gb3JpZW50YXRpb24pCiAgICAg
ICAgIHJldHVybjsKQEAgLTk4MCwxNiArOTgwLDE2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZTo6c2UKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
dXBkYXRlVGV4dHVyZU1hcHBlckZsYWdzKCkKIHsKICAgICBzd2l0Y2ggKG1fdmlkZW9Tb3VyY2VP
cmllbnRhdGlvbikgewotICAgIGNhc2UgRGVmYXVsdEltYWdlT3JpZW50YXRpb246CisgICAgY2Fz
ZSBJbWFnZU9yaWVudGF0aW9uOjpOb25lOgogICAgICAgICBtX3RleHR1cmVNYXBwZXJGbGFncyA9
IDA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3JpZ2luUmlnaHRUb3A6CisgICAgY2FzZSBJ
bWFnZU9yaWVudGF0aW9uOjpPcmlnaW5SaWdodFRvcDoKICAgICAgICAgbV90ZXh0dXJlTWFwcGVy
RmxhZ3MgPSBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZFJvdGF0ZVRleHR1cmU5MDsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBPcmlnaW5Cb3R0b21SaWdodDoKKyAgICBjYXNlIEltYWdlT3JpZW50
YXRpb246Ok9yaWdpbkJvdHRvbVJpZ2h0OgogICAgICAgICBtX3RleHR1cmVNYXBwZXJGbGFncyA9
IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkUm90YXRlVGV4dHVyZTE4MDsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBPcmlnaW5MZWZ0Qm90dG9tOgorICAgIGNhc2UgSW1hZ2VPcmllbnRhdGlvbjo6
T3JpZ2luTGVmdEJvdHRvbToKICAgICAgICAgbV90ZXh0dXJlTWFwcGVyRmxhZ3MgPSBUZXh0dXJl
TWFwcGVyR0w6OlNob3VsZFJvdGF0ZVRleHR1cmUyNzA7CiAgICAgICAgIGJyZWFrOwogICAgIGRl
ZmF1bHQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmgJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE4NSw3ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgTmF0aXZlSW1hZ2VQ
dHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2
b2lkIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYpOwor
ICAgIHZvaWQgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uKTsKICAg
ICBHc3RFbGVtZW50KiBwaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGlwZWxpbmUuZ2V0KCk7
IH0KIAogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVTeW5jTWVzc2FnZShHc3RNZXNzYWdlKik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0
dXJlQ29waWVyR1N0cmVhbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcAko
cmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk3LDE3ICs5NywxNyBAQCB2b2lkIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6dXBkYXRl
CiAgICAgbV90ZXh0dXJlU3BhY2VNYXRyaXgubWFrZUlkZW50aXR5KCk7CiAKICAgICBzd2l0Y2gg
KG1fb3JpZW50YXRpb24pIHsKLSAgICBjYXNlIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOgorICAg
IGNhc2UgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZToKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBP
cmlnaW5SaWdodFRvcDoKKyAgICBjYXNlIEltYWdlT3JpZW50YXRpb246Ok9yaWdpblJpZ2h0VG9w
OgogICAgICAgICBtX3RleHR1cmVTcGFjZU1hdHJpeC5yb3RhdGUoLTkwKTsKICAgICAgICAgbV90
ZXh0dXJlU3BhY2VNYXRyaXgudHJhbnNsYXRlKC0xLCAwKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBPcmlnaW5Cb3R0b21SaWdodDoKKyAgICBjYXNlIEltYWdlT3JpZW50YXRpb246Ok9yaWdp
bkJvdHRvbVJpZ2h0OgogICAgICAgICBtX3RleHR1cmVTcGFjZU1hdHJpeC5yb3RhdGUoMTgwKTsK
ICAgICAgICAgbV90ZXh0dXJlU3BhY2VNYXRyaXgudHJhbnNsYXRlKC0xLCAtMSk7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgT3JpZ2luTGVmdEJvdHRvbToKKyAgICBjYXNlIEltYWdlT3JpZW50
YXRpb246Ok9yaWdpbkxlZnRCb3R0b206CiAgICAgICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4LnJv
dGF0ZSgtMjcwKTsKICAgICAgICAgbV90ZXh0dXJlU3BhY2VNYXRyaXgudHJhbnNsYXRlKDAsIC0x
KTsKICAgICAgICAgYnJlYWs7CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBWaWRlb1RleHR1cmVD
b3BpZXJHU3RyZWFtZXI6OnVwZGF0ZQogICAgICAgICAtMSwgMSwgLShmYXJWYWx1ZSArIG5lYXJW
YWx1ZSkgLyAoZmFyVmFsdWUgLSBuZWFyVmFsdWUpLCAxKTsKIH0KIAotYm9vbCBWaWRlb1RleHR1
cmVDb3BpZXJHU3RyZWFtZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHTHVp
bnQgaW5wdXRUZXh0dXJlLCBJbnRTaXplJiBmcmFtZVNpemUsIEdMdWludCBvdXRwdXRUZXh0dXJl
LCBHTGVudW0gb3V0cHV0VGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0
LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgYm9vbCBmbGlwWSwgSW1hZ2VPcmllbnRhdGlv
biYgc291cmNlT3JpZW50YXRpb24pCitib29sIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6
Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdMdWludCBpbnB1dFRleHR1cmUsIElu
dFNpemUmIGZyYW1lU2l6ZSwgR0x1aW50IG91dHB1dFRleHR1cmUsIEdMZW51bSBvdXRwdXRUYXJn
ZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMZW51bSBmb3JtYXQsIEdM
ZW51bSB0eXBlLCBib29sIGZsaXBZLCBJbWFnZU9yaWVudGF0aW9uIHNvdXJjZU9yaWVudGF0aW9u
KQogewogICAgIGlmICghbV9zaGFkZXJQcm9ncmFtIHx8ICFtX2ZyYW1lYnVmZmVyIHx8ICFtX3Zi
byB8fCBmcmFtZVNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29w
aWVyR1N0cmVhbWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oCShyZXZpc2lvbiAy
NDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlk
ZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcg
QEAgcHVibGljOgogICAgIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcihDb2xvckNvbnZlcnNp
b24pOwogICAgIH5WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIoKTsKIAotICAgIGJvb2wgY29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdMdWludCBpbnB1dFRleHR1cmUsIEludFNp
emUmIGZyYW1lU2l6ZSwgR0x1aW50IG91dHB1dFRleHR1cmUsIEdMZW51bSBvdXRwdXRUYXJnZXQs
IEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMZW51bSBmb3JtYXQsIEdMZW51
bSB0eXBlLCBib29sIGZsaXBZLCBJbWFnZU9yaWVudGF0aW9uJiBzb3VyY2VPcmllbnRhdGlvbik7
CisgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR0x1aW50IGlucHV0
VGV4dHVyZSwgSW50U2l6ZSYgZnJhbWVTaXplLCBHTHVpbnQgb3V0cHV0VGV4dHVyZSwgR0xlbnVt
IG91dHB1dFRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xlbnVt
IGZvcm1hdCwgR0xlbnVtIHR5cGUsIGJvb2wgZmxpcFksIEltYWdlT3JpZW50YXRpb24gc291cmNl
T3JpZW50YXRpb24pOwogICAgIHZvaWQgdXBkYXRlQ29sb3JDb252ZXJzaW9uTWF0cml4KENvbG9y
Q29udmVyc2lvbik7CiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlU3BhY2VNYXRyaXgoKTsKICAgICB2
b2lkIHVwZGF0ZVRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25z
LmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxMyw3ICs4
MTMsNyBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlCiAgICAgY29u
dGV4dC0+U2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7CiAgICAgYWRqdXN0ZWREZXN0UmVjdC5zZXRM
b2NhdGlvbihGbG9hdFBvaW50KCkpOwogCi0gICAgaWYgKG9yaWVudGF0aW9uICE9IERlZmF1bHRJ
bWFnZU9yaWVudGF0aW9uKSB7CisgICAgaWYgKG9yaWVudGF0aW9uICE9IEltYWdlT3JpZW50YXRp
b246Ok5vbmUpIHsKICAgICAgICAgY29uY2F0Q1RNKHBsYXRmb3JtQ29udGV4dCwgb3JpZW50YXRp
b24udHJhbnNmb3JtRnJvbURlZmF1bHQoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkpKTsKICAgICAg
ICAgaWYgKG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKICAgICAgICAgICAgIC8v
IFRoZSBkZXN0aW5hdGlvbiByZWN0IHdpbGwgaGF2ZSBpdCdzIHdpZHRoIGFuZCBoZWlnaHQgYWxy
ZWFkeSByZXZlcnNlZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9mCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCShyZXZpc2lv
biAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VD
R1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgYm9vbCBCaXRtYXBJbWFn
ZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTQogICAgIGlmIChzaXplKQogICAgICAgICBkcmF3RnJh
bWVNYXRjaGluZ1NvdXJjZVNpemUoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJt
V2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCAqc2l6ZSwgQ29tcG9zaXRlQ29weSk7CiAgICAgZWxz
ZQotICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRo
LCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0
aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGU6Ok5vcm1h
bCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KCkpOworICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdp
ZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53
aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGU6Ok5v
cm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVs
dCk7CiAKICAgICAvLyBEbyBjbGVhbnVwCiAgICAgQ0dDb250ZXh0UmVsZWFzZShjZ0NvbnRleHQp
OwpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1Nv
dXJjCiAgICAgICAgIGlmIChpbWFnZSAmJiBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSA9PSBzdGF0
aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIENHSW1hZ2VHZXRXaWR0aChpbWFn
ZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLndpZHRoKCkpKSB7CiAgICAgICAgICAg
ICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAgICAgICAgICBtX2N1
cnJlbnRGcmFtZSA9IGk7Ci0gICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVj
dCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCBjb21wb3Np
dGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVj
dCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQo
KSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJv
bm91cywgSW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVsdCk7CiAgICAgICAgICAgICBtX2N1cnJlbnRG
cmFtZSA9IGN1cnJlbnRGcmFtZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
MTAzLDcgKzEwMyw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmMK
IAogICAgIC8vIE5vIGltYWdlIG9mIHRoZSBjb3JyZWN0IHNpemUgd2FzIGZvdW5kLCBmYWxsYmFj
ayB0byBkcmF3aW5nIHRoZSBjdXJyZW50IGZyYW1lCiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9
IEJpdG1hcEltYWdlOjpzaXplKCk7Ci0gICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3Qo
MC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIGNvbXBv
c2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxv
YXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkp
LCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25v
dXMsIEltYWdlT3JpZW50YXRpb246OkRlZmF1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWly
b1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ2Fpcm9XaW4uY3BwCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgxLDcgKzgxLDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklU
TQogICAgIGlmIChzaXplKQogICAgICAgICBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoZ2Ms
IEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQp
LCAqc2l6ZSwgQ29tcG9zaXRlQ29weSk7CiAgICAgZWxzZQotICAgICAgICBkcmF3KGdjLCBGbG9h
dFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxv
YXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkp
LCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJv
bm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICBkcmF3KGdjLCBG
bG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwg
RmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0
KCkpLCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVsdCk7CiAKICAgICAvLyBEbyBjbGVhbnVw
CiAgICAgY2Fpcm9fZGVzdHJveSh0YXJnZXRSZWYpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQg
Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmMKICAgICAgICAgaWYgKGNhaXJvX2lt
YWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1
cmZhY2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewog
ICAgICAgICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAg
ICAgICAgbV9jdXJyZW50RnJhbWUgPSBpOwotICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0
LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgp
KSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9u
b3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICBkcmF3KGN0
eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1Np
emUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246OkRlZmF1bHQpOwogICAgICAgICAgICAg
bV9jdXJyZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRj
aGluZ1NvdXJjCiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29ycmVjdCBzaXplIHdhcyBmb3Vu
ZCwgZmFsbGJhY2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFtZQogICAgIEZsb2F0U2l6ZSBp
bWFnZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwotICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwg
RmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0
KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICBkcmF3KGN0eHQsIGRz
dFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXpl
LmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpEZWZhdWx0KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCShyZXZpc2lvbiAy
NDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksMjAgKzE1OSwyMCBAQCBib29s
IEltYWdlRGVjb2RlckRpcmVjdDJEOjpmcmFtZUlzQ29tcGxlCiBJbWFnZU9yaWVudGF0aW9uIElt
YWdlRGVjb2RlckRpcmVjdDJEOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX25hdGl2ZURlY29kZXIpCi0gICAgICAgIHJldHVybiBJbWFn
ZU9yaWVudGF0aW9uKCk7CisgICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpOb25lOwog
CiAgICAgQ09NUHRyPElXSUNCaXRtYXBGcmFtZURlY29kZT4gZnJhbWU7CiAgICAgSFJFU1VMVCBo
ciA9IG1fbmF0aXZlRGVjb2Rlci0+R2V0RnJhbWUoaW5kZXgsICZmcmFtZSk7CiAgICAgaWYgKCFT
VUNDRUVERUQoaHIpKQotICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbigpOworICAgICAg
ICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZTsKIAogICAgIENPTVB0cjxJV0lDTWV0YWRh
dGFRdWVyeVJlYWRlcj4gbWV0YWRhdGE7CiAgICAgaHIgPSBmcmFtZS0+R2V0TWV0YWRhdGFRdWVy
eVJlYWRlcigmbWV0YWRhdGEpOwogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKLSAgICAgICAgcmV0
dXJuIEltYWdlT3JpZW50YXRpb24oKTsKKyAgICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246
Ok5vbmU7CiAKICAgICAvLyBGSVhNRTogSWRlbnRpZnkgaW1hZ2UgdHlwZSwgYW5kIGFzayBwcm9w
ZXIgb3JpZW50YXRpb24uCi0gICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb24oKTsKKyAgICByZXR1
cm4gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZTsKIH0KIAogU2Vjb25kcyBJbWFnZURlY29kZXJEaXJl
Y3QyRDo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGlyZWN0MkQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURpcmVj
dDJELmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3
IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmMKICAgICAgICAgaWYg
KGltYWdlICYmIGNsYW1wVG88aW50PihpbWFnZVNpemUuaGVpZ2h0KCkpID09IHN0YXRpY19jYXN0
PGludD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgY2xhbXBUbzxpbnQ+KGltYWdlU2l6ZS53aWR0aCgp
KSA9PSBzdGF0aWNfY2FzdDxpbnQ+KHNyY1NpemUud2lkdGgoKSkpIHsKICAgICAgICAgICAgIHNp
emVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICAgICAgICAgIG1fY3VycmVu
dEZyYW1lID0gaTsKLSAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9w
LCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBG
bG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwg
Y29tcG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3Vz
LCBJbWFnZU9yaWVudGF0aW9uOjpEZWZhdWx0KTsKICAgICAgICAgICAgIG1fY3VycmVudEZyYW1l
ID0gY3VycmVudEZyYW1lOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC04OSw3
ICs4OSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmMKIAogICAg
IC8vIE5vIGltYWdlIG9mIHRoZSBjb3JyZWN0IHNpemUgd2FzIGZvdW5kLCBmYWxsYmFjayB0byBk
cmF3aW5nIHRoZSBjdXJyZW50IGZyYW1lCiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IEJpdG1h
cEltYWdlOjpzaXplKCk7Ci0gICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwg
MC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9w
LCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0
KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBjb21w
b3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIElt
YWdlT3JpZW50YXRpb246OkRlZmF1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJl
Y3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBp
eGVsU29saWRDb2xvcihjCiAgICAgcmV0dXJuIENvbG9yKCk7CiB9CiAKLXZvaWQgZHJhd05hdGl2
ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBC
bGVuZE1vZGUgYmxlbmRNb2RlLCBjb25zdCBJbWFnZU9yaWVudGF0aW9uJiBvcmllbnRhdGlvbikK
K3ZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uKQogewogICAgIGF1dG8gcGxhdGZvcm1Db250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNv
bnRleHQoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFn
ZUd0ay5jcHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9EcmFnSW1hZ2VHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIERyYWdJ
bWFnZVJlZiBkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24KICAgICByZXR1cm4gaW1hZ2U7CiB9
CiAKLURyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdl
RnJvbUltYWdlKEltYWdlKiBpbWFnZSwgSW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICByZXR1cm4g
aW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2Nh
bGFibGVJbWFnZURlY29kZXJGcmFtZS5oCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCYWNraW5nU3RvcmU+IG1fYmFja2luZ1N0b3JlOwogICAgIERpc3Bvc2FsTWV0
aG9kIG1fZGlzcG9zYWxNZXRob2QgeyBEaXNwb3NhbE1ldGhvZDo6VW5zcGVjaWZpZWQgfTsKIAot
ICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IERlZmF1bHRJbWFnZU9yaWVudGF0
aW9uIH07CisgICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uIHsgSW1hZ2VPcmllbnRh
dGlvbjo6Tm9uZSB9OwogICAgIFNlY29uZHMgbV9kdXJhdGlvbjsKICAgICBib29sIG1faGFzQWxw
aGEgeyB0cnVlIH07CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCShy
ZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODgsMTIgKzE4
OCwxNCBAQCBzdGF0aWMgSW1hZ2VPcmllbnRhdGlvbiByZWFkSW1hZ2VPcmllbnRhCiAgICAgICAg
ICAgICB1bnNpZ25lZCB0YWcgPSByZWFkVWludDE2KGlmZCwgaXNCaWdFbmRpYW4pOwogICAgICAg
ICAgICAgdW5zaWduZWQgdHlwZSA9IHJlYWRVaW50MTYoaWZkICsgMiwgaXNCaWdFbmRpYW4pOwog
ICAgICAgICAgICAgdW5zaWduZWQgY291bnQgPSByZWFkVWludDMyKGlmZCArIDQsIGlzQmlnRW5k
aWFuKTsKLSAgICAgICAgICAgIGlmICh0YWcgPT0gb3JpZW50YXRpb25UYWcgJiYgdHlwZSA9PSBz
aG9ydFR5cGUgJiYgY291bnQgPT0gMSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSW1hZ2VPcmll
bnRhdGlvbjo6ZnJvbUVYSUZWYWx1ZShyZWFkVWludDE2KGlmZCArIDgsIGlzQmlnRW5kaWFuKSk7
CisgICAgICAgICAgICBpZiAodGFnID09IG9yaWVudGF0aW9uVGFnICYmIHR5cGUgPT0gc2hvcnRU
eXBlICYmIGNvdW50ID09IDEpIHsKKyAgICAgICAgICAgICAgICBpbnQgZXhpZlZhbHVlID0gcmVh
ZFVpbnQxNihpZmQgKyA4LCBpc0JpZ0VuZGlhbik7CisgICAgICAgICAgICAgICAgcmV0dXJuIElt
YWdlT3JpZW50YXRpb246OmlzVmFsaWRFWElGT3JpZW50YXRpb24oZXhpZlZhbHVlKSA/IEltYWdl
T3JpZW50YXRpb24oZXhpZlZhbHVlKSA6IEltYWdlT3JpZW50YXRpb246Ok5vbmU7CisgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbigp
OworICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpOb25lOwogfQogCiBjbGFzcyBKUEVHSW1h
Z2VSZWFkZXIgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlP
Uy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdl
SU9TLm1tCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
RHJhZ0ltYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIERyYWdJbWFn
ZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYKIAogc3RhdGljIGZsb2F0IG1heGltdW1B
bGxvd2VkRHJhZ0ltYWdlQXJlYSA9IDYwMCAqIDEwMjQ7CiAKLURyYWdJbWFnZVJlZiBjcmVhdGVE
cmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24gb3JpZW50YXRpb24pCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKElt
YWdlKiBpbWFnZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBpZiAoIWlt
YWdlIHx8ICFpbWFnZS0+d2lkdGgoKSB8fCAhaW1hZ2UtPmhlaWdodCgpKQogICAgICAgICByZXR1
cm4gbmlsOwpAQCAtOTYsOSArOTYsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJv
bUltYWdlKEltCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KHJlbmRlcmVyQ29udGV4
dC5DR0NvbnRleHQpOwogICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCBpbWFnZVNpemUuaGVp
Z2h0KTsKICAgICAgICAgY29udGV4dC5zY2FsZSh7IGFkanVzdGVkSW1hZ2VTY2FsZSwgLWFkanVz
dGVkSW1hZ2VTY2FsZSB9KTsKLSAgICAgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgcGFpbnRpbmdP
cHRpb25zOwotICAgICAgICBwYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbkRlc2NyaXB0aW9u
ID0gb3JpZW50YXRpb247Ci0gICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQ
b2ludCgpLCBwYWludGluZ09wdGlvbnMpOworICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1h
Z2UsIEZsb2F0UG9pbnQoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb24pKTsKICAg
ICB9XTsKICAgICByZXR1cm4gaW1hZ2VDb3B5LkNHSW1hZ2U7CiB9CkBAIC0yNzQsNyArMjcyLDcg
QEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHNjYWxlRHJhZ0ltYWdlKFJldAogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1SZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlRHJhZ0ltYWdlRnJvbUlt
YWdlKEltYWdlKiwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorUmV0YWluUHRyPENHSW1h
Z2VSZWY+IGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSosIEltYWdlT3JpZW50YXRpb24p
CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvRHJhZ0ltYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9EcmFnSW1hZ2VNYWMubW0JKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTkyLDE5
ICs5MiwxOCBAQCBSZXRhaW5QdHI8TlNJbWFnZT4gZGlzc29sdmVEcmFnSW1hZ2VUb0ZyCiAgICAg
cmV0dXJuIGRpc3NvbHZlZEltYWdlOwogfQogICAgICAgICAKLVJldGFpblB0cjxOU0ltYWdlPiBj
cmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24gZGVzY3JpcHRpb24pCitSZXRhaW5QdHI8TlNJbWFnZT4gY3JlYXRlRHJhZ0ltYWdl
RnJvbUltYWdlKEltYWdlKiBpbWFnZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsK
ICAgICBGbG9hdFNpemUgc2l6ZSA9IGltYWdlLT5zaXplKCk7CiAKICAgICBpZiAoaXM8Qml0bWFw
SW1hZ2U+KCppbWFnZSkpIHsKLSAgICAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbjsK
ICAgICAgICAgQml0bWFwSW1hZ2UmIGJpdG1hcEltYWdlID0gZG93bmNhc3Q8Qml0bWFwSW1hZ2U+
KCppbWFnZSk7CiAgICAgICAgIEludFNpemUgc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbiA9IGJp
dG1hcEltYWdlLnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKTsKIAotICAgICAgICBpZiAoZGVz
Y3JpcHRpb24ucmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbikKKyAgICAgICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdlT3JpZW50YXRpb246OkZyb21J
bWFnZSkKICAgICAgICAgICAgIG9yaWVudGF0aW9uID0gYml0bWFwSW1hZ2Uub3JpZW50YXRpb25G
b3JDdXJyZW50RnJhbWUoKTsKIAotICAgICAgICBpZiAob3JpZW50YXRpb24gIT0gRGVmYXVsdElt
YWdlT3JpZW50YXRpb24pIHsKKyAgICAgICAgaWYgKG9yaWVudGF0aW9uICE9IEltYWdlT3JpZW50
YXRpb246Ok5vbmUpIHsKICAgICAgICAgICAgIC8vIENvbnN0cnVjdCBhIGNvcnJlY3RseS1yb3Rh
dGVkIGNvcHkgb2YgdGhlIGltYWdlIHRvIHVzZSBhcyB0aGUgZHJhZyBpbWFnZS4KICAgICAgICAg
ICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCksIHNpemVSZXNwZWN0aW5nT3JpZW50
YXRpb24pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dX
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VDR1dpbi5jcHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBA
QCBleGl0OgogICAgIHJldHVybiBoYm1wLmxlYWsoKTsKIH0KICAgICAKLURyYWdJbWFnZVJlZiBj
cmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKQorRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1n
LCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIEhXbmREQyBkYygwKTsKICAgICBhdXRvIHdvcmtp
bmdEQyA9IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRlQ29tcGF0aWJsZURDKGRjKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAJ
KHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VDYWlyb1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3ICsxNDYsNyBAQCBleGl0Ogog
ICAgIHJldHVybiBoYm1wLmxlYWsoKTsKIH0KICAgICAKLURyYWdJbWFnZVJlZiBjcmVhdGVEcmFn
SW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQor
RHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFnZU9y
aWVudGF0aW9uKQogewogICAgIEhXbmREQyBkYygwKTsKICAgICBhdXRvIHdvcmtpbmdEQyA9IGFk
b3B0R0RJT2JqZWN0KDo6Q3JlYXRlQ29tcGF0aWJsZURDKGRjKSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlRGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VEaXJlY3QyRC5jcHAJKHJldmlzaW9u
IDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VEaXJlY3Qy
RC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgRHJhZ0ltYWdlUmVmIHNjYWxl
RHJhZ0ltYWdlKERyYWdJbWFnZVJlZgogICAgIHJldHVybiBoYm1wLmxlYWsoKTsKIH0KIAotRHJh
Z0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24pCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdl
KEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgSFduZERDIGRjKG51bGxwdHIp
OwogICAgIGF1dG8gd29ya2luZ0RDID0gYWRvcHRHRElPYmplY3QoOjpDcmVhdGVDb21wYXRpYmxl
REMoZGMpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTU1LDcg
Kzk1NSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWUKIAogICAg
ICAgICAgICAgYXV0byBpbnRlcnBvbGF0aW9uID0gY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHko
Y29udGV4dCwgKmltYWdlLCAmYmdMYXllciwgZ2VvbWV0cnkudGlsZVNpemUoKSk7CiAgICAgICAg
ICAgICBhdXRvIGRlY29kaW5nTW9kZSA9IGRlY29kaW5nTW9kZUZvckltYWdlRHJhdygqaW1hZ2Us
IHBhaW50SW5mbyk7Ci0gICAgICAgICAgICBhdXRvIGRyYXdSZXN1bHQgPSBjb250ZXh0LmRyYXdU
aWxlZEltYWdlKCppbWFnZSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9t
ZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBnZW9tZXRyeS5zcGFj
ZVNpemUoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXIuYmxlbmRN
b2RlKCksIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIGludGVy
cG9sYXRpb24pKTsKKyAgICAgICAgICAgIGF1dG8gZHJhd1Jlc3VsdCA9IGNvbnRleHQuZHJhd1Rp
bGVkSW1hZ2UoKmltYWdlLCBnZW9tZXRyeS5kZXN0UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21l
dHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5LnRpbGVTaXplKCksIGdlb21ldHJ5LnNwYWNl
U2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwgYmdMYXllci5ibGVuZE1v
ZGUoKSwgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uOjpEZWZhdWx0LCBpbnRlcnBvbGF0
aW9uKSk7CiAgICAgICAgICAgICBpZiAoZHJhd1Jlc3VsdCA9PSBJbWFnZURyYXdSZXN1bHQ6OkRp
ZFJlcXVlc3REZWNvZGluZykgewogICAgICAgICAgICAgICAgIEFTU0VSVChiZ0ltYWdlLT5pc0Nh
Y2hlZEltYWdlKCkpOwogICAgICAgICAgICAgICAgIGJnSW1hZ2UtPmNhY2hlZEltYWdlKCktPmFk
ZENsaWVudFdhaXRpbmdGb3JBc3luY0RlY29kaW5nKCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjAzMCwxNiArMjAzMCwxOCBAQCBib29sIFJlbmRlckVsZW1lbnQ6OmNoZWNrRm9yUmVwYWlu
dER1cmluCiAgICAgcmV0dXJuICFzZXR0aW5ncygpLnJlcGFpbnRPdXRzaWRlTGF5b3V0RW5hYmxl
ZCgpOwogfQogCi1SZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gUmVuZGVyRWxlbWVudDo6c2hv
dWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSBjb25zdAorSW1hZ2VPcmllbnRhdGlvbiBSZW5k
ZXJFbGVtZW50OjppbWFnZU9yaWVudGF0aW9uKCkgY29uc3QKIHsKICNpZiBVU0UoQ0cpIHx8IFVT
RShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogICAgIC8vIFRoaXMgY2FuIG9ubHkgYmUgZW5hYmxl
ZCBmb3IgcG9ydHMgd2hpY2ggaG9ub3IgdGhlIG9yaWVudGF0aW9uIGZsYWcgaW4gdGhlaXIgZHJh
d2luZyBjb2RlLgogICAgIGlmIChkb2N1bWVudCgpLmlzSW1hZ2VEb2N1bWVudCgpKQotICAgICAg
ICByZXR1cm4gUmVzcGVjdEltYWdlT3JpZW50YXRpb247CisgICAgICAgIHJldHVybiBJbWFnZU9y
aWVudGF0aW9uOjpGcm9tSW1hZ2U7CiAjZW5kaWYKICAgICAvLyBSZXNwZWN0IHRoZSBpbWFnZSdz
IG9yaWVudGF0aW9uIGlmIGl0J3MgYmVpbmcgdXNlZCBhcyBhIGZ1bGwtcGFnZSBpbWFnZSBvciBp
dCdzCiAgICAgLy8gYW4gPGltZz4gYW5kIHRoZSBzZXR0aW5nIHRvIHJlc3BlY3QgaXQgZXZlcnl3
aGVyZSBpcyBzZXQuCi0gICAgcmV0dXJuIHNldHRpbmdzKCkuc2hvdWxkUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24oKSAmJiBpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkpID8gUmVzcGVjdElt
YWdlT3JpZW50YXRpb24gOiBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uOworICAgIGlmIChz
ZXR0aW5ncygpLnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgJiYgaXM8SFRNTEltYWdl
RWxlbWVudD4oZWxlbWVudCgpKSkKKyAgICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246OkZy
b21JbWFnZTsKKyAgICByZXR1cm4gc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCk7CiB9CiAKIHZv
aWQgUmVuZGVyRWxlbWVudDo6YWRqdXN0RnJhZ21lbnRlZEZsb3dTdGF0ZU9uQ29udGFpbmluZ0Js
b2NrQ2hhbmdlSWZOZWVkZWQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5oCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNyArMjA0LDcgQEAgcHVibGlj
OgogICAgIFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2tGb3JGaXhlZFBvc2l0aW9uKCkgY29u
c3Q7CiAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9ja0ZvckFic29sdXRlUG9zaXRpb24o
KSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51
bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIEltYWdlT3JpZW50YXRpb24gaW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0OwogCiAgICAgdm9p
ZCByZW1vdmVGcm9tUmVuZGVyRnJhZ21lbnRlZEZsb3coKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVz
ZXRFbmNsb3NpbmdGcmFnbWVudGVkRmxvd0FuZENoaWxkSW5mb0luY2x1ZGluZ0Rlc2NlbmRhbnRz
KFJlbmRlckZyYWdtZW50ZWRGbG93Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIyNCw4ICsyMjQsNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWlu
dFNuYXBzaG90CiAgICAgICAgIHJldHVybjsKIAogICAgIEludGVycG9sYXRpb25RdWFsaXR5IGlu
dGVycG9sYXRpb24gPSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250ZXh0LCBpbWFnZSwg
JmltYWdlLCBhbGlnbmVkUmVjdC5zaXplKCkpOwotICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
KCksIHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKLSAgICBjb250ZXh0LmRyYXdJbWFnZShp
bWFnZSwgYWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3Jp
cHRpb24sIGludGVycG9sYXRpb24pKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgYWxp
Z25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJw
b2xhdGlvbikpOwogfQogCiB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludENvbnRlbnRz
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHJldmlzaW9uIDI0
ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2OSwxMSArNDY5LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBs
YWNlZChQYWludEluZgogICAgICAgICAgICAgICAgICAgICBjZW50ZXJZID0gMDsKICAgICAgICAg
ICAgICAgICBpbWFnZU9mZnNldCA9IExheW91dFNpemUobGVmdEJvcmRlciArIGxlZnRQYWQgKyBj
ZW50ZXJYICsgbWlzc2luZ0ltYWdlQm9yZGVyV2lkdGgsIHRvcEJvcmRlciArIHRvcFBhZCArIGNl
bnRlclkgKyBtaXNzaW5nSW1hZ2VCb3JkZXJXaWR0aCk7CiAKLSAgICAgICAgICAgICAgICBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihzaG91bGRSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKLSNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9O
KQotICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRh
dGlvbkVudW0oc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwotI2VuZGlmCi0gICAgICAgICAg
ICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExh
eW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VTaXplKSwgZGV2aWNlU2Nh
bGVGYWN0b3IpLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICBjb250
ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChw
YWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBpbWFnZVNpemUpLCBkZXZpY2VTY2FsZUZhY3Rvciks
IGltYWdlT3JpZW50YXRpb24oKSk7CiAgICAgICAgICAgICAgICAgZXJyb3JQaWN0dXJlRHJhd24g
PSB0cnVlOwogICAgICAgICAgICAgfQogCkBAIC02MzUsOSArNjMxLDggQEAgSW1hZ2VEcmF3UmVz
dWx0IFJlbmRlckltYWdlOjpwYWludEludG9SZQogICAgIGlmIChpczxCaXRtYXBJbWFnZT4oaW1h
Z2UpKQogICAgICAgICBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKS51cGRhdGVGcm9tU2V0
dGluZ3Moc2V0dGluZ3MoKSk7CiAKLSAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3Jp
ZW50YXRpb25EZXNjcmlwdGlvbihzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpLCBzdHls
ZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CiAgICAgYXV0byBkZWNvZGluZ01vZGUgPSBkZWNvZGlu
Z01vZGVGb3JJbWFnZURyYXcoKmltYWdlLCBwYWludEluZm8pOwotICAgIGF1dG8gZHJhd1Jlc3Vs
dCA9IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWcsIHJlY3QsIEltYWdlUGFpbnRp
bmdPcHRpb25zKGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdN
b2RlLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCBpbnRlcnBvbGF0aW9uKSk7CisgICAgYXV0byBk
cmF3UmVzdWx0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltZywgcmVjdCwgSW1h
Z2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBk
ZWNvZGluZ01vZGUsIGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlvbikpOwogICAgIGlm
IChkcmF3UmVzdWx0ID09IEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVxdWVzdERlY29kaW5nKQogICAg
ICAgICBpbWFnZVJlc291cmNlKCkuY2FjaGVkSW1hZ2UoKS0+YWRkQ2xpZW50V2FpdGluZ0ZvckFz
eW5jRGVjb2RpbmcoKnRoaXMpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0NzYsNyArMjQ3Niw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjppc0RpcmVjdGx5Q29t
cG8KICAgICAgICAgaWYgKCFpczxCaXRtYXBJbWFnZT4oaW1hZ2UpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgICAgIGlmIChkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKS5v
cmllbnRhdGlvbkZvckN1cnJlbnRGcmFtZSgpICE9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKQor
ICAgICAgICBpZiAoZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkub3JpZW50YXRpb25Gb3JD
dXJyZW50RnJhbWUoKSAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAjaWYgKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1
Z0luLmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDggKzE0NSw3
IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHMKICAgICAgICAgcmV0
dXJuOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvbiA9IGNob29zZUlu
dGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsICppbWFnZSwgaW1hZ2UsIGFsaWduZWRSZWN0LnNp
emUoKSk7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3Jp
cHRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSwgc3R5bGUoKS5pbWFnZU9yaWVu
dGF0aW9uKCkpOwotICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgYWxpZ25lZFJlY3QsIElt
YWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIGludGVycG9sYXRpb24p
KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhpbWFnZU9yaWVudGF0aW9uKCksIGludGVycG9sYXRpb24pKTsKIH0KIAogQ3Vy
c29yRGlyZWN0aXZlIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpnZXRDdXJzb3IoY29uc3QgTGF5
b3V0UG9pbnQmIHBvaW50LCBDdXJzb3ImIG92ZXJyaWRlQ3Vyc29yKSBjb25zdApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDI0
ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC03NTIsNyArNzUyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNGbGlw
cGVkTGluZXNXcml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OmlzRmxpcHBlZExp
bmVzV3JpdGluZ01vZGUod3JpdGluZ01vZGUoKSk7IH0KICAgICBib29sIGlzRmxpcHBlZEJsb2Nr
c1dyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6aXNGbGlwcGVkV3JpdGluZ01v
ZGUod3JpdGluZ01vZGUoKSk7IH0KIAotICAgIEltYWdlT3JpZW50YXRpb25FbnVtIGltYWdlT3Jp
ZW50YXRpb24oKSBjb25zdDsKKyAgICBJbWFnZU9yaWVudGF0aW9uIGltYWdlT3JpZW50YXRpb24o
KSBjb25zdDsKIAogICAgIEltYWdlUmVuZGVyaW5nIGltYWdlUmVuZGVyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SW1hZ2VSZW5kZXJpbmc+KG1fcmFyZUluaGVyaXRlZERhdGEtPmlt
YWdlUmVuZGVyaW5nKTsgfQogCkBAIC05NTEsNyArOTUxLDcgQEAgcHVibGljOgogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgIHZvaWQgc2V0SW1hZ2VPcmll
bnRhdGlvbihJbWFnZU9yaWVudGF0aW9uRW51bSB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVk
RGF0YSwgaW1hZ2VPcmllbnRhdGlvbiwgc3RhdGljX2Nhc3Q8aW50Pih2KSk7IH0KKyAgICB2b2lk
IHNldEltYWdlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbiB2KSB7IFNFVF9WQVIobV9yYXJl
SW5oZXJpdGVkRGF0YSwgaW1hZ2VPcmllbnRhdGlvbiwgc3RhdGljX2Nhc3Q8aW50Pih2KSk7IH0K
ICNlbmRpZgogCiAgICAgdm9pZCBzZXRJbWFnZVJlbmRlcmluZyhJbWFnZVJlbmRlcmluZyB2KSB7
IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaW1hZ2VSZW5kZXJpbmcsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPih2KSk7IH0KQEAgLTE1ODIsNyArMTU4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgT3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bvc2l0aW9uPiBpbml0aWFsVGV4dEVtcGhhc2lzUG9z
aXRpb24oKSB7IHJldHVybiB7IFRleHRFbXBoYXNpc1Bvc2l0aW9uOjpPdmVyLCBUZXh0RW1waGFz
aXNQb3NpdGlvbjo6UmlnaHQgfTsgfQogICAgIHN0YXRpYyBSdWJ5UG9zaXRpb24gaW5pdGlhbFJ1
YnlQb3NpdGlvbigpIHsgcmV0dXJuIFJ1YnlQb3NpdGlvbjo6QmVmb3JlOyB9CiAgICAgc3RhdGlj
IExpbmVCb3hDb250YWluIGluaXRpYWxMaW5lQm94Q29udGFpbigpIHsgcmV0dXJuIExpbmVCb3hD
b250YWluQmxvY2sgfCBMaW5lQm94Q29udGFpbklubGluZSB8IExpbmVCb3hDb250YWluUmVwbGFj
ZWQ7IH0KLSAgICBzdGF0aWMgSW1hZ2VPcmllbnRhdGlvbkVudW0gaW5pdGlhbEltYWdlT3JpZW50
YXRpb24oKSB7IHJldHVybiBPcmlnaW5Ub3BMZWZ0OyB9CisgICAgc3RhdGljIEltYWdlT3JpZW50
YXRpb24gaW5pdGlhbEltYWdlT3JpZW50YXRpb24oKSB7IHJldHVybiBJbWFnZU9yaWVudGF0aW9u
OjpEZWZhdWx0OyB9CiAgICAgc3RhdGljIEltYWdlUmVuZGVyaW5nIGluaXRpYWxJbWFnZVJlbmRl
cmluZygpIHsgcmV0dXJuIEltYWdlUmVuZGVyaW5nOjpBdXRvOyB9CiAgICAgc3RhdGljIEltYWdl
UmVzb2x1dGlvblNvdXJjZSBpbml0aWFsSW1hZ2VSZXNvbHV0aW9uU291cmNlKCkgeyByZXR1cm4g
SW1hZ2VSZXNvbHV0aW9uU291cmNlOjpTcGVjaWZpZWQ7IH0KICAgICBzdGF0aWMgSW1hZ2VSZXNv
bHV0aW9uU25hcCBpbml0aWFsSW1hZ2VSZXNvbHV0aW9uU25hcCgpIHsgcmV0dXJuIEltYWdlUmVz
b2x1dGlvblNuYXA6Ok5vbmU7IH0KQEAgLTIwOTEsMTIgKzIwOTEsMTIgQEAgaW5saW5lIGJvb2wg
UmVuZGVyU3R5bGU6Omhhc0lubGluZUNvbHVtbgogICAgIHJldHVybiBheGlzID09IENvbHVtbkF4
aXM6OkF1dG8gfHwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA9PSAoYXhpcyA9PSBDb2x1bW5B
eGlzOjpIb3Jpem9udGFsKTsKIH0KIAotaW5saW5lIEltYWdlT3JpZW50YXRpb25FbnVtIFJlbmRl
clN0eWxlOjppbWFnZU9yaWVudGF0aW9uKCkgY29uc3QKK2lubGluZSBJbWFnZU9yaWVudGF0aW9u
IFJlbmRlclN0eWxlOjppbWFnZU9yaWVudGF0aW9uKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoQ1NT
X0lNQUdFX09SSUVOVEFUSU9OKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZU9yaWVudGF0
aW9uRW51bT4obV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VPcmllbnRhdGlvbik7CisgICAgcmV0
dXJuIEltYWdlT3JpZW50YXRpb24obV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VPcmllbnRhdGlv
bik7CiAjZWxzZQotICAgIHJldHVybiBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKKyAgICByZXR1
cm4gSW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVsdDsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWRE
YXRhLmgJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEs
NyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbGluZUJveENvbnRhaW46IDc7IC8vIExpbmVCb3hD
b250YWluCiAgICAgLy8gQ1NTIEltYWdlIFZhbHVlcyBMZXZlbCAzCiAjaWYgRU5BQkxFKENTU19J
TUFHRV9PUklFTlRBVElPTikKLSAgICB1bnNpZ25lZCBpbWFnZU9yaWVudGF0aW9uIDogNDsgLy8g
SW1hZ2VPcmllbnRhdGlvbkVudW0KKyAgICB1bnNpZ25lZCBpbWFnZU9yaWVudGF0aW9uIDogNDsg
Ly8gSW1hZ2VPcmllbnRhdGlvbgogI2VuZGlmCiAgICAgdW5zaWduZWQgaW1hZ2VSZW5kZXJpbmcg
OiAzOyAvLyBJbWFnZVJlbmRlcmluZwogICAgIHVuc2lnbmVkIGxpbmVTbmFwIDogMjsgLy8gTGlu
ZVNuYXAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2
aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDcgKzIwMiw3IEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJ
bWFnZTo6ZHJhd0ZvckNvbnRhaW4KIAogICAgIGZyYW1lVmlldygpLT5zY3JvbGxUb0ZyYWdtZW50
KGluaXRpYWxGcmFnbWVudFVSTCk7CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgcmVzdWx0ID0gZHJh
dyhjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmMsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIERl
Y29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsK
KyAgICBJbWFnZURyYXdSZXN1bHQgcmVzdWx0ID0gZHJhdyhjb250ZXh0LCBkc3RSZWN0LCBzY2Fs
ZWRTcmMsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMs
IEltYWdlT3JpZW50YXRpb246OkRlZmF1bHQpOwogCiAgICAgc2V0SW1hZ2VPYnNlcnZlcihvYnNl
cnZlcik7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIyMSw3ICsyMjEsNyBAQCBOYXRpdmVJbWFn
ZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDCiAgICAgaWYgKCFidWZmZXIpIC8vIGZhaWxl
ZCB0byBhbGxvY2F0ZSBpbWFnZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGRyYXco
YnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBC
bGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKCkpOworICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwg
cmVjdCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdN
b2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6RGVmYXVsdCk7CiAKICAgICAvLyBG
SVhNRTogV0soQnVnIDExMzY1Nyk6IFdlIHNob3VsZCB1c2UgRG9udENvcHlCYWNraW5nU3RvcmUg
aGVyZS4KICAgICByZXR1cm4gYnVmZmVyLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSktPm5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CkBAIC0yNDcsNyArMjQ3LDcgQEAgTmF0aXZlSW1h
Z2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbgogICAgIFBsYXRmb3JtQ29udGV4dERpcmVj
dDJEIHBsYXRmb3JtQ29udGV4dChuYXRpdmVJbWFnZVRhcmdldC5nZXQoKSk7CiAgICAgR3JhcGhp
Y3NDb250ZXh0IGxvY2FsQ29udGV4dCgmcGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0NvbnRleHQ6
OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOwogCi0gICAgZHJhdyhsb2Nh
bENvbnRleHQsIHJlY3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6
Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKCkpOworICAgIGRyYXcobG9jYWxDb250ZXh0LCByZWN0KCksIHJlY3QoKSwgQ29tcG9z
aXRlU291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25v
dXMsIEltYWdlT3JpZW50YXRpb246OkRlZmF1bHQpOwogCiAgICAgcmV0dXJuIG5hdGl2ZUltYWdl
OwogfQpAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29u
dGFpbmVyKEcKICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc2NhbGVk
U3JjUmVjdCwgdW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29tcG9z
aXRlT3AsIGJsZW5kTW9kZSk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24p
CitJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5n
TW9kZSwgSW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0
dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5oCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc3RhcnRBbmltYXRpb25UaW1lckZpcmVkKCk7CiAKICAgICBleHBs
aWNpdCBTVkdJbWFnZShJbWFnZU9ic2VydmVyJik7Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXco
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0b1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBmaW5hbDsKKyAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHRvUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdN
b2RlLCBJbWFnZU9yaWVudGF0aW9uKSBmaW5hbDsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0Zv
ckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6
ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFpbmVy
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQg
Y29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywKICAgICAgICAgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYsIEJsZW5kTW9kZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAJKHJldmlzaW9u
IDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgRmxvYXRTaXplIFNWR0lt
YWdlRm9yQ29udGFpbmVyOjpzaXplKCkgYwogfQogCiBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2VG
b3JDb250YWluZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsCi0gICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCisgICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2Rp
bmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIHJldHVybiBtX2ltYWdlLT5kcmF3Rm9y
Q29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV9jb250YWluZXJab29tLCBtX2lu
aXRpYWxGcmFnbWVudFVSTCwgZHN0UmVjdCwgc3JjUmVjdCwgY29tcG9zaXRlT3AsIGJsZW5kTW9k
ZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VGb3JDb250YWluZXIuaAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcg
KzUzLDcgQEAgcHVibGljOgogICAgICAgICBtX2ltYWdlLT5jb21wdXRlSW50cmluc2ljRGltZW5z
aW9ucyhpbnRyaW5zaWNXaWR0aCwgaW50cmluc2ljSGVpZ2h0LCBpbnRyaW5zaWNSYXRpbyk7CiAg
ICAgfQogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIGZpbmFsOworICAg
IEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5n
TW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7CiAKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBmaW5hbDsKIApJbmRleDogU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI0ODUzMikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTktMDgtMTIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxs
YXdhQGFwcGxlLmNvbT4KKworICAgICAgICBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiBz
aG91bGQgYmUgYSB2YWx1ZSBpbiBJbWFnZU9yaWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1NTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6aW1hZ2VQb3NpdGlvbkluZm9ybWF0aW9uKToK
KwogMjAxOS0wOC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDg1MjUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkocmV2aXNpb24gMjQ4
NTMwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI2MzksOCArMjYzOSw3IEBAIHN0YXRpYyB2b2lkIGltYWdl
UG9zaXRpb25JbmZvcm1hdGlvbihXZWIKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9IHJl
bmRlckltYWdlLnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCk7Ci0gICAgZ3JhcGhpY3ND
b250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6ZS53aWR0
aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKHNo
b3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3
SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6ZS53aWR0aCgpLCBiaXRtYXBT
aXplLmhlaWdodCgpKSwgcmVuZGVySW1hZ2UuaW1hZ2VPcmllbnRhdGlvbigpKTsKICAgICBpbmZv
LmltYWdlID0gc2hhcmVkQml0bWFwOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376177</attachid>
            <date>2019-08-13 09:44:56 -0700</date>
            <delta_ts>2019-08-13 10:11:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200553-20190813094455.patch</filename>
            <type>text/plain</type>
            <size>108217</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4MCBAQAorMjAxOS0wOC0xMyAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIHNob3VsZFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uIHNob3VsZCBiZSBhIHZhbHVlIGluIEltYWdlT3JpZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDU1
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaXMgYSBzdGVwIHRvd2FyZHMgaW1wbGVtZW50aW5nIHRoZSBjc3MgaW1hZ2Utb3JpZW50
YXRpb24uCisKKyAgICAgICAgSW5zdGVhZCBvZiBoYXZpbmcgSW1hZ2VPcmllbnRhdGlvbkVudW0s
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiwKKyAgICAgICAgSW1hZ2VPcmllbnRhdGlvbiBh
bmQgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHdlIGFyZSBnb2luZyB0byBoYXZlIGEKKyAg
ICAgICAgc2luZ2xlIHN0cnVjdHVyZSBuYW1lZCAnSW1hZ2VPcmllbnRhdGlvbicgd2hpY2ggaXMg
YSB3cmFwcGVyIGZvciB0aGUgZW51bQorICAgICAgICB0eXBlICJPcmllbnRhdGlvbiIuCisKKyAg
ICAgICAgVGhpcyBzdHJ1Y3R1cmUgd2lsbCBoYXZlIGEgY29uc3RydWN0b3IgYW5kIGNhc3Rpbmcg
b3BlcmF0b3Igc3VjaCB0aGF0CisgICAgICAgIGFzc2lnbmluZyBhbiBlbnVtIHZhbHVlIGFuZCBj
b21wYXJpbmcgd2l0aCBhbiBlbnVtIHZhbHVlIHdpbGwgYmUgZG9uZQorICAgICAgICBpbXBsaWNp
dGx5LgorCisgICAgICAgIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uIGlzIHJlcHJlc2VudGVkIGFz
IGEgbmV3IGVudW0gdmFsdWUgJ0Zyb21JbWFnZScuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgSW1hZ2VPcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgSW1hZ2VPcmllbnRhdGlvbkVu
dW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVEcmFnSW1hZ2UgY29uc3QpOgorICAg
ICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TENhbnZhc0VsZW1lbnQ6OnBhaW50KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmltYWdlU2l6ZUZvclJlbmRl
cmVyIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkb0ltYWdlRHJhZyk6CisgICAgICAgICogcGxhdGZv
cm0vRHJhZ0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21T
bmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
cm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9DdXN0b21QYWludEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1h
Z2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhZGllbnRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
ZGllbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlUGFpbnRpbmdPcHRpb25zOjpJbWFnZVBhaW50aW5nT3B0aW9ucyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3SW1hZ2VJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6
OmRyYXdUaWxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VP
cmllbnRhdGlvbjo6SW1hZ2VPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9y
aWVudGF0aW9uOjpmcm9tRVhJRlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50
YXRpb246Om9wZXJhdG9yIE9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlT3JpZW50YXRpb246OnVzZXNXaWR0aEFzSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlT3JpZW50YXRpb246OnRyYW5zZm9ybUZyb21EZWZhdWx0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb246OmlzVmFsaWRPcmllbnRhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uOjppc1ZhbGlkRVhJRk9yaWVudGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbjo6SW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbjo6c2V0UmVzcGVjdEltYWdlT3JpZW50YXRpb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uOjpyZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb246OnNldEltYWdlT3JpZW50YXRpb25FbnVtKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbjo6aW1hZ2VPcmllbnRh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uOjpvcGVy
YXRvciBJbWFnZU9yaWVudGF0aW9uRW51bSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbWFnZU9yaWVudGF0aW9uOjpvcGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb246Om9wZXJhdG9yIT0gY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjpkdW1wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9O
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXJBVkZPYmpDOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleCBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhaXJvOjpkcmF3U2hhZG93TGF5ZXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fp
cm86OmRyYXdTaGFkb3dJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd05hdGl2
ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9yaWVudGF0aW9uRnJvbVByb3Bl
cnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OmZyYW1lT3JpZW50YXRp
b25BdEluZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJ
bWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6OnNldFZpZGVvU291cmNlT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4dHVyZU1hcHBlckZsYWdz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjp1cGRhdGVUZXh0dXJlU3BhY2VNYXRyaXgpOgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
cmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRIQklU
TUFQT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRj
aGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNh
aXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1Nv
dXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJE
aXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJEaXJlY3QyRDo6ZnJh
bWVPcmllbnRhdGlvbkF0SW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpk
cmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRp
dmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cmVhZEltYWdlT3JpZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9EcmFnSW1hZ2VJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFn
SW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6aW1hZ2VPcmll
bnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzaG91bGRS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50
U25hcHNob3RJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFj
a2luZzo6aXNEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZSBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRJ
bWFnZU9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFs
SW1hZ2VPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW1hZ2VP
cmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUlu
aGVyaXRlZERhdGEuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZTo6ZHJhdyk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaDoKKwogMjAxOS0wOC0xMiAgVGhpYmF1bHQgU2F1bmllciAgPHRz
YXVuaWVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl1bV2ViUlRDXSBIYW5kbGUg
YnJva2VuIGRhdGEgaW4gdGhlIGxpYndlYnJ0YyBHU3RyZWFtZXIgZGVjb2RlcnMKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTgxOSw3ICsxODE5LDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3Bw
Ci1wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTExNzg5LDcgKzExNzg5LDYgQEAKIAkJQTg3MURGRTEwQTE1Mzc2QjAwQjEyQTY4IC8q
IFJlbmRlcldpZGdldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVuZGVyV2lkZ2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg3NDhCREYx
MkNCRjJEQzAwMUZCQTQxIC8qIEhhc2hUb29scy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIYXNoVG9vbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg3NDhE
NjYxMkNDMzc2MzAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VPcmllbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlBODc0OEQ3NDEyQ0MzRjg5MDAxRkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZU9yaWVudGF0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg4MDVBRjExNkM5NkFFQTAwMEU5
RDk4IC8qIElucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElucHV0U3Ry
ZWFtUHJlcHJvY2Vzc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4ODJEQTFG
MTU5Mzg0NkEwMDAxMTVFRCAvKiBDU1NUb1N0eWxlTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENTU1RvU3R5bGVNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBODgyREEyMjE1OTM4NDhEMDAwMTE1RUQgLyogQ1NTVG9TdHlsZU1hcC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NUb1N0eWxlTWFwLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzA4NCw4ICsxNzA4Myw4IEBACiAJCQkJQzIxQkY3MjAy
MUNEODlERDAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmggKi8sCiAJCQkJ
QzIxQkY3MjYyMUNEODlFMzAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25NZW1iZXIuaCAqLywK
IAkJCQlDMjFCRjcwMjIxQ0Q4OUM0MDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwuaCAqLywKLQkJCQlDMjFCRjcwQzIxQ0Q4OUNDMDAyMjc5NzkgLyogV0hMU0xFeHByZXNz
aW9uLmggKi8sCiAJCQkJNTIyRDA3QTMyMkZCQUI0MzAwQjkwNUJFIC8qIFdITFNMRXhwcmVzc2lv
bi5jcHAgKi8sCisJCQkJQzIxQkY3MEMyMUNEODlDQzAwMjI3OTc5IC8qIFdITFNMRXhwcmVzc2lv
bi5oICovLAogCQkJCUMyMUJGNzAwMjFDRDg5QzIwMDIyNzk3OSAvKiBXSExTTEZhbGx0aHJvdWdo
LmggKi8sCiAJCQkJQzIxQkY3MzUyMUNEODlGMjAwMjI3OTc5IC8qIFdITFNMRmxvYXRMaXRlcmFs
LmggKi8sCiAJCQkJMUNCNjlCMzgyMURGMDNFMTAwNkU4NDZBIC8qIFdITFNMRmxvYXRMaXRlcmFs
VHlwZS5jcHAgKi8sCkBAIC0yNDU0NCw3ICsyNDU0Myw2IEBACiAJCQkJNTU3NkE1NjIxRDg4QTcw
ODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuY3BwICovLAogCQkJCTU1NzZBNTYzMUQ4OEE3MDgwMEND
QzA0QyAvKiBJbWFnZUZyYW1lLmggKi8sCiAJCQkJQkM3RjQ0QTcwQjlFMzI0RTAwQTlEMDgxIC8q
IEltYWdlT2JzZXJ2ZXIuaCAqLywKLQkJCQlBODc0OEQ3NDEyQ0MzRjg5MDAxRkJBNDEgLyogSW1h
Z2VPcmllbnRhdGlvbi5jcHAgKi8sCiAJCQkJQTg3NDhENjYxMkNDMzc2MzAwMUZCQTQxIC8qIElt
YWdlT3JpZW50YXRpb24uaCAqLywKIAkJCQk0OTI5MUU0QTEzNDE3MkM4MDBFNzUzREUgLyogSW1h
Z2VSZW5kZXJpbmdNb2RlLmggKi8sCiAJCQkJNTU0Njc1NzcxRkQxRkMxQTAwM0IxMEIwIC8qIElt
YWdlU291cmNlLmNwcCAqLywKQEAgLTI4NjAxLDYgKzI4NTk5LDcgQEAKIAkJCQlFMUZFMTM3NTE4
NDAyQTY3MDA4OTJGMTMgLyogQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjYwRjMyQjFERkJCMTA3MDA0MTZENkMgLyogQ29tbW9uVk0uaCBpbiBIZWFkZXJzICov
LAogCQkJCTdDOTNGMzRBMUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNp
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCUU0RTk0RDYxMjJGRjE1OEEwMEREMTkxRiAvKiBDb21w
bGV4TGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJGNEU3OEMxRTQ1QzNFRjAwNkQ3
MTA1IC8qIENvbXBsZXhUZXh0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRCQTUw
OTAxQkNGQkQ5NTAwRTM0RUY3IC8qIENvbXBvc2VkVHJlZUFuY2VzdG9ySXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0NEZBMTg1MUJDQTZCNUEwMDkxQjZFRiAvKiBDb21wb3NlZFRyZWVJ
dGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDgxNSw3ICszMDgxNCw2IEBACiAJCQkJMUE3
RkE2MTkwRERBM0IzQTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMTNFRjM0NDE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjkzOTcyNDFBNEE1QjY0MDBFODM0OUQgLyogTkZB
LmggaW4gSGVhZGVycyAqLywKLQkJCQlFNEU5NEQ2MTIyRkYxNThBMDBERDE5MUYgLyogQ29tcGxl
eExpbmVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2OTM5NzIyMUE0QTQxMkYwMEU4MzQ5
RCAvKiBORkFOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjc3MjYwMTFBNUIzQUQ5MDAzQzI0
REQgLyogTkZBVG9ERkEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUY0M0REMEU2NzQwMTIwMDFD
MTI4NyAvKiBOaW5lUGllY2VJbWFnZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJKHJldmlzaW9uIDI0ODUz
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ4NzQsNDkgKzQ4NzQsNTAgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6Om9wZQogCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikK
IAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KEltYWdlT3JpZW50YXRpb25FbnVtIGUpCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoSW1hZ2VPcmllbnRhdGlvbiBlKQogICAgIDogQ1NTVmFs
dWUoUHJpbWl0aXZlQ2xhc3MpCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19ERUc7
CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBPcmlnaW5Ub3BMZWZ0OgorICAgIGNhc2UgSW1h
Z2VPcmllbnRhdGlvbjo6T3JpZ2luVG9wTGVmdDoKICAgICAgICAgbV92YWx1ZS5udW0gPSAwOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIE9yaWdpblJpZ2h0VG9wOgorICAgIGNhc2UgSW1hZ2VP
cmllbnRhdGlvbjo6T3JpZ2luUmlnaHRUb3A6CiAgICAgICAgIG1fdmFsdWUubnVtID0gOTA7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3JpZ2luQm90dG9tUmlnaHQ6CisgICAgY2FzZSBJbWFn
ZU9yaWVudGF0aW9uOjpPcmlnaW5Cb3R0b21SaWdodDoKICAgICAgICAgbV92YWx1ZS5udW0gPSAx
ODA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3JpZ2luTGVmdEJvdHRvbToKKyAgICBjYXNl
IEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkxlZnRCb3R0b206CiAgICAgICAgIG1fdmFsdWUubnVt
ID0gMjcwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE9yaWdpblRvcFJpZ2h0OgotICAgIGNh
c2UgT3JpZ2luTGVmdFRvcDoKLSAgICBjYXNlIE9yaWdpbkJvdHRvbUxlZnQ6Ci0gICAgY2FzZSBP
cmlnaW5SaWdodEJvdHRvbToKKyAgICBjYXNlIEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZToK
KyAgICBjYXNlIEltYWdlT3JpZW50YXRpb246Ok9yaWdpblRvcFJpZ2h0OgorICAgIGNhc2UgSW1h
Z2VPcmllbnRhdGlvbjo6T3JpZ2luTGVmdFRvcDoKKyAgICBjYXNlIEltYWdlT3JpZW50YXRpb246
Ok9yaWdpbkJvdHRvbUxlZnQ6CisgICAgY2FzZSBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5SaWdo
dEJvdHRvbToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQogCi10ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgSW1hZ2VPcmllbnRhdGlv
bkVudW0oKSBjb25zdAordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJh
dG9yIEltYWdlT3JpZW50YXRpb24oKSBjb25zdAogewogICAgIEFTU0VSVChpc0FuZ2xlKCkpOwog
ICAgIGRvdWJsZSBxdWFydGVycyA9IDQgKiBkb3VibGVWYWx1ZShDU1NfVFVSTik7CiAgICAgaW50
IG9yaWVudGF0aW9uID0gMyAmIHN0YXRpY19jYXN0PGludD4ocXVhcnRlcnMgPCAwID8gZmxvb3Io
cXVhcnRlcnMpIDogY2VpbChxdWFydGVycykpOwogICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHsK
ICAgICBjYXNlIDA6Ci0gICAgICAgIHJldHVybiBPcmlnaW5Ub3BMZWZ0OworICAgICAgICByZXR1
cm4gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luVG9wTGVmdDsKICAgICBjYXNlIDE6Ci0gICAgICAg
IHJldHVybiBPcmlnaW5SaWdodFRvcDsKKyAgICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246
Ok9yaWdpblJpZ2h0VG9wOwogICAgIGNhc2UgMjoKLSAgICAgICAgcmV0dXJuIE9yaWdpbkJvdHRv
bVJpZ2h0OworICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luQm90dG9tUmln
aHQ7CiAgICAgY2FzZSAzOgotICAgICAgICByZXR1cm4gT3JpZ2luTGVmdEJvdHRvbTsKKyAgICAg
ICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkxlZnRCb3R0b207CiAgICAgfQogCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIE9yaWdpblRvcExlZnQ7CisgICAg
cmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok5vbmU7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQ1NT
X0lNQUdFX09SSUVOVEFUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAJ
KHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NDQsNyArNTQ0LDcgQEAgRHJhZ0ltYWdlUmVmIERhdGFUcmFu
c2Zlcjo6Y3JlYXRlRHJhZ0ltYQogICAgIGxvY2F0aW9uID0gbV9kcmFnTG9jYXRpb247CiAKICAg
ICBpZiAobV9kcmFnSW1hZ2UpCi0gICAgICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1h
Z2UobV9kcmFnSW1hZ2UtPmltYWdlKCksIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShtX2RyYWdJbWFnZS0+aW1h
Z2UoKSwgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CiAKICAgICBpZiAobV9kcmFnSW1hZ2VFbGVt
ZW50KSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2RyYWdJbWFnZUVsZW1lbnQtPmRv
Y3VtZW50KCkuZnJhbWUoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEwLDE3ICs2MTAsMTAgQEAgdm9p
ZCBIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQoR3JhcGhpY3NDbwogCiAgICAgICAgIGlmIChzaG91
bGRQYWludCkgewogICAgICAgICAgICAgaWYgKGhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpKSB7Ci0g
ICAgICAgICAgICAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gYnVmZmVyKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKGltYWdlQnVmZmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICht
X3ByZXNlbnRlZEltYWdlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbjsKLSNpZiBFTkFCTEUoQ1NTX0lN
QUdFX09SSUVOVEFUSU9OKQotICAgICAgICAgICAgICAgICAgICAgICAgb3JpZW50YXRpb25EZXNj
cmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShyZW5kZXJlcigpLT5zdHlsZSgpLmltYWdl
T3JpZW50YXRpb24oKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlKCptX3ByZXNlbnRlZEltYWdlLCBzbmFwcGVkSW50UmVjdChyKSwgSW1hZ2VQYWlu
dGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbikpOwotICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCppbWFnZUJ1ZmZlciwgc25hcHBlZEludFJlY3QocikpOwotICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBpZiAobV9wcmVzZW50ZWRJbWFnZSkKKyAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC5kcmF3SW1hZ2UoKm1fcHJlc2VudGVkSW1hZ2UsIHNuYXBwZWRJbnRSZWN0KHIpLCBy
ZW5kZXJlcigpLT5pbWFnZU9yaWVudGF0aW9uKCkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYg
KEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGJ1ZmZlcigpKQorICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIHNuYXBwZWRJbnRSZWN0KHIp
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGlzR1BVQmFzZWQoKSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAkocmV2aXNpb24g
MjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjgwLDcgKzI4MCw3IEBAIEZsb2F0U2l6ZSBDYWNoZWRJbWFnZTo6
aW1hZ2VTaXplRm9yUmVuZGUKICAgICBpZiAoIW1faW1hZ2UpCiAgICAgICAgIHJldHVybiB7IH07
CiAKLSAgICBpZiAoaXM8Qml0bWFwSW1hZ2U+KCptX2ltYWdlKSAmJiByZW5kZXJlciAmJiByZW5k
ZXJlci0+c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbikKKyAgICBpZiAoaXM8Qml0bWFwSW1hZ2U+KCptX2ltYWdlKSAmJiByZW5kZXJlciAm
JiByZW5kZXJlci0+aW1hZ2VPcmllbnRhdGlvbigpID09IEltYWdlT3JpZW50YXRpb246OkZyb21J
bWFnZSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEJpdG1hcEltYWdlPigqbV9pbWFnZSkuc2l6
ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpOwogCiAgICAgaWYgKGlzPFNWR0ltYWdlPigqbV9pbWFn
ZSkgJiYgc2l6ZVR5cGUgPT0gVXNlZFNpemUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOTcsMTAgKzExOTcsMTAgQEAg
dm9pZCBEcmFnQ29udHJvbGxlcjo6ZG9JbWFnZURyYWcoRWxlbWVudAogICAgIGlmICghZWxlbWVu
dC5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihlbGVtZW50LnJlbmRlcmVyKCktPnNob3Vs
ZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCksIGVsZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUoKS5p
bWFnZU9yaWVudGF0aW9uKCkpOworICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBl
bGVtZW50LnJlbmRlcmVyKCktPmltYWdlT3JpZW50YXRpb24oKTsKIAogICAgIEltYWdlKiBpbWFn
ZSA9IGdldEltYWdlKGVsZW1lbnQpOwotICAgIGlmIChpbWFnZSAmJiAhbGF5b3V0UmVjdC5pc0Vt
cHR5KCkgJiYgc2hvdWxkVXNlQ2FjaGVkSW1hZ2VGb3JEcmFnSW1hZ2UoKmltYWdlKSAmJiAoZHJh
Z0ltYWdlID0gRHJhZ0ltYWdlIHsgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLCBlbGVt
ZW50LnJlbmRlcmVyKCkgPyBvcmllbnRhdGlvbkRlc2NyaXB0aW9uIDogSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKCkpIH0pKSB7CisgICAgaWYgKGltYWdlICYmICFsYXlvdXRSZWN0LmlzRW1w
dHkoKSAmJiBzaG91bGRVc2VDYWNoZWRJbWFnZUZvckRyYWdJbWFnZSgqaW1hZ2UpICYmIChkcmFn
SW1hZ2UgPSBEcmFnSW1hZ2UgeyBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoaW1hZ2UsIG9yaWVu
dGF0aW9uKSB9KSkgewogICAgICAgICBkcmFnSW1hZ2UgPSBEcmFnSW1hZ2UgeyBmaXREcmFnSW1h
Z2VUb01heFNpemUoZHJhZ0ltYWdlLmdldCgpLCBsYXlvdXRSZWN0LnNpemUoKSwgbWF4RHJhZ0lt
YWdlU2l6ZSgpKSB9OwogICAgICAgICBJbnRTaXplIGZpdHRlZFNpemUgPSBkcmFnSW1hZ2VTaXpl
KGRyYWdJbWFnZS5nZXQoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJ
bWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdl
LmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0lt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDIwICsxMDIsMTUgQEAgc3RhdGljIERyYWdJ
bWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tUwogICAgIGlmICghc25hcHNob3QpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVu
dGF0aW9uOwotI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCisgICAgSW1hZ2VPcmll
bnRhdGlvbiBvcmllbnRhdGlvbjsKICAgICBpZiAobm9kZSkgewogICAgICAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKCFyZW5kZXJlciB8
fCAhaXM8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICAgICAgYXV0byYgcmVuZGVyRWxlbWVudCA9IGRvd25jYXN0PFJlbmRlckVsZW1l
bnQ+KCpyZW5kZXJlcik7Ci0gICAgICAgIG9yaWVudGF0aW9uLnNldFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uKHJlbmRlckVsZW1lbnQuc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSk7Ci0g
ICAgICAgIG9yaWVudGF0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHJlbmRlckVsZW1lbnQu
c3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOworICAgICAgICBvcmllbnRhdGlvbiA9IGRvd25j
YXN0PFJlbmRlckVsZW1lbnQ+KCpyZW5kZXJlcikuaW1hZ2VPcmllbnRhdGlvbigpOwogICAgIH0K
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG5vZGUpOwotI2VuZGlmCisKICAgICBSZWZQdHI8SW1h
Z2U+IGltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShzbmFwc2hvdCks
IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTMwNSw3ICszMDAsNyBAQCBEcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFn
SW1hZ2VUb0ZyYWN0aW9uCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLURyYWdJbWFnZVJlZiBj
cmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24pCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VP
cmllbnRhdGlvbikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRy
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgJKHJldmlzaW9uIDI0ODUzMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC04NCw3ICs4NCw3IEBAIERyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYK
IERyYWdJbWFnZVJlZiBwbGF0Zm9ybUFkanVzdERyYWdJbWFnZUZvckRldmljZVNjYWxlRmFjdG9y
KERyYWdJbWFnZVJlZiwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpOwogRHJhZ0ltYWdlUmVmIGRp
c3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFnSW1hZ2VSZWYsIGZsb2F0IGRlbHRhKTsKIAot
RHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSosIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbik7CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdl
KEltYWdlKiwgSW1hZ2VPcmllbnRhdGlvbik7CiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdl
SWNvbkZvckNhY2hlZEltYWdlRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CiAKIFdFQkNPUkVfRVhQ
T1JUIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKEZyYW1lJiwgTm9kZSYpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsNyArMTgzLDcgQEAgYm9v
bCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYKIAotSW1hZ2VEcmF3UmVz
dWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBCaXRt
YXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3As
IEJsZW5kTW9kZSBtb2RlLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKQogewogICAgIGlmIChkZXN0UmVjdC5pc0VtcHR5KCkgfHwgc3JjUmVj
dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7
CkBAIC0yNjgsOCArMjY4LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdy
YXBoaQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24oZGVzY3JpcHRpb24uaW1hZ2VPcmllbnRhdGlvbigpKTsKLSAgICBpZiAo
ZGVzY3JpcHRpb24ucmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbikKKyAgICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUlt
YWdlKQogICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3Vy
cmVudEZyYW1lKTsKIAogICAgIGRyYXdOYXRpdmVJbWFnZShpbWFnZSwgY29udGV4dCwgZGVzdFJl
Y3QsIHNyY1JlY3QsIEludFNpemUoc2l6ZSgpKSwgb3AsIG1vZGUsIG9yaWVudGF0aW9uKTsKQEAg
LTMwNiw3ICszMDUsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
CiAgICAgICAgIC8vIFRlbXBvcmFyaWx5IHJlc2V0IGltYWdlIG9ic2VydmVyLCB3ZSBkb24ndCB3
YW50IHRvIHJlY2VpdmUgYW55IGNoYW5nZUluUmVjdCgpIGNhbGxzIGR1ZSB0byB0aGlzIHJlbGF5
b3V0LgogICAgICAgICBzZXRJbWFnZU9ic2VydmVyKG51bGxwdHIpOwogCi0gICAgICAgIGRyYXco
YnVmZmVyLT5jb250ZXh0KCksIHRpbGVSZWN0LCB0aWxlUmVjdCwgb3AsIGJsZW5kTW9kZSwgRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwor
ICAgICAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCB0aWxlUmVjdCwgdGlsZVJlY3QsIG9wLCBi
bGVuZE1vZGUsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5v
bmUpOwogCiAgICAgICAgIHNldEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwogICAgICAgICBidWZm
ZXItPmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMTYxLDcgKzE2MSw3IEBAIHByb3RlY3RlZDoKICAgICAvLyB8ZGVzdHJveUFsbHwgYWxv
bmcuCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lB
bGwgPSB0cnVlKTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSBvdmVycmlkZTsKICNpZiBQTEFURk9STShXSU4pCiAg
ICAgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVP
cGVyYXRvcikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCShyZXZpc2lv
biAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBD
cm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd0Nyb3NzZgogICAgIGNvbnRleHQuZW5kVHJhbnNw
YXJlbmN5TGF5ZXIoKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IENyb3NzZmFkZUdlbmVyYXRlZElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJh
dyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxl
bmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICBjb250
ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRTaXplIHNpemUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2Nyb3NzZmFkZVNpemU7IH0KIAogcHJvdGVjdGVkOgotICAgIElt
YWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7
CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAogICAg
IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlJiBmcm9tSW1hZ2UsIEltYWdlJiB0b0ltYWdl
LCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0
IEZsb2F0U2l6ZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzAsNyArMTcwLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1h
Z2U6OmRvQ3VzdAogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKLUlt
YWdlRHJhd1Jlc3VsdCBDdXN0b21QYWludEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVz
dENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUs
IERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorSW1hZ2VEcmF3UmVz
dWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdN
b2RlLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihkZXN0Q29udGV4dCk7CiAgICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaAkocmV2aXNpb24gMjQ4
NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAKICAgICBJbWFn
ZURyYXdSZXN1bHQgZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNp
emUmKTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikgZmluYWw7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikg
ZmluYWw7CiAgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7
CiAKICAgICBXZWFrUHRyPFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24+
IG1fcGFpbnREZWZpbml0aW9uOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR2VuZXJhdGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShi
b29sIC8qZGVzdHJveUFsbCovID0gdHJ1ZSkgb3ZlcnJpZGUgeyB9CiAKIHByb3RlY3RlZDoKLSAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJy
aWRlID0gMDsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVy
cmlkZSA9IDA7CiAgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSkgb3ZlcnJpZGUgPSAwOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDcgKzM5LDcgQEAgR3JhZGllbnRJbWFnZTo6R3JhZGllbnRJbWFnZShHcmFk
aWVudCYgZwogCiBHcmFkaWVudEltYWdlOjp+R3JhZGllbnRJbWFnZSgpID0gZGVmYXVsdDsKIAot
SW1hZ2VEcmF3UmVzdWx0IEdyYWRpZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0
Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
RGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCitJbWFnZURyYXdSZXN1
bHQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUs
IEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGRlc3RDb250ZXh0KTsKICAgICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRp
b24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCShyZXZpc2lvbiAyNDg1MzApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBHcmFkaWVudElt
YWdlKEdyYWRpZW50JiwgY29uc3QgRmxvYXRTaXplJik7CiAKLSAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdN
b2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIGZpbmFsOworICAgIEltYWdlRHJhd1Jl
c3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNv
ZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIGZpbmFsOwogICAgIHZvaWQgZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOwogICAgIGJvb2wgaXNHcmFkaWVudEltYWdlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgZHVtcChXVEY6OlRleHRTdHJl
YW0mKSBjb25zdCBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzMzLDcgKzczMyw3IEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWEKICAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd0ltYWdlKGltYWdlLCBkZXN0
aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiAKICAgICBJbnRlcnBvbGF0
aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRo
aXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJl
dHVybiBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5k
TW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdP
cHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CisgICAgcmV0dXJuIGltYWdlLmRyYXco
KnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9z
aXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50
aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRh
dGlvbik7CiB9CiAKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZElt
YWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0
aW9ucykKQEAgLTc0NSw3ICs3NDUsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3VGlsCiAgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdUaWxlZEltYWdlKGltYWdlLCBk
ZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1hZ2VQYWludGluZ09wdGlv
bnMpOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25R
dWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9s
YXRpb25RdWFsaXR5KTsKLSAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5h
dGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9j
b21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdl
UGFpbnRpbmdPcHRpb25zLm1fZGVjb2RpbmdNb2RlKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhd1Rp
bGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1hZ2VQ
YWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMu
bV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fZGVjb2RpbmdNb2RlLCBpbWFnZVBh
aW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uKTsKIH0KIAogSW1hZ2VEcmF3UmVzdWx0IEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0
aWxlU2NhbGVGYWN0b3IsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTIxMSwyOSArMjExLDI5IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CiB9Owog
CiBzdHJ1Y3QgSW1hZ2VQYWludGluZ09wdGlvbnMgewotICAgIEltYWdlUGFpbnRpbmdPcHRpb25z
KENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zl
ciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGUg
ZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24gPSBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24oKSwgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBJ
bnRlcnBvbGF0aW9uRGVmYXVsdCkKKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9k
ZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9k
ZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRp
b24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBv
bGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0KQogICAgICAgICA6IG1fY29tcG9z
aXRlT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0b3IpCiAgICAgICAgICwgbV9ibGVuZE1vZGUoYmxl
bmRNb2RlKQogICAgICAgICAsIG1fZGVjb2RpbmdNb2RlKGRlY29kaW5nTW9kZSkKLSAgICAgICAg
LCBtX29yaWVudGF0aW9uRGVzY3JpcHRpb24ob3JpZW50YXRpb25EZXNjcmlwdGlvbikKKyAgICAg
ICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQogICAgICAgICAsIG1faW50ZXJwb2xhdGlv
blF1YWxpdHkoaW50ZXJwb2xhdGlvblF1YWxpdHkpCiAgICAgewogICAgIH0KIAotICAgIEltYWdl
UGFpbnRpbmdPcHRpb25zKEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRl
c2NyaXB0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IElu
dGVycG9sYXRpb25EZWZhdWx0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9
IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5v
cm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25v
dXMpCisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMoSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
biwgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBJbnRlcnBvbGF0
aW9uRGVmYXVsdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3Np
dGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgYmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIERl
Y29kaW5nTW9kZSBkZWNvZGluZ01vZGUgPSBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKQogICAg
ICAgICA6IG1fY29tcG9zaXRlT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0b3IpCiAgICAgICAgICwg
bV9ibGVuZE1vZGUoYmxlbmRNb2RlKQogICAgICAgICAsIG1fZGVjb2RpbmdNb2RlKGRlY29kaW5n
TW9kZSkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uRGVzY3JpcHRpb24ob3JpZW50YXRpb25EZXNj
cmlwdGlvbikKKyAgICAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQogICAgICAgICAs
IG1faW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlvblF1YWxpdHkpCiAgICAgewogICAg
IH0KIAotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEludGVycG9sYXRpb25RdWFsaXR5IGludGVy
cG9sYXRpb25RdWFsaXR5LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25E
ZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBi
bGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9
IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpCisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMoSW50
ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHksIEltYWdlT3JpZW50YXRpb24g
b3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lLCBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1v
ZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERlY29k
aW5nTW9kZTo6U3luY2hyb25vdXMpCiAgICAgICAgIDogbV9jb21wb3NpdGVPcGVyYXRvcihjb21w
b3NpdGVPcGVyYXRvcikKICAgICAgICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUpCiAgICAgICAg
ICwgbV9kZWNvZGluZ01vZGUoZGVjb2RpbmdNb2RlKQotICAgICAgICAsIG1fb3JpZW50YXRpb25E
ZXNjcmlwdGlvbihvcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorICAgICAgICAsIG1fb3JpZW50YXRp
b24ob3JpZW50YXRpb24pCiAgICAgICAgICwgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eShpbnRlcnBv
bGF0aW9uUXVhbGl0eSkKICAgICB7CiAgICAgfQpAQCAtMjQzLDcgKzI0Myw3IEBAIHN0cnVjdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyB7CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9jb21wb3NpdGVP
cGVyYXRvcjsKICAgICBCbGVuZE1vZGUgbV9ibGVuZE1vZGU7CiAgICAgRGVjb2RpbmdNb2RlIG1f
ZGVjb2RpbmdNb2RlOwotICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBtX29yaWVudGF0
aW9uRGVzY3JpcHRpb247CisgICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOwogICAg
IEludGVycG9sYXRpb25RdWFsaXR5IG1faW50ZXJwb2xhdGlvblF1YWxpdHk7CiB9OwogCkBAIC0z
NDcsNyArMzQ3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBz
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAogI2lmIFVTRShDRykgfHwgVVNFKERJ
UkVDVDJEKSB8fCBVU0UoQ0FJUk8pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBv
c2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2Rl
OjpOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uKCkpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwg
Y29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uID0g
SW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CiAjZW5kaWYKIAogI2lmIFVTRShDRykgfHwgVVNFKERJ
UkVDVDJEKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCwxMyArNDAsMTMgQEAgR3JhcGhpY3NDb250ZXh0SW1wbDo6fkdyYXBo
aWNzQ29udGV4dEltcAogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdJ
bWFnZUltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7CiAgICAgSW50ZXJwb2xh
dGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNv
bnRleHQsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAg
IHJldHVybiBpbWFnZS5kcmF3KGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1f
YmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWlu
dGluZ09wdGlvbnMubV9vcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKKyAgICByZXR1cm4gaW1hZ2Uu
ZHJhdyhjb250ZXh0LCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5t
X2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1f
b3JpZW50YXRpb24pOwogfQogCiBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6
ZHJhd1RpbGVkSW1hZ2VJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2Us
IGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewogICAgIElu
dGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNT
Y29wZShjb250ZXh0LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5
KTsKLSAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3Vy
Y2UsIHRpbGVTaXplLCBzcGFjaW5nLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9kZWNvZGluZ01vZGUpOworICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoY29udGV4
dCwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRpbmdP
cHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRN
b2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9vcmllbnRhdGlvbik7CiB9CiAKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRl
eHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxl
IGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBpbWFnZVBhaW50aW5nT3B0aW9ucykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSw3
IEBAIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYKICAgICAgICAgaW1h
Z2VPYnNlcnZlcigpLT5kaWREcmF3KCp0aGlzKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEltYWdl
OjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRU
aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSkKK0ltYWdlRHJh
d1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0
U2l6ZSYgc2NhbGVkVGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSBkZWNvZGluZ01v
ZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgQ29sb3IgY29sb3IgPSBz
aW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7CkBAIC0x
ODQsNyArMTg0LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpYwog
ICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRZKChkZXN0UmVjdC55KCkgLSBvbmVUaWxlUmVjdC55
KCkpIC8gc2NhbGUuaGVpZ2h0KCkpOwogICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0aChk
ZXN0UmVjdC53aWR0aCgpIC8gc2NhbGUud2lkdGgoKSk7CiAgICAgICAgIHZpc2libGVTcmNSZWN0
LnNldEhlaWdodChkZXN0UmVjdC5oZWlnaHQoKSAvIHNjYWxlLmhlaWdodCgpKTsKLSAgICAgICAg
cmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBvcCwgYmxlbmRNb2Rl
LCBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAg
cmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBvcCwgYmxlbmRNb2Rl
LCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKICAgICB9CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQpAQCAtMTk2LDcgKzE5Niw3IEBAIEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1Rp
bGVkKEdyYXBoaWMKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFkoKGRlc3RSZWN0Lnko
KSAtIG9uZVRpbGVSZWN0LnkoKSkgLyBzY2FsZS5oZWlnaHQoKSk7CiAgICAgICAgICAgICB2aXNp
YmxlU3JjUmVjdC5zZXRXaWR0aCgxKTsKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldEhl
aWdodChkZXN0UmVjdC5oZWlnaHQoKSAvIHNjYWxlLmhlaWdodCgpKTsKLSAgICAgICAgICAgIHJl
dHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZTo6
Tm9ybWFsLCBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAg
ICAgICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3As
IEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKICAgICAgICAg
fQogICAgICAgICBpZiAoc2l6ZSgpLmhlaWdodCgpID09IDEgJiYgaW50ZXJzZWN0aW9uKG9uZVRp
bGVSZWN0LCBkZXN0UmVjdCkud2lkdGgoKSA9PSBkZXN0UmVjdC53aWR0aCgpKSB7CiAgICAgICAg
ICAgICBGbG9hdFJlY3QgdmlzaWJsZVNyY1JlY3Q7CkBAIC0yMDQsNyArMjA0LDcgQEAgSW1hZ2VE
cmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpYwogICAgICAgICAgICAgdmlzaWJsZVNy
Y1JlY3Quc2V0WSgwKTsKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKGRlc3RS
ZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0aCgpKTsKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0
LnNldEhlaWdodCgxKTsKLSAgICAgICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2
aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybiBkcmF3KGN0eHQs
IGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGlu
Z01vZGUsIG9yaWVudGF0aW9uKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMjM2LDcg
KzIzNiw3IEBAIEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWMKICAgICAg
ICAgICAgICAgICBGbG9hdFJlY3QgZnJvbVJlY3QodG9GbG9hdFBvaW50KGN1cnJlbnRUaWxlUmVj
dC5sb2NhdGlvbigpIC0gb25lVGlsZVJlY3QubG9jYXRpb24oKSksIGN1cnJlbnRUaWxlUmVjdC5z
aXplKCkpOwogICAgICAgICAgICAgICAgIGZyb21SZWN0LnNjYWxlKDEgLyBzY2FsZS53aWR0aCgp
LCAxIC8gc2NhbGUuaGVpZ2h0KCkpOwogCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZHJhdyhj
dHh0LCB0b1JlY3QsIGZyb21SZWN0LCBvcCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IGRyYXcoY3R4dCwgdG9SZWN0LCBmcm9tUmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBk
ZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09
IEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVxdWVzdERlY29kaW5nKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgIHRvWCArPSBjdXJyZW50VGlsZVJlY3Qu
d2lkdGgoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAko
cmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTkwLDggKzE5MCw4IEBAIHByb3RlY3RlZDoKICNpZiBQ
TEFURk9STShXSU4pCiAgICAgdmlydHVhbCB2b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6
ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNp
emUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yKSB7IH0KICNlbmRpZgotICAgIHZpcnR1YWwg
SW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSA9IDA7Ci0g
ICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNp
emUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSk7CisgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQg
ZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdN
b2RlLCBJbWFnZU9yaWVudGF0aW9uKSA9IDA7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxl
ZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbik7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZChHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBU
aWxlUnVsZSB2UnVsZSwgQ29tcG9zaXRlT3BlcmF0b3IpOwogCiAgICAgLy8gU3VwcG9ydGluZyB0
aWxlZCBkcmF3aW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VGcmFtZS5oCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAg
cHJpdmF0ZToKICAgICBTdWJzYW1wbGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbCB7IFN1YnNh
bXBsaW5nTGV2ZWw6OkRlZmF1bHQgfTsKICAgICBEZWNvZGluZ09wdGlvbnMgbV9kZWNvZGluZ09w
dGlvbnM7CiAKLSAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24geyBEZWZhdWx0SW1h
Z2VPcmllbnRhdGlvbiB9OworICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IElt
YWdlT3JpZW50YXRpb246Ok5vbmUgfTsKICAgICBTZWNvbmRzIG1fZHVyYXRpb247CiAgICAgYm9v
bCBtX2hhc0FscGhhIHsgdHJ1ZSB9OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwCShyZXZpc2lvbiAyNDg1
MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9u
LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDYzICswLDAgQEAKLQotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCi0KLSNpbmNsdWRlICJBZmZp
bmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJGbG9hdFNpemUuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1BZmZpbmVUcmFuc2Zvcm0gSW1hZ2VPcmllbnRhdGlvbjo6dHJhbnNmb3JtRnJvbURl
ZmF1bHQoY29uc3QgRmxvYXRTaXplJiBkcmF3blNpemUpIGNvbnN0Ci17Ci0gICAgZmxvYXQgdyA9
IGRyYXduU2l6ZS53aWR0aCgpOwotICAgIGZsb2F0IGggPSBkcmF3blNpemUuaGVpZ2h0KCk7Ci0K
LSAgICBzd2l0Y2ggKG1fb3JpZW50YXRpb24pIHsKLSAgICBjYXNlIE9yaWdpblRvcExlZnQ6Ci0g
ICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKLSAgICBjYXNlIE9yaWdpblRvcFJpZ2h0
OgotICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKC0xLCAgMCwgIDAsICAxLCAgdywgMCk7
Ci0gICAgY2FzZSBPcmlnaW5Cb3R0b21SaWdodDoKLSAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5z
Zm9ybSgtMSwgIDAsICAwLCAtMSwgIHcsIGgpOwotICAgIGNhc2UgT3JpZ2luQm90dG9tTGVmdDoK
LSAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSggMSwgIDAsICAwLCAtMSwgIDAsIGgpOwot
ICAgIGNhc2UgT3JpZ2luTGVmdFRvcDoKLSAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgg
MCwgIDEsICAxLCAgMCwgIDAsIDApOwotICAgIGNhc2UgT3JpZ2luUmlnaHRUb3A6Ci0gICAgICAg
IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oIDAsICAxLCAtMSwgIDAsICB3LCAwKTsKLSAgICBjYXNl
IE9yaWdpblJpZ2h0Qm90dG9tOgotICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCAwLCAt
MSwgLTEsICAwLCAgdywgaCk7Ci0gICAgY2FzZSBPcmlnaW5MZWZ0Qm90dG9tOgotICAgICAgICBy
ZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCAwLCAtMSwgIDEsICAwLCAgMCwgaCk7Ci0gICAgfQotCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5oCShyZXZpc2lvbiAyNDg1MzAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIzLDEwNyArMjQsMTAwIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
Zm5kZWYgSW1hZ2VPcmllbnRhdGlvbl9oCi0jZGVmaW5lIEltYWdlT3JpZW50YXRpb25faAorI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJGbG9h
dFNpemUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBZmZpbmVUcmFuc2Zvcm07
Ci1jbGFzcyBGbG9hdFNpemU7CitzdHJ1Y3QgSW1hZ2VPcmllbnRhdGlvbiB7CisgICAgZW51bSBP
cmllbnRhdGlvbiB7CisgICAgICAgIEZyb21JbWFnZSAgICAgICAgID0gMCwgLy8gT3JpZW50YXRp
b24gZnJvbSB0aGUgaW1hZ2Ugc2hvdWxkIGJlIHJlc3BlY3RlZC4KKworICAgICAgICAvLyBUaGlz
IHJhbmdlIGludGVudGlvbmFsbHkgbWF0Y2hlcyB0aGUgb3JpZW50YXRpb24gdmFsdWVzIGZyb20g
dGhlIEVYSUYgc3BlYy4KKyAgICAgICAgLy8gU2VlIEpFSVRBIENQLTM0NTEsIHBhZ2UgMTguIGh0
dHA6Ly93d3cuZXhpZi5vcmcvRXhpZjItMi5QREYKKyAgICAgICAgT3JpZ2luVG9wTGVmdCAgICAg
PSAxLCAvLyBkZWZhdWx0CisgICAgICAgIE9yaWdpblRvcFJpZ2h0ICAgID0gMiwgLy8gbWlycm9y
IGFsb25nIHktYXhpcworICAgICAgICBPcmlnaW5Cb3R0b21SaWdodCA9IDMsIC8vIDE4MCBkZWdy
ZWUgcm90YXRpb24KKyAgICAgICAgT3JpZ2luQm90dG9tTGVmdCAgPSA0LCAvLyBtaXJyb3IgYWxv
bmcgdGhlIHgtYXhpcworICAgICAgICBPcmlnaW5MZWZ0VG9wICAgICA9IDUsIC8vIG1pcnJvciBh
bG9uZyB4LWF4aXMgKyAyNzAgZGVncmVlIENXIHJvdGF0aW9uCisgICAgICAgIE9yaWdpblJpZ2h0
VG9wICAgID0gNiwgLy8gOTAgZGVncmVlIENXIHJvdGF0aW9uCisgICAgICAgIE9yaWdpblJpZ2h0
Qm90dG9tID0gNywgLy8gbWlycm9yIGFsb25nIHgtYXhpcyArIDkwIGRlZ3JlZSBDVyByb3RhdGlv
bgorICAgICAgICBPcmlnaW5MZWZ0Qm90dG9tICA9IDgsIC8vIDI3MCBkZWdyZWUgQ1cgcm90YXRp
b24KIAotLy8gVGhpcyBlbnVtIGludGVudGlvbmFsbHkgbWF0Y2hlcyB0aGUgb3JpZW50YXRpb24g
dmFsdWVzIGZyb20gdGhlIEVYSUYgc3BlYy4KLS8vIFNlZSBKRUlUQSBDUC0zNDUxLCBwYWdlIDE4
LiBodHRwOi8vd3d3LmV4aWYub3JnL0V4aWYyLTIuUERGCi1lbnVtIEltYWdlT3JpZW50YXRpb25F
bnVtIHsKLSAgICAvLyAiVG9wTGVmdCIgbWVhbnMgdGhhdCB0aGUgMCByb3cgc3RhcnRzIGF0IHRo
ZSBUb3AsIHRoZSAwIGNvbHVtbiBzdGFydHMgYXQgdGhlIExlZnQuCi0gICAgT3JpZ2luVG9wTGVm
dCA9IDEsIC8vIGRlZmF1bHQKLSAgICBPcmlnaW5Ub3BSaWdodCA9IDIsIC8vIG1pcnJvciBhbG9u
ZyB5LWF4aXMKLSAgICBPcmlnaW5Cb3R0b21SaWdodCA9IDMsIC8vIDE4MCBkZWdyZWUgcm90YXRp
b24KLSAgICBPcmlnaW5Cb3R0b21MZWZ0ID0gNCwgLy8gbWlycm9yIGFsb25nIHRoZSB4LWF4aXMK
LSAgICBPcmlnaW5MZWZ0VG9wID0gNSwgLy8gbWlycm9yIGFsb25nIHgtYXhpcyArIDI3MCBkZWdy
ZWUgQ1cgcm90YXRpb24KLSAgICBPcmlnaW5SaWdodFRvcCA9IDYsIC8vIDkwIGRlZ3JlZSBDVyBy
b3RhdGlvbgotICAgIE9yaWdpblJpZ2h0Qm90dG9tID0gNywgLy8gbWlycm9yIGFsb25nIHgtYXhp
cyArIDkwIGRlZ3JlZSBDVyByb3RhdGlvbgotICAgIE9yaWdpbkxlZnRCb3R0b20gPSA4LCAvLyAy
NzAgZGVncmVlIENXIHJvdGF0aW9uCi0gICAgLy8gQWxsIG90aGVyIHZhbHVlcyBhcmUgInJlc2Vy
dmVkIiBhcyBvZiBFWElGIDIuMgotICAgIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uID0gT3JpZ2lu
VG9wTGVmdCwKLX07CisgICAgICAgIE5vbmUgICAgICAgICAgICAgID0gT3JpZ2luVG9wTGVmdAor
ICAgIH07CiAKLWVudW0gUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHsKLSAgICBEb05vdFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uID0gMCwKLSAgICBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9
IDEKLX07CisgICAgSW1hZ2VPcmllbnRhdGlvbigpID0gZGVmYXVsdDsKIAotc3RydWN0IEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbiB7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
biwKLSAgICAgICAgSW1hZ2VPcmllbnRhdGlvbkVudW0gb3JpZW50YXRpb24pCi0gICAgICAgIDog
bV9yZXNwZWN0T3JpZW50YXRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCi0gICAg
ICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKKyAgICBJbWFnZU9yaWVudGF0aW9uKE9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKQorICAgICAgICA6IG1fb3JpZW50YXRpb24ob3JpZW50YXRp
b24pCiAgICAgewogICAgIH0KIAotICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpCi0g
ICAgICAgIDogbV9yZXNwZWN0T3JpZW50YXRpb24oRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bikKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKQorICAg
IHN0YXRpYyBPcmllbnRhdGlvbiBmcm9tRVhJRlZhbHVlKGludCBleGlmVmFsdWUpCiAgICAgewor
ICAgICAgICByZXR1cm4gaXNWYWxpZEVYSUZPcmllbnRhdGlvbihleGlmVmFsdWUpID8gc3RhdGlj
X2Nhc3Q8T3JpZW50YXRpb24+KGV4aWZWYWx1ZSkgOiBOb25lOwogICAgIH0KIAotICAgIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbihSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxk
UmVzcGVjdEltYWdlT3JpZW50YXRpb24pCi0gICAgICAgIDogbV9yZXNwZWN0T3JpZW50YXRpb24o
c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihE
ZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikKKyAgICBvcGVyYXRvciBPcmllbnRhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKworICAgIGJvb2wgdXNlc1dpZHRoQXNIZWlnaHQo
KSBjb25zdAogICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVmFsaWRFWElGT3JpZW50YXRpb24obV9v
cmllbnRhdGlvbikpOworICAgICAgICAvLyBWYWx1ZXMgNSB0aHJvdWdoIDggYWxsIGZsaXAgdGhl
IHdpZHRoL2hlaWdodC4KKyAgICAgICAgcmV0dXJuIG1fb3JpZW50YXRpb24gPj0gT3JpZ2luTGVm
dFRvcCAmJiBtX29yaWVudGF0aW9uIDw9IE9yaWdpbkxlZnRCb3R0b207CiAgICAgfQogCi0gICAg
dm9pZCBzZXRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbihSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVu
dW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pIHsgbV9yZXNwZWN0T3JpZW50YXRpb24g
PSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbjsgfQotICAgIFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uRW51bSByZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpIHsgcmV0dXJuIG1fcmVzcGVjdE9y
aWVudGF0aW9uOyB9CisgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybUZyb21EZWZhdWx0KGNv
bnN0IEZsb2F0U2l6ZSYgZHJhd25TaXplKSBjb25zdAorICAgIHsKKyAgICAgICAgZmxvYXQgdyA9
IGRyYXduU2l6ZS53aWR0aCgpOworICAgICAgICBmbG9hdCBoID0gZHJhd25TaXplLmhlaWdodCgp
OwogCi0gICAgdm9pZCBzZXRJbWFnZU9yaWVudGF0aW9uRW51bShJbWFnZU9yaWVudGF0aW9uRW51
bSBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247IH0KLSAgICBJbWFn
ZU9yaWVudGF0aW9uRW51bSBpbWFnZU9yaWVudGF0aW9uKCkgeyByZXR1cm4gbV9vcmllbnRhdGlv
bjsgfQorICAgICAgICBzd2l0Y2ggKG1fb3JpZW50YXRpb24pIHsKKyAgICAgICAgY2FzZSBGcm9t
SW1hZ2U6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJl
dHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKKyAgICAgICAgY2FzZSBPcmlnaW5Ub3BMZWZ0OgorICAg
ICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOworICAgICAgICBjYXNlIE9yaWdpblRv
cFJpZ2h0OgorICAgICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgtMSwgIDAsICAwLCAg
MSwgIHcsIDApOworICAgICAgICBjYXNlIE9yaWdpbkJvdHRvbVJpZ2h0OgorICAgICAgICAgICAg
cmV0dXJuIEFmZmluZVRyYW5zZm9ybSgtMSwgIDAsICAwLCAtMSwgIHcsIGgpOworICAgICAgICBj
YXNlIE9yaWdpbkJvdHRvbUxlZnQ6CisgICAgICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3Jt
KCAxLCAgMCwgIDAsIC0xLCAgMCwgaCk7CisgICAgICAgIGNhc2UgT3JpZ2luTGVmdFRvcDoKKyAg
ICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oIDAsICAxLCAgMSwgIDAsICAwLCAwKTsK
KyAgICAgICAgY2FzZSBPcmlnaW5SaWdodFRvcDoKKyAgICAgICAgICAgIHJldHVybiBBZmZpbmVU
cmFuc2Zvcm0oIDAsICAxLCAtMSwgIDAsICB3LCAwKTsKKyAgICAgICAgY2FzZSBPcmlnaW5SaWdo
dEJvdHRvbToKKyAgICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oIDAsIC0xLCAtMSwg
IDAsICB3LCBoKTsKKyAgICAgICAgY2FzZSBPcmlnaW5MZWZ0Qm90dG9tOgorICAgICAgICAgICAg
cmV0dXJuIEFmZmluZVRyYW5zZm9ybSggMCwgLTEsICAxLCAgMCwgIDAsIGgpOworICAgICAgICB9
CiAKLSAgICBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gbV9yZXNwZWN0T3JpZW50YXRpb247
Ci0gICAgSW1hZ2VPcmllbnRhdGlvbkVudW0gbV9vcmllbnRhdGlvbjsKLX07Ci0KLWNsYXNzIElt
YWdlT3JpZW50YXRpb24gewotcHVibGljOgotICAgIEltYWdlT3JpZW50YXRpb24oKQotICAgICAg
ICA6IG1fb3JpZW50YXRpb24oRGVmYXVsdEltYWdlT3JpZW50YXRpb24pCi0gICAgeworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgp
OwogICAgIH0KIAotICAgIGV4cGxpY2l0IEltYWdlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlv
bkVudW0gb3JpZW50YXRpb24pCi0gICAgICAgIDogbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikK
LSAgICB7Ci0gICAgfQorcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgT3JpZW50YXRpb24gRVhJ
RkZpcnN0ID0gT3JpZ2luVG9wTGVmdDsKKyAgICBzdGF0aWMgY29uc3QgT3JpZW50YXRpb24gRVhJ
Rkxhc3QgPSBPcmlnaW5MZWZ0Qm90dG9tOworICAgIHN0YXRpYyBjb25zdCBPcmllbnRhdGlvbiBG
aXJzdCA9IEZyb21JbWFnZTsKKyAgICBzdGF0aWMgY29uc3QgT3JpZW50YXRpb24gTGFzdCA9IEVY
SUZMYXN0OwogCi0gICAgYm9vbCB1c2VzV2lkdGhBc0hlaWdodCgpIGNvbnN0CisgICAgc3RhdGlj
IGJvb2wgaXNWYWxpZE9yaWVudGF0aW9uKGludCBvcmllbnRhdGlvbikKICAgICB7Ci0gICAgICAg
IC8vIFZhbHVlcyA1IHRocm91Z2ggOCBhbGwgZmxpcCB0aGUgd2lkdGgvaGVpZ2h0LgotICAgICAg
ICByZXR1cm4gbV9vcmllbnRhdGlvbiA+PSBPcmlnaW5MZWZ0VG9wOworICAgICAgICByZXR1cm4g
b3JpZW50YXRpb24gPj0gc3RhdGljX2Nhc3Q8aW50PihGaXJzdCkgJiYgb3JpZW50YXRpb24gPD0g
c3RhdGljX2Nhc3Q8aW50PihMYXN0KTsKICAgICB9CiAKLSAgICAvLyBJbWFnZU9yaWVudGF0aW9u
RW51bSBjdXJyZW50bHkgbWF0Y2hlcyBFWElGIHZhbHVlcywgaG93ZXZlciBjb2RlIG91dHNpZGUK
LSAgICAvLyB0aGlzIGZ1bmN0aW9uIHNob3VsZCBuZXZlciBhc3N1bWUgdGhhdC4KLSAgICBzdGF0
aWMgSW1hZ2VPcmllbnRhdGlvbiBmcm9tRVhJRlZhbHVlKGludCBleGlmVmFsdWUpCisgICAgc3Rh
dGljIGJvb2wgaXNWYWxpZEVYSUZPcmllbnRhdGlvbihpbnQgb3JpZW50YXRpb24pCiAgICAgewot
ICAgICAgICAvLyBWYWx1ZXMgZGlyZWN0IGZyb20gaW1hZ2VzIG1heSBiZSBpbnZhbGlkLCBpbiB3
aGljaCBjYXNlIHdlIHVzZSB0aGUgZGVmYXVsdC4KLSAgICAgICAgaWYgKGV4aWZWYWx1ZSA8IE9y
aWdpblRvcExlZnQgfHwgZXhpZlZhbHVlID4gT3JpZ2luTGVmdEJvdHRvbSkKLSAgICAgICAgICAg
IHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7Ci0gICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0
aW9uKHN0YXRpY19jYXN0PEltYWdlT3JpZW50YXRpb25FbnVtPihleGlmVmFsdWUpKTsKKyAgICAg
ICAgcmV0dXJuIG9yaWVudGF0aW9uID49IHN0YXRpY19jYXN0PGludD4oRVhJRkZpcnN0KSAmJiBv
cmllbnRhdGlvbiA8PSBzdGF0aWNfY2FzdDxpbnQ+KEVYSUZMYXN0KTsKICAgICB9CiAKLSAgICAv
LyBUaGlzIHRyYW5zZm9ybSBjYW4gYmUgdXNlZCBmb3IgZHJhd2luZyBhbiBpbWFnZSBhY2NvcmRp
bmcgdG8gdGhlIG9yaWVudGF0aW9uLgotICAgIC8vIEl0IHNob3VsZCBiZSB1c2VkIGluIGEgcmln
aHQtaGFuZGVkIGNvb3JkaW5hdGUgc3lzdGVtLgotICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zv
cm1Gcm9tRGVmYXVsdChjb25zdCBGbG9hdFNpemUmIGRyYXduU2l6ZSkgY29uc3Q7Ci0KLSAgICBp
bmxpbmUgb3BlcmF0b3IgSW1hZ2VPcmllbnRhdGlvbkVudW0oKSBjb25zdCB7IHJldHVybiBtX29y
aWVudGF0aW9uOyB9Ci0gICAgCi0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbWFn
ZU9yaWVudGF0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3RoZXIubV9vcmllbnRhdGlvbiA9
PSBtX29yaWVudGF0aW9uOyB9Ci0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbWFn
ZU9yaWVudGF0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0K
LQotcHJpdmF0ZToKLSAgICAvLyBGSVhNRTogVGhpcyBvbmx5IG5lZWRzIHRvIGJlIG9uZSBieXRl
LgotICAgIEltYWdlT3JpZW50YXRpb25FbnVtIG1fb3JpZW50YXRpb247CisgICAgT3JpZW50YXRp
b24gbV9vcmllbnRhdGlvbiB7IE5vbmUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEltYWdlT3JpZW50YXRpb25faApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAkocmV2aXNpb24gMjQ4NTMwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02ODksNyArNjg5LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6ZHVtcChUZXh0
U3RyZWFtJiB0cykKICAgICB0cy5kdW1wUHJvcGVydHkoInNvbGlkLWNvbG9yIiwgc2luZ2xlUGl4
ZWxTb2xpZENvbG9yKCkpOwogCiAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IGZy
YW1lT3JpZW50YXRpb25BdEluZGV4KDApOwotICAgIGlmIChvcmllbnRhdGlvbiAhPSBPcmlnaW5U
b3BMZWZ0KQorICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKQog
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoIm9yaWVudGF0aW9uIiwgb3JpZW50YXRpb24pOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgTmFtZWRJbWFnZUdlbmVyYXRlZElt
YWdlOjpOYW1lZEltYWdlR2VuZQogICAgIHNldENvbnRhaW5lclNpemUoc2l6ZSk7CiB9CiAKLUlt
YWdlRHJhd1Jlc3VsdCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorSW1hZ2VEcmF3
UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVj
b2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQogewogI2lmIFVTRShORVdfVEhFTUUpIHx8IFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGNvbnRleHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFt
ZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgJKHJldmlzaW9uIDI0ODUz
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0
ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB9
CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3Jp
ZW50YXRpb24pIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSkgb3ZlcnJpZGU7CiAKICAgICBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UoU3RyaW5nIG5h
bWUsIGNvbnN0IEZsb2F0U2l6ZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Niw3ICs2Niw3IEBAIEludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWcKIGJv
b2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogQ29sb3IgbmF0
aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKIAot
dm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbnRTaXplJiwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYpOwor
dm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbnRTaXplJiwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7CiB2b2lkIGNs
ZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKICAgICAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0ltYWdlRGVjb2RlckFWRk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQko
cmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAt
NTMxLDcgKzUzMSw3IEBAIGJvb2wgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6ZnJhbWVJc0NvbXBsZXQK
IAogSW1hZ2VPcmllbnRhdGlvbiBJbWFnZURlY29kZXJBVkZPYmpDOjpmcmFtZU9yaWVudGF0aW9u
QXRJbmRleChzaXplX3QpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb24oKTsK
KyAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZTsKIH0KIAogU2Vjb25kcyBJbWFnZURl
Y29kZXJBVkZPYmpDOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhZG93TGF5ZXJCdWZm
ZXIoUGxhdGZvCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFn
ZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkgewotICAgICAgICBkcmF3TmF0aXZlSW1h
Z2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBGbG9hdFJlY3Qocm91bmRlZEludFBv
aW50KGxheWVyT3JpZ2luKSwgbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbGF5
ZXJTaXplKSwgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZTo6
Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uKCksCisgICAgICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0
Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQobGF5
ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBsYXllclNpemUp
LCBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlOjpOb3JtYWws
IEltYWdlT3JpZW50YXRpb246Ok5vbmUsCiAgICAgICAgICAgICBJbnRlcnBvbGF0aW9uRGVmYXVs
dCwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRlKCkpOwogICAgIH0KIH0KQEAg
LTE5Miw3ICsxOTIsNyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhZG93SW1hZ2UoUGxhdGZvcm1Db250
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS0+bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkgewotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZv
cm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgc2hhZG93U3RhdGUu
Z2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBJbWFnZU9yaWVudGF0
aW9uKCksCisgICAgICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2Uu
Z2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlOjpOb3JtYWwsIEltYWdlT3JpZW50YXRpb246Ok5vbmUsCiAgICAgICAg
ICAgICBJbnRlcnBvbGF0aW9uRGVmYXVsdCwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNoYWRv
d1N0YXRlKCkpOwogICAgIH0KIH0KQEAgLTg4OSw3ICs4ODksNyBAQCB2b2lkIGRyYXdOYXRpdmVJ
bWFnZShQbGF0Zm9ybUNvbnRleHRDYWlyCiAgICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0Q29tcG9z
aXRlT3BlcmF0aW9uKHBsYXRmb3JtQ29udGV4dCwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9k
ZSk7CiAKICAgICBGbG9hdFJlY3QgZHN0ID0gZGVzdFJlY3Q7Ci0gICAgaWYgKG9yaWVudGF0aW9u
ICE9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKSB7CisgICAgaWYgKG9yaWVudGF0aW9uICE9IElt
YWdlT3JpZW50YXRpb246Ok5vbmUpIHsKICAgICAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBl
Y3RzIHRoZSBvcmlnaW4gdG8gYmUgYXQgKDAsIDApLgogICAgICAgICBDYWlybzo6dHJhbnNsYXRl
KHBsYXRmb3JtQ29udGV4dCwgZHN0LngoKSwgZHN0LnkoKSk7CiAgICAgICAgIGRzdC5zZXRMb2Nh
dGlvbihGbG9hdFBvaW50KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAJKHJldmlzaW9u
IDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTQsNyArMzU0LDcgQEAgdm9pZCBJ
bWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIAogewogICAgIEJhY2tpbmdTdG9yZUNv
cHkgY29weU1vZGUgPSAmZGVzdGluYXRpb25Db250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFj
a2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmU7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFn
ZSA9IGNvcHlJbWFnZShjb3B5TW9kZSk7Ci0gICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdJbWFn
ZSgqaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxl
bmRNb2RlLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24oKSkpOworICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBkZXN0
UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSwgRGVjb2Rp
bmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkpOwogfQogCiB2b2lk
IEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5j
cHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3
IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGMKICAgICByZXR1cm4g
Y29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYgb3JpZW50
YXRpb24pCit2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxl
bmRNb2RlLCBvcmllbnRhdGlvbik7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lv
biAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvCiAgICAgQ0dDb250ZXh0VHJhbnNsYXRl
Q1RNKGNvbnRleHQsIGFkanVzdGVkRGVzdFJlY3QueCgpLCBhZGp1c3RlZERlc3RSZWN0LnkoKSk7
CiAgICAgYWRqdXN0ZWREZXN0UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOwogCi0gICAg
aWYgKG9yaWVudGF0aW9uICE9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKSB7CisgICAgaWYgKG9y
aWVudGF0aW9uICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsKICAgICAgICAgQ0dDb250ZXh0
Q29uY2F0Q1RNKGNvbnRleHQsIG9yaWVudGF0aW9uLnRyYW5zZm9ybUZyb21EZWZhdWx0KGFkanVz
dGVkRGVzdFJlY3Quc2l6ZSgpKSk7CiAgICAgICAgIGlmIChvcmllbnRhdGlvbi51c2VzV2lkdGhB
c0hlaWdodCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgZGVzdGluYXRpb24gcmVjdCB3aWxsIGhh
dmUgaXQncyB3aWR0aCBhbmQgaGVpZ2h0IGFscmVhZHkgcmV2ZXJzZWQgZm9yIHRoZSBvcmllbnRh
dGlvbiBvZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgc3RhdGljIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRp
b25Gcm9tUAogICAgIEFTU0VSVChpbWFnZVByb3BlcnRpZXMpOwogICAgIENGTnVtYmVyUmVmIG9y
aWVudGF0aW9uUHJvcGVydHkgPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaW1h
Z2VQcm9wZXJ0aWVzLCBrQ0dJbWFnZVByb3BlcnR5T3JpZW50YXRpb24pOwogICAgIGlmICghb3Jp
ZW50YXRpb25Qcm9wZXJ0eSkKLSAgICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb24oKTsKKyAg
ICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok5vbmU7CiAgICAgCiAgICAgaW50IGV4aWZW
YWx1ZTsKICAgICBDRk51bWJlckdldFZhbHVlKG9yaWVudGF0aW9uUHJvcGVydHksIGtDRk51bWJl
ckludFR5cGUsICZleGlmVmFsdWUpOwpAQCAtMzUwLDcgKzM1MCw3IEBAIEltYWdlT3JpZW50YXRp
b24gSW1hZ2VEZWNvZGVyQ0c6OmZyYW1lT3IKIHsKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5
UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdElu
ZGV4KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgaW5kZXgsIGltYWdlU291cmNlT3B0aW9ucygpLmdl
dCgpKSk7CiAgICAgaWYgKCFwcm9wZXJ0aWVzKQotICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRh
dGlvbigpOworICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZTsKICAgICAKICAg
ICByZXR1cm4gb3JpZW50YXRpb25Gcm9tUHJvcGVydGllcyhwcm9wZXJ0aWVzLmdldCgpKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05h
dGl2ZUltYWdlQ0cuY3BwCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjks
NyArNjksNyBAQCBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjCiAgICAg
cmV0dXJuIENvbG9yKHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzFdICogMjU1IC8g
cGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzNdKTsKIH0KIAotdm9p
ZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3As
IEJsZW5kTW9kZSBtb2RlLCBjb25zdCBJbWFnZU9yaWVudGF0aW9uJiBvcmllbnRhdGlvbikKK3Zv
aWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
LCBCbGVuZE1vZGUgbW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICAv
LyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIg
dGhhbiBzaXplKCkuCiAgICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gbmF0aXZlSW1h
Z2VTaXplKGltYWdlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BERkRvY3VtZW50SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCShyZXZpc2lvbiAyNDg1MzApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFn
ZTo6dXBkYXRlQ2FjaGVkSW1hZ2UKICAgICBkZWNvZGVkU2l6ZUNoYW5nZWQoaW50ZXJuYWxTaXpl
LnVuY2xhbXBlZEFyZWEoKSAqIDQpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK0ltYWdl
RHJhd1Jlc3VsdCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbikKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1faGFzUGFnZSkKICAgICAgICAgcmV0
dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgJKHJldmlz
aW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0
aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIG92
ZXJyaWRlOwogICAgIEZsb2F0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBJbWFn
ZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwor
ICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwogCiAg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAg
IGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQxMSwxMSArMTQxMSwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6aGFuZGxlCiAgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX3RhZyhtZXNzYWdl
LCAmdGFncyk7CiAgICAgICAgIGlmIChnc3RfdGFnX2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1Rf
VEFHX0lNQUdFX09SSUVOVEFUSU9OLCAmdGFnLm91dFB0cigpKSkgewogICAgICAgICAgICAgaWYg
KCFnX3N0cmNtcDAodGFnLmdldCgpLCAicm90YXRlLTkwIikpCi0gICAgICAgICAgICAgICAgc2V0
VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uKE9yaWdpblJpZ2h0VG9wKSk7
CisgICAgICAgICAgICAgICAgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0
aW9uOjpPcmlnaW5SaWdodFRvcCk7CiAgICAgICAgICAgICBlbHNlIGlmICghZ19zdHJjbXAwKHRh
Zy5nZXQoKSwgInJvdGF0ZS0xODAiKSkKLSAgICAgICAgICAgICAgICBzZXRWaWRlb1NvdXJjZU9y
aWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24oT3JpZ2luQm90dG9tUmlnaHQpKTsKKyAgICAgICAg
ICAgICAgICBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb246Ok9yaWdp
bkJvdHRvbVJpZ2h0KTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAodGFnLmdldCgp
LCAicm90YXRlLTI3MCIpKQotICAgICAgICAgICAgICAgIHNldFZpZGVvU291cmNlT3JpZW50YXRp
b24oSW1hZ2VPcmllbnRhdGlvbihPcmlnaW5MZWZ0Qm90dG9tKSk7CisgICAgICAgICAgICAgICAg
c2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5MZWZ0Qm90
dG9tKTsKICAgICAgICAgfQogICAgICAgICBnc3RfdGFnX2xpc3RfdW5yZWYodGFncyk7CiAgICAg
ICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04ODcsNyArODg3LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYQogCiAgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgcGFp
bnRpbmdPcHRpb25zKENvbXBvc2l0ZUNvcHkpOwogICAgIGlmIChtX3JlbmRlcmluZ0NhbkJlQWNj
ZWxlcmF0ZWQpCi0gICAgICAgIHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRp
b24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0obV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKKyAg
ICAgICAgcGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb24gPSBtX3ZpZGVvU291cmNlT3JpZW50
YXRpb247CiAKICAgICBhdXRvIGdzdEltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdl
KG1fc2FtcGxlLmdldCgpKTsKICAgICBpZiAoIWdzdEltYWdlKQpAQCAtOTY1LDcgKzk2NSw3IEBA
IE5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW0KIH0KICNlbmRpZiAvLyBV
U0UoR1NUUkVBTUVSX0dMKQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OnNldFZpZGVvU291cmNlT3JpZW50YXRpb24oY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYgb3JpZW50
YXRpb24pCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFZpZGVvU291
cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBpZiAo
bV92aWRlb1NvdXJjZU9yaWVudGF0aW9uID09IG9yaWVudGF0aW9uKQogICAgICAgICByZXR1cm47
CkBAIC05ODAsMTYgKzk4MCwxNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OnNlCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1
cmVNYXBwZXJGbGFncygpCiB7CiAgICAgc3dpdGNoIChtX3ZpZGVvU291cmNlT3JpZW50YXRpb24p
IHsKLSAgICBjYXNlIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOgorICAgIGNhc2UgSW1hZ2VPcmll
bnRhdGlvbjo6Tm9uZToKICAgICAgICAgbV90ZXh0dXJlTWFwcGVyRmxhZ3MgPSAwOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIE9yaWdpblJpZ2h0VG9wOgorICAgIGNhc2UgSW1hZ2VPcmllbnRh
dGlvbjo6T3JpZ2luUmlnaHRUb3A6CiAgICAgICAgIG1fdGV4dHVyZU1hcHBlckZsYWdzID0gVGV4
dHVyZU1hcHBlckdMOjpTaG91bGRSb3RhdGVUZXh0dXJlOTA7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgT3JpZ2luQm90dG9tUmlnaHQ6CisgICAgY2FzZSBJbWFnZU9yaWVudGF0aW9uOjpPcmln
aW5Cb3R0b21SaWdodDoKICAgICAgICAgbV90ZXh0dXJlTWFwcGVyRmxhZ3MgPSBUZXh0dXJlTWFw
cGVyR0w6OlNob3VsZFJvdGF0ZVRleHR1cmUxODA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
T3JpZ2luTGVmdEJvdHRvbToKKyAgICBjYXNlIEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkxlZnRC
b3R0b206CiAgICAgICAgIG1fdGV4dHVyZU1hcHBlckZsYWdzID0gVGV4dHVyZU1hcHBlckdMOjpT
aG91bGRSb3RhdGVUZXh0dXJlMjcwOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5o
CShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xODUsNyArMTg1LDcgQEAgcHVibGljOgogICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUlt
YWdlRm9yQ3VycmVudFRpbWUoKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdm9pZCBzZXRWaWRl
b1NvdXJjZU9yaWVudGF0aW9uKGNvbnN0IEltYWdlT3JpZW50YXRpb24mKTsKKyAgICB2b2lkIHNl
dFZpZGVvU291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbik7CiAgICAgR3N0RWxlbWVu
dCogcGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX3BpcGVsaW5lLmdldCgpOyB9CiAKICAgICB2
aXJ0dWFsIGJvb2wgaGFuZGxlU3luY01lc3NhZ2UoR3N0TWVzc2FnZSopOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdT
dHJlYW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5jcHAJKHJldmlzaW9uIDI0
ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRl
b1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NywxNyArOTcs
MTcgQEAgdm9pZCBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OnVwZGF0ZQogICAgIG1fdGV4
dHVyZVNwYWNlTWF0cml4Lm1ha2VJZGVudGl0eSgpOwogCiAgICAgc3dpdGNoIChtX29yaWVudGF0
aW9uKSB7Ci0gICAgY2FzZSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjoKKyAgICBjYXNlIEltYWdl
T3JpZW50YXRpb246Ok5vbmU6CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3JpZ2luUmlnaHRU
b3A6CisgICAgY2FzZSBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5SaWdodFRvcDoKICAgICAgICAg
bV90ZXh0dXJlU3BhY2VNYXRyaXgucm90YXRlKC05MCk7CiAgICAgICAgIG1fdGV4dHVyZVNwYWNl
TWF0cml4LnRyYW5zbGF0ZSgtMSwgMCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3JpZ2lu
Qm90dG9tUmlnaHQ6CisgICAgY2FzZSBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5Cb3R0b21SaWdo
dDoKICAgICAgICAgbV90ZXh0dXJlU3BhY2VNYXRyaXgucm90YXRlKDE4MCk7CiAgICAgICAgIG1f
dGV4dHVyZVNwYWNlTWF0cml4LnRyYW5zbGF0ZSgtMSwgLTEpOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIE9yaWdpbkxlZnRCb3R0b206CisgICAgY2FzZSBJbWFnZU9yaWVudGF0aW9uOjpPcmln
aW5MZWZ0Qm90dG9tOgogICAgICAgICBtX3RleHR1cmVTcGFjZU1hdHJpeC5yb3RhdGUoLTI3MCk7
CiAgICAgICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4LnRyYW5zbGF0ZSgwLCAtMSk7CiAgICAgICAg
IGJyZWFrOwpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVh
bWVyOjp1cGRhdGUKICAgICAgICAgLTEsIDEsIC0oZmFyVmFsdWUgKyBuZWFyVmFsdWUpIC8gKGZh
clZhbHVlIC0gbmVhclZhbHVlKSwgMSk7CiB9CiAKLWJvb2wgVmlkZW9UZXh0dXJlQ29waWVyR1N0
cmVhbWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR0x1aW50IGlucHV0VGV4
dHVyZSwgSW50U2l6ZSYgZnJhbWVTaXplLCBHTHVpbnQgb3V0cHV0VGV4dHVyZSwgR0xlbnVtIG91
dHB1dFRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xlbnVtIGZv
cm1hdCwgR0xlbnVtIHR5cGUsIGJvb2wgZmxpcFksIEltYWdlT3JpZW50YXRpb24mIHNvdXJjZU9y
aWVudGF0aW9uKQorYm9vbCBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHTHVpbnQgaW5wdXRUZXh0dXJlLCBJbnRTaXplJiBmcmFt
ZVNpemUsIEdMdWludCBvdXRwdXRUZXh0dXJlLCBHTGVudW0gb3V0cHV0VGFyZ2V0LCBHTGludCBs
ZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwg
Ym9vbCBmbGlwWSwgSW1hZ2VPcmllbnRhdGlvbiBzb3VyY2VPcmllbnRhdGlvbikKIHsKICAgICBp
ZiAoIW1fc2hhZGVyUHJvZ3JhbSB8fCAhbV9mcmFtZWJ1ZmZlciB8fCAhbV92Ym8gfHwgZnJhbWVT
aXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1l
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaAkocmV2aXNpb24gMjQ4NTMwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNv
cGllckdTdHJlYW1lci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoK
ICAgICBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIoQ29sb3JDb252ZXJzaW9uKTsKICAgICB+
VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyKCk7CiAKLSAgICBib29sIGNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShHTHVpbnQgaW5wdXRUZXh0dXJlLCBJbnRTaXplJiBmcmFtZVNp
emUsIEdMdWludCBvdXRwdXRUZXh0dXJlLCBHTGVudW0gb3V0cHV0VGFyZ2V0LCBHTGludCBsZXZl
bCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgYm9v
bCBmbGlwWSwgSW1hZ2VPcmllbnRhdGlvbiYgc291cmNlT3JpZW50YXRpb24pOworICAgIGJvb2wg
Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdMdWludCBpbnB1dFRleHR1cmUsIElu
dFNpemUmIGZyYW1lU2l6ZSwgR0x1aW50IG91dHB1dFRleHR1cmUsIEdMZW51bSBvdXRwdXRUYXJn
ZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMZW51bSBmb3JtYXQsIEdM
ZW51bSB0eXBlLCBib29sIGZsaXBZLCBJbWFnZU9yaWVudGF0aW9uIHNvdXJjZU9yaWVudGF0aW9u
KTsKICAgICB2b2lkIHVwZGF0ZUNvbG9yQ29udmVyc2lvbk1hdHJpeChDb2xvckNvbnZlcnNpb24p
OwogICAgIHZvaWQgdXBkYXRlVGV4dHVyZVNwYWNlTWF0cml4KCk7CiAgICAgdm9pZCB1cGRhdGVU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAJKHJldmlz
aW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJl
Y3QyRE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MTMsNyArODEzLDcgQEAgdm9p
ZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZQogICAgIGNvbnRleHQtPlNldFRy
YW5zZm9ybSh0cmFuc2Zvcm0pOwogICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0TG9jYXRpb24oRmxv
YXRQb2ludCgpKTsKIAotICAgIGlmIChvcmllbnRhdGlvbiAhPSBEZWZhdWx0SW1hZ2VPcmllbnRh
dGlvbikgeworICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKSB7
CiAgICAgICAgIGNvbmNhdENUTShwbGF0Zm9ybUNvbnRleHQsIG9yaWVudGF0aW9uLnRyYW5zZm9y
bUZyb21EZWZhdWx0KGFkanVzdGVkRGVzdFJlY3Quc2l6ZSgpKSk7CiAgICAgICAgIGlmIChvcmll
bnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgZGVzdGlu
YXRpb24gcmVjdCB3aWxsIGhhdmUgaXQncyB3aWR0aCBhbmQgaGVpZ2h0IGFscmVhZHkgcmV2ZXJz
ZWQgZm9yIHRoZSBvcmllbnRhdGlvbiBvZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAkocmV2aXNpb24gMjQ4NTMwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRN
QVBPZlNpemUoSEJJVE0KICAgICBpZiAoc2l6ZSkKICAgICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJ
bmZvLmJtSGVpZ2h0KSwgKnNpemUsIENvbXBvc2l0ZUNvcHkpOwogICAgIGVsc2UKLSAgICAgICAg
ZHJhdyhnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5i
bUhlaWdodCksIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VT
aXplLmhlaWdodCgpKSwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5n
TW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAg
ICAgZHJhdyhnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5m
by5ibUhlaWdodCksIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1h
Z2VTaXplLmhlaWdodCgpKSwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29k
aW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOwogCiAgICAgLy8g
RG8gY2xlYW51cAogICAgIENHQ29udGV4dFJlbGVhc2UoY2dDb250ZXh0KTsKQEAgLTk1LDcgKzk1
LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyYwogICAgICAgICBp
ZiAoaW1hZ2UgJiYgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90
PihzcmNTaXplLmhlaWdodCgpKSAmJiBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpID09IHN0YXRpY19j
YXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewogICAgICAgICAgICAgc2l6ZV90IGN1cnJl
bnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBp
OwotICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwg
c3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9k
ZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24oKSk7CisgICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgw
LjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVP
cCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3Jp
ZW50YXRpb246Ok5vbmUpOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBjdXJyZW50RnJh
bWU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEwMyw3ICsxMDMsNyBAQCB2
b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjCiAKICAgICAvLyBObyBpbWFn
ZSBvZiB0aGUgY29ycmVjdCBzaXplIHdhcyBmb3VuZCwgZmFsbGJhY2sgdG8gZHJhd2luZyB0aGUg
Y3VycmVudCBmcmFtZQogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6
ZSgpOwotICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdl
U2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2Rl
OjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbigpKTsKKyAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBm
LCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJs
ZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0
aW9uOjpOb25lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNw
cAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ2Fpcm9XaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIGJv
b2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE0KICAgICBpZiAoc2l6ZSkKICAg
ICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4w
ZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgKnNpemUsIENvbXBvc2l0ZUNv
cHkpOwogICAgIGVsc2UKLSAgICAgICAgZHJhdyhnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJt
cEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBp
bWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29tcG9zaXRlQ29weSwgQmxl
bmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgZHJhdyhnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYs
IGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVjdCgwLjBmLCAwLjBm
LCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29tcG9zaXRlQ29weSwg
QmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50
YXRpb246Ok5vbmUpOwogCiAgICAgLy8gRG8gY2xlYW51cAogICAgIGNhaXJvX2Rlc3Ryb3kodGFy
Z2V0UmVmKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVN
YXRjaGluZ1NvdXJjCiAgICAgICAgIGlmIChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQo
c3VyZmFjZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAm
JiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlLmdldCgpKSA9PSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgoKSkpIHsKICAgICAgICAgICAgIHNpemVfdCBjdXJy
ZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0g
aTsKLSAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYs
IHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1v
ZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKCkpOworICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3Qo
MC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgY29tcG9zaXRl
T3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9y
aWVudGF0aW9uOjpOb25lKTsKICAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gY3VycmVudEZy
YW1lOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMDgsNyArMTA4LDcgQEAg
dm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyYwogCiAgICAgLy8gTm8gaW1h
Z2Ugb2YgdGhlIGNvcnJlY3Qgc2l6ZSB3YXMgZm91bmQsIGZhbGxiYWNrIHRvIGRyYXdpbmcgdGhl
IGN1cnJlbnQgZnJhbWUKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gQml0bWFwSW1hZ2U6OnNp
emUoKTsKLSAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFn
ZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9k
ZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24oKSk7CisgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4w
ZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBC
bGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRh
dGlvbjo6Tm9uZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVj
b2RlckRpcmVjdDJELmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTU5LDIwICsxNTksMjAgQEAgYm9vbCBJbWFnZURlY29kZXJEaXJlY3QyRDo6ZnJhbWVJ
c0NvbXBsZQogSW1hZ2VPcmllbnRhdGlvbiBJbWFnZURlY29kZXJEaXJlY3QyRDo6ZnJhbWVPcmll
bnRhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAogewogICAgIGlmICghbV9uYXRpdmVE
ZWNvZGVyKQotICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbigpOworICAgICAgICByZXR1
cm4gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZTsKIAogICAgIENPTVB0cjxJV0lDQml0bWFwRnJhbWVE
ZWNvZGU+IGZyYW1lOwogICAgIEhSRVNVTFQgaHIgPSBtX25hdGl2ZURlY29kZXItPkdldEZyYW1l
KGluZGV4LCAmZnJhbWUpOwogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKLSAgICAgICAgcmV0dXJu
IEltYWdlT3JpZW50YXRpb24oKTsKKyAgICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok5v
bmU7CiAKICAgICBDT01QdHI8SVdJQ01ldGFkYXRhUXVlcnlSZWFkZXI+IG1ldGFkYXRhOwogICAg
IGhyID0gZnJhbWUtPkdldE1ldGFkYXRhUXVlcnlSZWFkZXIoJm1ldGFkYXRhKTsKICAgICBpZiAo
IVNVQ0NFRURFRChocikpCi0gICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7CisgICAg
ICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpOb25lOwogCiAgICAgLy8gRklYTUU6IElkZW50
aWZ5IGltYWdlIHR5cGUsIGFuZCBhc2sgcHJvcGVyIG9yaWVudGF0aW9uLgotICAgIHJldHVybiBJ
bWFnZU9yaWVudGF0aW9uKCk7CisgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok5vbmU7CiB9
CiAKIFNlY29uZHMgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNp
emVfdCBpbmRleCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI0ODUzMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURpcmVjdDJELmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJh
bWVNYXRjaGluZ1NvdXJjCiAgICAgICAgIGlmIChpbWFnZSAmJiBjbGFtcFRvPGludD4oaW1hZ2VT
aXplLmhlaWdodCgpKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KHNyY1NpemUuaGVpZ2h0KCkpICYmIGNs
YW1wVG88aW50PihpbWFnZVNpemUud2lkdGgoKSkgPT0gc3RhdGljX2Nhc3Q8aW50PihzcmNTaXpl
LndpZHRoKCkpKSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50
RnJhbWU7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7Ci0gICAgICAgICAgICBkcmF3
KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNy
Y1NpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5n
TW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAg
ICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUu
d2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1h
bCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CiAg
ICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtODksNyArODksNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3
RnJhbWVNYXRjaGluZ1NvdXJjCiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29ycmVjdCBzaXpl
IHdhcyBmb3VuZCwgZmFsbGJhY2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFtZQogICAgIEZs
b2F0U2l6ZSBpbWFnZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwotICAgIGRyYXcoY3R4dCwg
ZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNp
emUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICBkcmF3
KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwg
aW1hZ2VTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNv
ZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcAkocmV2aXNp
b24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2
ZUltYWdlRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAgQ29s
b3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoYwogICAgIHJldHVybiBDb2xvcigp
OwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgY29uc3QgSW1hZ2VPcmll
bnRhdGlvbiYgb3JpZW50YXRpb24pCit2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNT
aXplLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBhdXRvIHBsYXRmb3JtQ29udGV4
dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODIsNyArODIsNyBAQCBEcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9u
CiAgICAgcmV0dXJuIGltYWdlOwogfQogCi1EcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJv
bUltYWdlKEltYWdlKiBpbWFnZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1hZ2UsIEltYWdlT3JpZW50
YXRpb24pCiB7CiAgICAgcmV0dXJuIGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUuaAkocmV2aXNpb24g
MjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXJGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHBy
aXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQmFja2luZ1N0b3JlPiBtX2JhY2tpbmdT
dG9yZTsKICAgICBEaXNwb3NhbE1ldGhvZCBtX2Rpc3Bvc2FsTWV0aG9kIHsgRGlzcG9zYWxNZXRo
b2Q6OlVuc3BlY2lmaWVkIH07CiAKLSAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24g
eyBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbiB9OworICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmll
bnRhdGlvbiB7IEltYWdlT3JpZW50YXRpb246Ok5vbmUgfTsKICAgICBTZWNvbmRzIG1fZHVyYXRp
b247CiAgICAgYm9vbCBtX2hhc0FscGhhIHsgdHJ1ZSB9OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTkzLDcgKzE5Myw3IEBAIHN0YXRpYyBJbWFnZU9yaWVudGF0aW9uIHJlYWRJ
bWFnZU9yaWVudGEKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBJbWFnZU9yaWVudGF0
aW9uKCk7CisgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok5vbmU7CiB9CiAKIGNsYXNzIEpQ
RUdJbWFnZVJlYWRlciB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0lt
YWdlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFn
SW1hZ2VJT1MubW0JKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9EcmFnSW1hZ2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgRHJh
Z0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZgogCiBzdGF0aWMgZmxvYXQgbWF4
aW11bUFsbG93ZWREcmFnSW1hZ2VBcmVhID0gNjAwICogMTAyNDsKIAotRHJhZ0ltYWdlUmVmIGNy
ZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1hZ2UsIEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbiBvcmllbnRhdGlvbikKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1h
Z2UoSW1hZ2UqIGltYWdlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIGlm
ICghaW1hZ2UgfHwgIWltYWdlLT53aWR0aCgpIHx8ICFpbWFnZS0+aGVpZ2h0KCkpCiAgICAgICAg
IHJldHVybiBuaWw7CkBAIC05Niw5ICs5Niw3IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1h
Z2VGcm9tSW1hZ2UoSW0KICAgICAgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQocmVuZGVyZXJD
b250ZXh0LkNHQ29udGV4dCk7CiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIGltYWdlU2l6
ZS5oZWlnaHQpOwogICAgICAgICBjb250ZXh0LnNjYWxlKHsgYWRqdXN0ZWRJbWFnZVNjYWxlLCAt
YWRqdXN0ZWRJbWFnZVNjYWxlIH0pOwotICAgICAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBwYWlu
dGluZ09wdGlvbnM7Ci0gICAgICAgIHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3Jp
cHRpb24gPSBvcmllbnRhdGlvbjsKLSAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBG
bG9hdFBvaW50KCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdl
KCppbWFnZSwgRmxvYXRQb2ludCgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbikp
OwogICAgIH1dOwogICAgIHJldHVybiBpbWFnZUNvcHkuQ0dJbWFnZTsKIH0KQEAgLTI3NCw3ICsy
NzIsNyBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc2NhbGVEcmFnSW1hZ2UoUmV0CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLVJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCitSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VPcmllbnRh
dGlvbikKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
OTIsMTkgKzkyLDE4IEBAIFJldGFpblB0cjxOU0ltYWdlPiBkaXNzb2x2ZURyYWdJbWFnZVRvRnIK
ICAgICByZXR1cm4gZGlzc29sdmVkSW1hZ2U7CiB9CiAgICAgICAgIAotUmV0YWluUHRyPE5TSW1h
Z2U+IGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1hZ2UsIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikKK1JldGFpblB0cjxOU0ltYWdlPiBjcmVhdGVEcmFn
SW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KQogewogICAgIEZsb2F0U2l6ZSBzaXplID0gaW1hZ2UtPnNpemUoKTsKIAogICAgIGlmIChpczxC
aXRtYXBJbWFnZT4oKmltYWdlKSkgewotICAgICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0
aW9uOwogICAgICAgICBCaXRtYXBJbWFnZSYgYml0bWFwSW1hZ2UgPSBkb3duY2FzdDxCaXRtYXBJ
bWFnZT4oKmltYWdlKTsKICAgICAgICAgSW50U2l6ZSBzaXplUmVzcGVjdGluZ09yaWVudGF0aW9u
ID0gYml0bWFwSW1hZ2Uuc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpOwogCi0gICAgICAgIGlm
IChkZXNjcmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uKQorICAgICAgICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VPcmllbnRhdGlvbjo6
RnJvbUltYWdlKQogICAgICAgICAgICAgb3JpZW50YXRpb24gPSBiaXRtYXBJbWFnZS5vcmllbnRh
dGlvbkZvckN1cnJlbnRGcmFtZSgpOwogCi0gICAgICAgIGlmIChvcmllbnRhdGlvbiAhPSBEZWZh
dWx0SW1hZ2VPcmllbnRhdGlvbikgeworICAgICAgICBpZiAob3JpZW50YXRpb24gIT0gSW1hZ2VP
cmllbnRhdGlvbjo6Tm9uZSkgewogICAgICAgICAgICAgLy8gQ29uc3RydWN0IGEgY29ycmVjdGx5
LXJvdGF0ZWQgY29weSBvZiB0aGUgaW1hZ2UgdG8gdXNlIGFzIHRoZSBkcmFnIGltYWdlLgogICAg
ICAgICAgICAgRmxvYXRSZWN0IGRlc3RSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZVJlc3BlY3RpbmdP
cmllbnRhdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VDR1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdJbWFnZUNHV2luLmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzEx
OCw3IEBAIGV4aXQ6CiAgICAgcmV0dXJuIGhibXAubGVhaygpOwogfQogICAgIAotRHJhZ0ltYWdl
UmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24pCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdl
KiBpbWcsIEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgSFduZERDIGRjKDApOwogICAgIGF1dG8g
d29ya2luZ0RDID0gYWRvcHRHRElPYmplY3QoOjpDcmVhdGVDb21wYXRpYmxlREMoZGMpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJvV2lu
LmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdJbWFnZUNhaXJvV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw3IEBAIGV4
aXQ6CiAgICAgcmV0dXJuIGhibXAubGVhaygpOwogfQogICAgIAotRHJhZ0ltYWdlUmVmIGNyZWF0
ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24pCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIElt
YWdlT3JpZW50YXRpb24pCiB7CiAgICAgSFduZERDIGRjKDApOwogICAgIGF1dG8gd29ya2luZ0RD
ID0gYWRvcHRHRElPYmplY3QoOjpDcmVhdGVDb21wYXRpYmxlREMoZGMpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VEaXJlY3QyRC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZURpcmVjdDJELmNwcAkocmV2
aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZURp
cmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBEcmFnSW1hZ2VSZWYg
c2NhbGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmCiAgICAgcmV0dXJuIGhibXAubGVhaygpOwogfQog
Ci1EcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbikKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9t
SW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICBIV25kREMgZGMobnVs
bHB0cik7CiAgICAgYXV0byB3b3JraW5nREMgPSBhZG9wdEdESU9iamVjdCg6OkNyZWF0ZUNvbXBh
dGlibGVEQyhkYykpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NTUsNyArOTU1LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZQog
CiAgICAgICAgICAgICBhdXRvIGludGVycG9sYXRpb24gPSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVh
bGl0eShjb250ZXh0LCAqaW1hZ2UsICZiZ0xheWVyLCBnZW9tZXRyeS50aWxlU2l6ZSgpKTsKICAg
ICAgICAgICAgIGF1dG8gZGVjb2RpbmdNb2RlID0gZGVjb2RpbmdNb2RlRm9ySW1hZ2VEcmF3KCpp
bWFnZSwgcGFpbnRJbmZvKTsKLSAgICAgICAgICAgIGF1dG8gZHJhd1Jlc3VsdCA9IGNvbnRleHQu
ZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBnZW9tZXRyeS5kZXN0UmVjdCgpLCB0b0xheW91dFBvaW50
KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5LnRpbGVTaXplKCksIGdlb21ldHJ5
LnNwYWNlU2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwgYmdMYXllci5i
bGVuZE1vZGUoKSwgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwg
aW50ZXJwb2xhdGlvbikpOworICAgICAgICAgICAgYXV0byBkcmF3UmVzdWx0ID0gY29udGV4dC5k
cmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9pbnQo
Z2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwgZ2VvbWV0cnku
c3BhY2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBiZ0xheWVyLmJs
ZW5kTW9kZSgpLCBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb246Ok5vbmUsIGludGVycG9s
YXRpb24pKTsKICAgICAgICAgICAgIGlmIChkcmF3UmVzdWx0ID09IEltYWdlRHJhd1Jlc3VsdDo6
RGlkUmVxdWVzdERlY29kaW5nKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJnSW1hZ2UtPmlz
Q2FjaGVkSW1hZ2UoKSk7CiAgICAgICAgICAgICAgICAgYmdJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+
YWRkQ2xpZW50V2FpdGluZ0ZvckFzeW5jRGVjb2RpbmcoKnRoaXMpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDMwLDE2ICsyMDMwLDE4IEBAIGJvb2wgUmVuZGVyRWxlbWVudDo6Y2hlY2tGb3JSZXBh
aW50RHVyaW4KICAgICByZXR1cm4gIXNldHRpbmdzKCkucmVwYWludE91dHNpZGVMYXlvdXRFbmFi
bGVkKCk7CiB9CiAKLVJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBSZW5kZXJFbGVtZW50Ojpz
aG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0CitJbWFnZU9yaWVudGF0aW9uIFJl
bmRlckVsZW1lbnQ6OmltYWdlT3JpZW50YXRpb24oKSBjb25zdAogewogI2lmIFVTRShDRykgfHwg
VVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCiAgICAgLy8gVGhpcyBjYW4gb25seSBiZSBlbmFi
bGVkIGZvciBwb3J0cyB3aGljaCBob25vciB0aGUgb3JpZW50YXRpb24gZmxhZyBpbiB0aGVpciBk
cmF3aW5nIGNvZGUuCiAgICAgaWYgKGRvY3VtZW50KCkuaXNJbWFnZURvY3VtZW50KCkpCi0gICAg
ICAgIHJldHVybiBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbjsKKyAgICAgICAgcmV0dXJuIEltYWdl
T3JpZW50YXRpb246OkZyb21JbWFnZTsKICNlbmRpZgogICAgIC8vIFJlc3BlY3QgdGhlIGltYWdl
J3Mgb3JpZW50YXRpb24gaWYgaXQncyBiZWluZyB1c2VkIGFzIGEgZnVsbC1wYWdlIGltYWdlIG9y
IGl0J3MKICAgICAvLyBhbiA8aW1nPiBhbmQgdGhlIHNldHRpbmcgdG8gcmVzcGVjdCBpdCBldmVy
eXdoZXJlIGlzIHNldC4KLSAgICByZXR1cm4gc2V0dGluZ3MoKS5zaG91bGRSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbigpICYmIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkgPyBSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbiA6IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb247CisgICAgaWYg
KHNldHRpbmdzKCkuc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSAmJiBpczxIVE1MSW1h
Z2VFbGVtZW50PihlbGVtZW50KCkpKQorICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6
RnJvbUltYWdlOworICAgIHJldHVybiBzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKTsKIH0KIAog
dm9pZCBSZW5kZXJFbGVtZW50OjphZGp1c3RGcmFnbWVudGVkRmxvd1N0YXRlT25Db250YWluaW5n
QmxvY2tDaGFuZ2VJZk5lZWRlZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmgJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBwdWJs
aWM6CiAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9ja0ZvckZpeGVkUG9zaXRpb24oKSBj
b25zdDsKICAgICBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrRm9yQWJzb2x1dGVQb3NpdGlv
bigpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVzcGVjdEltYWdlT3JpZW50YXRpb25F
bnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgSW1hZ2VPcmllbnRhdGlvbiBpbWFnZU9yaWVudGF0aW9uKCkgY29uc3Q7CiAKICAgICB2
b2lkIHJlbW92ZUZyb21SZW5kZXJGcmFnbWVudGVkRmxvdygpOwogICAgIHZpcnR1YWwgdm9pZCBy
ZXNldEVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93QW5kQ2hpbGRJbmZvSW5jbHVkaW5nRGVzY2VuZGFu
dHMoUmVuZGVyRnJhZ21lbnRlZEZsb3cqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjI0LDggKzIyNCw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBh
aW50U25hcHNob3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkg
aW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsIGltYWdl
LCAmaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRp
b24oKSwgc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAgIGNvbnRleHQuZHJhd0ltYWdl
KGltYWdlLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNj
cmlwdGlvbiwgaW50ZXJwb2xhdGlvbikpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBh
bGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoaW1hZ2VPcmllbnRhdGlvbigpLCBpbnRl
cnBvbGF0aW9uKSk7CiB9CiAKIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50Q29udGVu
dHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkocmV2aXNpb24g
MjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDY5LDExICs0NjksNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJl
cGxhY2VkKFBhaW50SW5mCiAgICAgICAgICAgICAgICAgICAgIGNlbnRlclkgPSAwOwogICAgICAg
ICAgICAgICAgIGltYWdlT2Zmc2V0ID0gTGF5b3V0U2l6ZShsZWZ0Qm9yZGVyICsgbGVmdFBhZCAr
IGNlbnRlclggKyBtaXNzaW5nSW1hZ2VCb3JkZXJXaWR0aCwgdG9wQm9yZGVyICsgdG9wUGFkICsg
Y2VudGVyWSArIG1pc3NpbmdJbWFnZUJvcmRlcldpZHRoKTsKIAotICAgICAgICAgICAgICAgIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKHNob3VsZFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uKCkpOwotI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJ
T04pCi0gICAgICAgICAgICAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVu
dGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7Ci0jZW5kaWYKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMo
TGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBpbWFnZVNpemUpLCBkZXZpY2VT
Y2FsZUZhY3RvciksIG9yaWVudGF0aW9uRGVzY3JpcHRpb24pOworICAgICAgICAgICAgICAgIGNv
bnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0
KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdlU2l6ZSksIGRldmljZVNjYWxlRmFjdG9y
KSwgaW1hZ2VPcmllbnRhdGlvbigpKTsKICAgICAgICAgICAgICAgICBlcnJvclBpY3R1cmVEcmF3
biA9IHRydWU7CiAgICAgICAgICAgICB9CiAKQEAgLTYzNSw5ICs2MzEsOCBAQCBJbWFnZURyYXdS
ZXN1bHQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1JlCiAgICAgaWYgKGlzPEJpdG1hcEltYWdlPihp
bWFnZSkpCiAgICAgICAgIGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2UpLnVwZGF0ZUZyb21T
ZXR0aW5ncyhzZXR0aW5ncygpKTsKIAotICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBv
cmllbnRhdGlvbkRlc2NyaXB0aW9uKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCksIHN0
eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICAgICBhdXRvIGRlY29kaW5nTW9kZSA9IGRlY29k
aW5nTW9kZUZvckltYWdlRHJhdygqaW1hZ2UsIHBhaW50SW5mbyk7Ci0gICAgYXV0byBkcmF3UmVz
dWx0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltZywgcmVjdCwgSW1hZ2VQYWlu
dGluZ09wdGlvbnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGlu
Z01vZGUsIG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIGludGVycG9sYXRpb24pKTsKKyAgICBhdXRv
IGRyYXdSZXN1bHQgPSBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZSgqaW1nLCByZWN0LCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlOjpOb3JtYWws
IGRlY29kaW5nTW9kZSwgaW1hZ2VPcmllbnRhdGlvbigpLCBpbnRlcnBvbGF0aW9uKSk7CiAgICAg
aWYgKGRyYXdSZXN1bHQgPT0gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1ZXN0RGVjb2RpbmcpCiAg
ICAgICAgIGltYWdlUmVzb3VyY2UoKS5jYWNoZWRJbWFnZSgpLT5hZGRDbGllbnRXYWl0aW5nRm9y
QXN5bmNEZWNvZGluZygqdGhpcyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjQ3Niw3ICsyNDc2LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OmlzRGlyZWN0bHlD
b21wbwogICAgICAgICBpZiAoIWlzPEJpdG1hcEltYWdlPihpbWFnZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2Up
Lm9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgIT0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24p
CisgICAgICAgIGlmIChkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKS5vcmllbnRhdGlvbkZv
ckN1cnJlbnRGcmFtZSgpICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICNpZiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW4uY3BwCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsOCArMTQ1
LDcgQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwcwogICAgICAgICBy
ZXR1cm47CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uID0gY2hvb3Nl
SW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgKmltYWdlLCBpbWFnZSwgYWxpZ25lZFJlY3Qu
c2l6ZSgpKTsKLSAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNj
cmlwdGlvbihzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpLCBzdHlsZSgpLmltYWdlT3Jp
ZW50YXRpb24oKSk7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBhbGlnbmVkUmVjdCwg
SW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgaW50ZXJwb2xhdGlv
bikpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgYWxpZ25lZFJlY3QsIEltYWdlUGFp
bnRpbmdPcHRpb25zKGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlvbikpOwogfQogCiBD
dXJzb3JEaXJlY3RpdmUgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmdldEN1cnNvcihjb25zdCBM
YXlvdXRQb2ludCYgcG9pbnQsIEN1cnNvciYgb3ZlcnJpZGVDdXJzb3IpIGNvbnN0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24g
MjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc1Miw3ICs3NTIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Zs
aXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6aXNGbGlwcGVk
TGluZXNXcml0aW5nTW9kZSh3cml0aW5nTW9kZSgpKTsgfQogICAgIGJvb2wgaXNGbGlwcGVkQmxv
Y2tzV3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjppc0ZsaXBwZWRXcml0aW5n
TW9kZSh3cml0aW5nTW9kZSgpKTsgfQogCi0gICAgSW1hZ2VPcmllbnRhdGlvbkVudW0gaW1hZ2VP
cmllbnRhdGlvbigpIGNvbnN0OworICAgIEltYWdlT3JpZW50YXRpb24gaW1hZ2VPcmllbnRhdGlv
bigpIGNvbnN0OwogCiAgICAgSW1hZ2VSZW5kZXJpbmcgaW1hZ2VSZW5kZXJpbmcoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZVJlbmRlcmluZz4obV9yYXJlSW5oZXJpdGVkRGF0YS0+
aW1hZ2VSZW5kZXJpbmcpOyB9CiAKQEAgLTk1MSw3ICs5NTEsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAgdm9pZCBzZXRJbWFnZU9y
aWVudGF0aW9uKEltYWdlT3JpZW50YXRpb25FbnVtIHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0
ZWREYXRhLCBpbWFnZU9yaWVudGF0aW9uLCBzdGF0aWNfY2FzdDxpbnQ+KHYpKTsgfQorICAgIHZv
aWQgc2V0SW1hZ2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIHYpIHsgU0VUX1ZBUihtX3Jh
cmVJbmhlcml0ZWREYXRhLCBpbWFnZU9yaWVudGF0aW9uLCBzdGF0aWNfY2FzdDxpbnQ+KHYpKTsg
fQogI2VuZGlmCiAKICAgICB2b2lkIHNldEltYWdlUmVuZGVyaW5nKEltYWdlUmVuZGVyaW5nIHYp
IHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBpbWFnZVJlbmRlcmluZywgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHYpKTsgfQpAQCAtMTU4Miw3ICsxNTgyLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBPcHRpb25TZXQ8VGV4dEVtcGhhc2lzUG9zaXRpb24+IGluaXRpYWxUZXh0RW1waGFzaXNQ
b3NpdGlvbigpIHsgcmV0dXJuIHsgVGV4dEVtcGhhc2lzUG9zaXRpb246Ok92ZXIsIFRleHRFbXBo
YXNpc1Bvc2l0aW9uOjpSaWdodCB9OyB9CiAgICAgc3RhdGljIFJ1YnlQb3NpdGlvbiBpbml0aWFs
UnVieVBvc2l0aW9uKCkgeyByZXR1cm4gUnVieVBvc2l0aW9uOjpCZWZvcmU7IH0KICAgICBzdGF0
aWMgTGluZUJveENvbnRhaW4gaW5pdGlhbExpbmVCb3hDb250YWluKCkgeyByZXR1cm4gTGluZUJv
eENvbnRhaW5CbG9jayB8IExpbmVCb3hDb250YWluSW5saW5lIHwgTGluZUJveENvbnRhaW5SZXBs
YWNlZDsgfQotICAgIHN0YXRpYyBJbWFnZU9yaWVudGF0aW9uRW51bSBpbml0aWFsSW1hZ2VPcmll
bnRhdGlvbigpIHsgcmV0dXJuIE9yaWdpblRvcExlZnQ7IH0KKyAgICBzdGF0aWMgSW1hZ2VPcmll
bnRhdGlvbiBpbml0aWFsSW1hZ2VPcmllbnRhdGlvbigpIHsgcmV0dXJuIEltYWdlT3JpZW50YXRp
b246Ok5vbmU7IH0KICAgICBzdGF0aWMgSW1hZ2VSZW5kZXJpbmcgaW5pdGlhbEltYWdlUmVuZGVy
aW5nKCkgeyByZXR1cm4gSW1hZ2VSZW5kZXJpbmc6OkF1dG87IH0KICAgICBzdGF0aWMgSW1hZ2VS
ZXNvbHV0aW9uU291cmNlIGluaXRpYWxJbWFnZVJlc29sdXRpb25Tb3VyY2UoKSB7IHJldHVybiBJ
bWFnZVJlc29sdXRpb25Tb3VyY2U6OlNwZWNpZmllZDsgfQogICAgIHN0YXRpYyBJbWFnZVJlc29s
dXRpb25TbmFwIGluaXRpYWxJbWFnZVJlc29sdXRpb25TbmFwKCkgeyByZXR1cm4gSW1hZ2VSZXNv
bHV0aW9uU25hcDo6Tm9uZTsgfQpAQCAtMjA5MSwxMiArMjA5MSwxMiBAQCBpbmxpbmUgYm9vbCBS
ZW5kZXJTdHlsZTo6aGFzSW5saW5lQ29sdW1uCiAgICAgcmV0dXJuIGF4aXMgPT0gQ29sdW1uQXhp
czo6QXV0byB8fCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID09IChheGlzID09IENvbHVtbkF4
aXM6Okhvcml6b250YWwpOwogfQogCi1pbmxpbmUgSW1hZ2VPcmllbnRhdGlvbkVudW0gUmVuZGVy
U3R5bGU6OmltYWdlT3JpZW50YXRpb24oKSBjb25zdAoraW5saW5lIEltYWdlT3JpZW50YXRpb24g
UmVuZGVyU3R5bGU6OmltYWdlT3JpZW50YXRpb24oKSBjb25zdAogewogI2lmIEVOQUJMRShDU1Nf
SU1BR0VfT1JJRU5UQVRJT04pCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdlT3JpZW50YXRp
b25FbnVtPihtX3JhcmVJbmhlcml0ZWREYXRhLT5pbWFnZU9yaWVudGF0aW9uKTsKKyAgICByZXR1
cm4gSW1hZ2VPcmllbnRhdGlvbihtX3JhcmVJbmhlcml0ZWREYXRhLT5pbWFnZU9yaWVudGF0aW9u
KTsKICNlbHNlCi0gICAgcmV0dXJuIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOworICAgIHJldHVy
biBJbWFnZU9yaWVudGF0aW9uOjpOb25lOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEu
aAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZUluaGVyaXRlZERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDcgKzEyMSw3IEBA
IHB1YmxpYzoKICAgICB1bnNpZ25lZCBsaW5lQm94Q29udGFpbjogNzsgLy8gTGluZUJveENvbnRh
aW4KICAgICAvLyBDU1MgSW1hZ2UgVmFsdWVzIExldmVsIDMKICNpZiBFTkFCTEUoQ1NTX0lNQUdF
X09SSUVOVEFUSU9OKQotICAgIHVuc2lnbmVkIGltYWdlT3JpZW50YXRpb24gOiA0OyAvLyBJbWFn
ZU9yaWVudGF0aW9uRW51bQorICAgIHVuc2lnbmVkIGltYWdlT3JpZW50YXRpb24gOiA0OyAvLyBJ
bWFnZU9yaWVudGF0aW9uCiAjZW5kaWYKICAgICB1bnNpZ25lZCBpbWFnZVJlbmRlcmluZyA6IDM7
IC8vIEltYWdlUmVuZGVyaW5nCiAgICAgdW5zaWduZWQgbGluZVNuYXAgOiAyOyAvLyBMaW5lU25h
cApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lv
biAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDIsNyArMjAyLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdl
OjpkcmF3Rm9yQ29udGFpbgogCiAgICAgZnJhbWVWaWV3KCktPnNjcm9sbFRvRnJhZ21lbnQoaW5p
dGlhbEZyYWdtZW50VVJMKTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCByZXN1bHQgPSBkcmF3KGNv
bnRleHQsIGRzdFJlY3QsIHNjYWxlZFNyYywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgRGVjb2Rp
bmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAg
IEltYWdlRHJhd1Jlc3VsdCByZXN1bHQgPSBkcmF3KGNvbnRleHQsIGRzdFJlY3QsIHNjYWxlZFNy
YywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1h
Z2VPcmllbnRhdGlvbjo6Tm9uZSk7CiAKICAgICBzZXRJbWFnZU9ic2VydmVyKG9ic2VydmVyKTsK
ICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjIxLDcgKzIyMSw3IEBAIE5hdGl2ZUltYWdlUHRyIFNW
R0ltYWdlOjpuYXRpdmVJbWFnZUZvckMKICAgICBpZiAoIWJ1ZmZlcikgLy8gZmFpbGVkIHRvIGFs
bG9jYXRlIGltYWdlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgZHJhdyhidWZmZXIt
PmNvbnRleHQoKSwgcmVjdCgpLCByZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9k
ZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24oKSk7CisgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCByZWN0KCks
IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5
bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKIAogICAgIC8vIEZJWE1FOiBXSyhC
dWcgMTEzNjU3KTogV2Ugc2hvdWxkIHVzZSBEb250Q29weUJhY2tpbmdTdG9yZSBoZXJlLgogICAg
IHJldHVybiBidWZmZXItPmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKS0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCBOYXRpdmVJbWFnZVB0ciBTVkdJ
bWFnZTo6bmF0aXZlSW1hZ2UoY29uCiAgICAgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQgcGxhdGZv
cm1Db250ZXh0KG5hdGl2ZUltYWdlVGFyZ2V0LmdldCgpKTsKICAgICBHcmFwaGljc0NvbnRleHQg
bG9jYWxDb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVu
ZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAKLSAgICBkcmF3KGxvY2FsQ29udGV4dCwg
cmVjdCgpLCByZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9ybWFsLCBE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7
CisgICAgZHJhdyhsb2NhbENvbnRleHQsIHJlY3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3VyY2VP
dmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VP
cmllbnRhdGlvbjo6Tm9uZSk7CiAKICAgICByZXR1cm4gbmF0aXZlSW1hZ2U7CiB9CkBAIC0yODks
NyArMjg5LDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoRwogICAg
IGltYWdlLT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmNSZWN0LCB1bnNj
YWxlZFBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgYmxlbmRN
b2RlKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
LCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK0ltYWdlRHJhd1Jl
c3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9y
aWVudGF0aW9uKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3
UmVzdWx0OjpEaWROb3RoaW5nOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmgJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzdGFydEFuaW1hdGlvblRpbWVyRmlyZWQoKTsKIAogICAgIGV4cGxpY2l0IFNWR0ltYWdl
KEltYWdlT2JzZXJ2ZXImKTsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24pIGZpbmFsOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9S
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3Jp
ZW50YXRpb24pIGZpbmFsOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3Rm9yQ29udGFpbmVyKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9hdCBjb250
YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUpOwogICAgIHZvaWQgZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29t
LCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLAogICAgICAgICBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxv
YXRSZWN0JiwgQmxlbmRNb2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBGbG9hdFNpemUgU1ZHSW1hZ2VGb3JDb250YWlu
ZXI6OnNpemUoKSBjCiB9CiAKIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6
ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwK
LSAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbikKKyAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdl
T3JpZW50YXRpb24pCiB7CiAgICAgcmV0dXJuIG1faW1hZ2UtPmRyYXdGb3JDb250YWluZXIoY29u
dGV4dCwgbV9jb250YWluZXJTaXplLCBtX2NvbnRhaW5lclpvb20sIG1faW5pdGlhbEZyYWdtZW50
VVJMLCBkc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5l
ci5oCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIG1faW1hZ2UtPmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGludHJpbnNp
Y1dpZHRoLCBpbnRyaW5zaWNIZWlnaHQsIGludHJpbnNpY1JhdGlvKTsKICAgICB9CiAKLSAgICBJ
bWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01v
ZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgZmluYWw7CisgICAgSW1hZ2VEcmF3UmVz
dWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9y
aWVudGF0aW9uKSBmaW5hbDsKIAogICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUpIGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjQ4NTk1KQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAxOS0wOC0xMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29t
PgorCisgICAgICAgIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uIHNob3VsZCBiZSBhIHZh
bHVlIGluIEltYWdlT3JpZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMDU1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjppbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24pOgorCiAyMDE5LTA4LTEz
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBCbG9iIHJlZ2lz
dHJpZXMgc2hvdWxkIGJlIGtleWVkIGJ5IHNlc3Npb24gSURzCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkocmV2aXNpb24g
MjQ4NTMwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2MzksOCArMjYzOSw3IEBAIHN0YXRpYyB2b2lkIGlt
YWdlUG9zaXRpb25JbmZvcm1hdGlvbihXZWIKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9
IHJlbmRlckltYWdlLnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCk7Ci0gICAgZ3JhcGhp
Y3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6ZS53
aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5k
cmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6ZS53aWR0aCgpLCBiaXRt
YXBTaXplLmhlaWdodCgpKSwgcmVuZGVySW1hZ2UuaW1hZ2VPcmllbnRhdGlvbigpKTsKICAgICBp
bmZvLmltYWdlID0gc2hhcmVkQml0bWFwOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376178</attachid>
            <date>2019-08-13 10:11:16 -0700</date>
            <delta_ts>2019-08-13 10:28:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200553-20190813101115.patch</filename>
            <type>text/plain</type>
            <size>108235</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4MCBAQAorMjAxOS0wOC0xMyAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIHNob3VsZFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uIHNob3VsZCBiZSBhIHZhbHVlIGluIEltYWdlT3JpZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDU1
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaXMgYSBzdGVwIHRvd2FyZHMgaW1wbGVtZW50aW5nIHRoZSBjc3MgaW1hZ2Utb3JpZW50
YXRpb24uCisKKyAgICAgICAgSW5zdGVhZCBvZiBoYXZpbmcgSW1hZ2VPcmllbnRhdGlvbkVudW0s
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiwKKyAgICAgICAgSW1hZ2VPcmllbnRhdGlvbiBh
bmQgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHdlIGFyZSBnb2luZyB0byBoYXZlIGEKKyAg
ICAgICAgc2luZ2xlIHN0cnVjdHVyZSBuYW1lZCAnSW1hZ2VPcmllbnRhdGlvbicgd2hpY2ggaXMg
YSB3cmFwcGVyIGZvciB0aGUgZW51bQorICAgICAgICB0eXBlICJPcmllbnRhdGlvbiIuCisKKyAg
ICAgICAgVGhpcyBzdHJ1Y3R1cmUgd2lsbCBoYXZlIGEgY29uc3RydWN0b3IgYW5kIGNhc3Rpbmcg
b3BlcmF0b3Igc3VjaCB0aGF0CisgICAgICAgIGFzc2lnbmluZyBhbiBlbnVtIHZhbHVlIGFuZCBj
b21wYXJpbmcgd2l0aCBhbiBlbnVtIHZhbHVlIHdpbGwgYmUgZG9uZQorICAgICAgICBpbXBsaWNp
dGx5LgorCisgICAgICAgIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uIGlzIHJlcHJlc2VudGVkIGFz
IGEgbmV3IGVudW0gdmFsdWUgJ0Zyb21JbWFnZScuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgSW1hZ2VPcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgSW1hZ2VPcmllbnRhdGlvbkVu
dW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVEcmFnSW1hZ2UgY29uc3QpOgorICAg
ICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TENhbnZhc0VsZW1lbnQ6OnBhaW50KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmltYWdlU2l6ZUZvclJlbmRl
cmVyIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkb0ltYWdlRHJhZyk6CisgICAgICAgICogcGxhdGZv
cm0vRHJhZ0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21T
bmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
cm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9DdXN0b21QYWludEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1h
Z2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhZGllbnRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
ZGllbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlUGFpbnRpbmdPcHRpb25zOjpJbWFnZVBhaW50aW5nT3B0aW9ucyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3SW1hZ2VJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6
OmRyYXdUaWxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VP
cmllbnRhdGlvbjo6SW1hZ2VPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9y
aWVudGF0aW9uOjpmcm9tRVhJRlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50
YXRpb246Om9wZXJhdG9yIE9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlT3JpZW50YXRpb246OnVzZXNXaWR0aEFzSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlT3JpZW50YXRpb246OnRyYW5zZm9ybUZyb21EZWZhdWx0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb246OmlzVmFsaWRPcmllbnRhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uOjppc1ZhbGlkRVhJRk9yaWVudGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbjo6SW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbjo6c2V0UmVzcGVjdEltYWdlT3JpZW50YXRpb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uOjpyZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb246OnNldEltYWdlT3JpZW50YXRpb25FbnVtKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbjo6aW1hZ2VPcmllbnRh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uOjpvcGVy
YXRvciBJbWFnZU9yaWVudGF0aW9uRW51bSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbWFnZU9yaWVudGF0aW9uOjpvcGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb246Om9wZXJhdG9yIT0gY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjpkdW1wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9O
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXJBVkZPYmpDOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleCBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhaXJvOjpkcmF3U2hhZG93TGF5ZXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fp
cm86OmRyYXdTaGFkb3dJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd05hdGl2
ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9yaWVudGF0aW9uRnJvbVByb3Bl
cnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OmZyYW1lT3JpZW50YXRp
b25BdEluZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJ
bWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6OnNldFZpZGVvU291cmNlT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4dHVyZU1hcHBlckZsYWdz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjp1cGRhdGVUZXh0dXJlU3BhY2VNYXRyaXgpOgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
cmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRIQklU
TUFQT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRj
aGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNh
aXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1Nv
dXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJE
aXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJEaXJlY3QyRDo6ZnJh
bWVPcmllbnRhdGlvbkF0SW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpk
cmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRp
dmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cmVhZEltYWdlT3JpZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9EcmFnSW1hZ2VJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFn
SW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6aW1hZ2VPcmll
bnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzaG91bGRS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50
U25hcHNob3RJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFj
a2luZzo6aXNEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZSBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRJ
bWFnZU9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFs
SW1hZ2VPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW1hZ2VP
cmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUlu
aGVyaXRlZERhdGEuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZTo6ZHJhdyk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaDoKKwogMjAxOS0wOC0xMiAgVGhpYmF1bHQgU2F1bmllciAgPHRz
YXVuaWVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl1bV2ViUlRDXSBIYW5kbGUg
YnJva2VuIGRhdGEgaW4gdGhlIGxpYndlYnJ0YyBHU3RyZWFtZXIgZGVjb2RlcnMKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTgxOSw3ICsxODE5LDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3Bw
Ci1wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTExNzg5LDcgKzExNzg5LDYgQEAKIAkJQTg3MURGRTEwQTE1Mzc2QjAwQjEyQTY4IC8q
IFJlbmRlcldpZGdldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVuZGVyV2lkZ2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg3NDhCREYx
MkNCRjJEQzAwMUZCQTQxIC8qIEhhc2hUb29scy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIYXNoVG9vbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg3NDhE
NjYxMkNDMzc2MzAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VPcmllbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlBODc0OEQ3NDEyQ0MzRjg5MDAxRkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZU9yaWVudGF0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg4MDVBRjExNkM5NkFFQTAwMEU5
RDk4IC8qIElucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElucHV0U3Ry
ZWFtUHJlcHJvY2Vzc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4ODJEQTFG
MTU5Mzg0NkEwMDAxMTVFRCAvKiBDU1NUb1N0eWxlTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENTU1RvU3R5bGVNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBODgyREEyMjE1OTM4NDhEMDAwMTE1RUQgLyogQ1NTVG9TdHlsZU1hcC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NUb1N0eWxlTWFwLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzA4NCw4ICsxNzA4Myw4IEBACiAJCQkJQzIxQkY3MjAy
MUNEODlERDAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmggKi8sCiAJCQkJ
QzIxQkY3MjYyMUNEODlFMzAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25NZW1iZXIuaCAqLywK
IAkJCQlDMjFCRjcwMjIxQ0Q4OUM0MDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwuaCAqLywKLQkJCQlDMjFCRjcwQzIxQ0Q4OUNDMDAyMjc5NzkgLyogV0hMU0xFeHByZXNz
aW9uLmggKi8sCiAJCQkJNTIyRDA3QTMyMkZCQUI0MzAwQjkwNUJFIC8qIFdITFNMRXhwcmVzc2lv
bi5jcHAgKi8sCisJCQkJQzIxQkY3MEMyMUNEODlDQzAwMjI3OTc5IC8qIFdITFNMRXhwcmVzc2lv
bi5oICovLAogCQkJCUMyMUJGNzAwMjFDRDg5QzIwMDIyNzk3OSAvKiBXSExTTEZhbGx0aHJvdWdo
LmggKi8sCiAJCQkJQzIxQkY3MzUyMUNEODlGMjAwMjI3OTc5IC8qIFdITFNMRmxvYXRMaXRlcmFs
LmggKi8sCiAJCQkJMUNCNjlCMzgyMURGMDNFMTAwNkU4NDZBIC8qIFdITFNMRmxvYXRMaXRlcmFs
VHlwZS5jcHAgKi8sCkBAIC0yNDU0NCw3ICsyNDU0Myw2IEBACiAJCQkJNTU3NkE1NjIxRDg4QTcw
ODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuY3BwICovLAogCQkJCTU1NzZBNTYzMUQ4OEE3MDgwMEND
QzA0QyAvKiBJbWFnZUZyYW1lLmggKi8sCiAJCQkJQkM3RjQ0QTcwQjlFMzI0RTAwQTlEMDgxIC8q
IEltYWdlT2JzZXJ2ZXIuaCAqLywKLQkJCQlBODc0OEQ3NDEyQ0MzRjg5MDAxRkJBNDEgLyogSW1h
Z2VPcmllbnRhdGlvbi5jcHAgKi8sCiAJCQkJQTg3NDhENjYxMkNDMzc2MzAwMUZCQTQxIC8qIElt
YWdlT3JpZW50YXRpb24uaCAqLywKIAkJCQk0OTI5MUU0QTEzNDE3MkM4MDBFNzUzREUgLyogSW1h
Z2VSZW5kZXJpbmdNb2RlLmggKi8sCiAJCQkJNTU0Njc1NzcxRkQxRkMxQTAwM0IxMEIwIC8qIElt
YWdlU291cmNlLmNwcCAqLywKQEAgLTI4NjAxLDYgKzI4NTk5LDcgQEAKIAkJCQlFMUZFMTM3NTE4
NDAyQTY3MDA4OTJGMTMgLyogQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjYwRjMyQjFERkJCMTA3MDA0MTZENkMgLyogQ29tbW9uVk0uaCBpbiBIZWFkZXJzICov
LAogCQkJCTdDOTNGMzRBMUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNp
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCUU0RTk0RDYxMjJGRjE1OEEwMEREMTkxRiAvKiBDb21w
bGV4TGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJGNEU3OEMxRTQ1QzNFRjAwNkQ3
MTA1IC8qIENvbXBsZXhUZXh0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRCQTUw
OTAxQkNGQkQ5NTAwRTM0RUY3IC8qIENvbXBvc2VkVHJlZUFuY2VzdG9ySXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0NEZBMTg1MUJDQTZCNUEwMDkxQjZFRiAvKiBDb21wb3NlZFRyZWVJ
dGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDgxNSw3ICszMDgxNCw2IEBACiAJCQkJMUE3
RkE2MTkwRERBM0IzQTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMTNFRjM0NDE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjkzOTcyNDFBNEE1QjY0MDBFODM0OUQgLyogTkZB
LmggaW4gSGVhZGVycyAqLywKLQkJCQlFNEU5NEQ2MTIyRkYxNThBMDBERDE5MUYgLyogQ29tcGxl
eExpbmVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2OTM5NzIyMUE0QTQxMkYwMEU4MzQ5
RCAvKiBORkFOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjc3MjYwMTFBNUIzQUQ5MDAzQzI0
REQgLyogTkZBVG9ERkEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUY0M0REMEU2NzQwMTIwMDFD
MTI4NyAvKiBOaW5lUGllY2VJbWFnZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJKHJldmlzaW9uIDI0ODUz
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ4NzQsNDkgKzQ4NzQsNTAgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6Om9wZQogCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikK
IAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KEltYWdlT3JpZW50YXRpb25FbnVtIGUpCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoSW1hZ2VPcmllbnRhdGlvbiBlKQogICAgIDogQ1NTVmFs
dWUoUHJpbWl0aXZlQ2xhc3MpCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19ERUc7
CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBPcmlnaW5Ub3BMZWZ0OgorICAgIGNhc2UgSW1h
Z2VPcmllbnRhdGlvbjo6T3JpZ2luVG9wTGVmdDoKICAgICAgICAgbV92YWx1ZS5udW0gPSAwOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIE9yaWdpblJpZ2h0VG9wOgorICAgIGNhc2UgSW1hZ2VP
cmllbnRhdGlvbjo6T3JpZ2luUmlnaHRUb3A6CiAgICAgICAgIG1fdmFsdWUubnVtID0gOTA7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3JpZ2luQm90dG9tUmlnaHQ6CisgICAgY2FzZSBJbWFn
ZU9yaWVudGF0aW9uOjpPcmlnaW5Cb3R0b21SaWdodDoKICAgICAgICAgbV92YWx1ZS5udW0gPSAx
ODA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3JpZ2luTGVmdEJvdHRvbToKKyAgICBjYXNl
IEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkxlZnRCb3R0b206CiAgICAgICAgIG1fdmFsdWUubnVt
ID0gMjcwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE9yaWdpblRvcFJpZ2h0OgotICAgIGNh
c2UgT3JpZ2luTGVmdFRvcDoKLSAgICBjYXNlIE9yaWdpbkJvdHRvbUxlZnQ6Ci0gICAgY2FzZSBP
cmlnaW5SaWdodEJvdHRvbToKKyAgICBjYXNlIEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZToK
KyAgICBjYXNlIEltYWdlT3JpZW50YXRpb246Ok9yaWdpblRvcFJpZ2h0OgorICAgIGNhc2UgSW1h
Z2VPcmllbnRhdGlvbjo6T3JpZ2luTGVmdFRvcDoKKyAgICBjYXNlIEltYWdlT3JpZW50YXRpb246
Ok9yaWdpbkJvdHRvbUxlZnQ6CisgICAgY2FzZSBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5SaWdo
dEJvdHRvbToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQogCi10ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgSW1hZ2VPcmllbnRhdGlv
bkVudW0oKSBjb25zdAordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJh
dG9yIEltYWdlT3JpZW50YXRpb24oKSBjb25zdAogewogICAgIEFTU0VSVChpc0FuZ2xlKCkpOwog
ICAgIGRvdWJsZSBxdWFydGVycyA9IDQgKiBkb3VibGVWYWx1ZShDU1NfVFVSTik7CiAgICAgaW50
IG9yaWVudGF0aW9uID0gMyAmIHN0YXRpY19jYXN0PGludD4ocXVhcnRlcnMgPCAwID8gZmxvb3Io
cXVhcnRlcnMpIDogY2VpbChxdWFydGVycykpOwogICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHsK
ICAgICBjYXNlIDA6Ci0gICAgICAgIHJldHVybiBPcmlnaW5Ub3BMZWZ0OworICAgICAgICByZXR1
cm4gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luVG9wTGVmdDsKICAgICBjYXNlIDE6Ci0gICAgICAg
IHJldHVybiBPcmlnaW5SaWdodFRvcDsKKyAgICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246
Ok9yaWdpblJpZ2h0VG9wOwogICAgIGNhc2UgMjoKLSAgICAgICAgcmV0dXJuIE9yaWdpbkJvdHRv
bVJpZ2h0OworICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luQm90dG9tUmln
aHQ7CiAgICAgY2FzZSAzOgotICAgICAgICByZXR1cm4gT3JpZ2luTGVmdEJvdHRvbTsKKyAgICAg
ICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkxlZnRCb3R0b207CiAgICAgfQogCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIE9yaWdpblRvcExlZnQ7CisgICAg
cmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok5vbmU7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQ1NT
X0lNQUdFX09SSUVOVEFUSU9OKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAJ
KHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NDQsNyArNTQ0LDcgQEAgRHJhZ0ltYWdlUmVmIERhdGFUcmFu
c2Zlcjo6Y3JlYXRlRHJhZ0ltYQogICAgIGxvY2F0aW9uID0gbV9kcmFnTG9jYXRpb247CiAKICAg
ICBpZiAobV9kcmFnSW1hZ2UpCi0gICAgICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1h
Z2UobV9kcmFnSW1hZ2UtPmltYWdlKCksIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShtX2RyYWdJbWFnZS0+aW1h
Z2UoKSwgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CiAKICAgICBpZiAobV9kcmFnSW1hZ2VFbGVt
ZW50KSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2RyYWdJbWFnZUVsZW1lbnQtPmRv
Y3VtZW50KCkuZnJhbWUoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEwLDE3ICs2MTAsMTAgQEAgdm9p
ZCBIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQoR3JhcGhpY3NDbwogCiAgICAgICAgIGlmIChzaG91
bGRQYWludCkgewogICAgICAgICAgICAgaWYgKGhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpKSB7Ci0g
ICAgICAgICAgICAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gYnVmZmVyKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKGltYWdlQnVmZmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICht
X3ByZXNlbnRlZEltYWdlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbjsKLSNpZiBFTkFCTEUoQ1NTX0lN
QUdFX09SSUVOVEFUSU9OKQotICAgICAgICAgICAgICAgICAgICAgICAgb3JpZW50YXRpb25EZXNj
cmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShyZW5kZXJlcigpLT5zdHlsZSgpLmltYWdl
T3JpZW50YXRpb24oKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlKCptX3ByZXNlbnRlZEltYWdlLCBzbmFwcGVkSW50UmVjdChyKSwgSW1hZ2VQYWlu
dGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbikpOwotICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KCppbWFnZUJ1ZmZlciwgc25hcHBlZEludFJlY3QocikpOwotICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBpZiAobV9wcmVzZW50ZWRJbWFnZSkKKyAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC5kcmF3SW1hZ2UoKm1fcHJlc2VudGVkSW1hZ2UsIHNuYXBwZWRJbnRSZWN0KHIpLCBy
ZW5kZXJlcigpLT5pbWFnZU9yaWVudGF0aW9uKCkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYg
KEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGJ1ZmZlcigpKQorICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIHNuYXBwZWRJbnRSZWN0KHIp
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGlzR1BVQmFzZWQoKSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAkocmV2aXNpb24g
MjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjgwLDcgKzI4MCw3IEBAIEZsb2F0U2l6ZSBDYWNoZWRJbWFnZTo6
aW1hZ2VTaXplRm9yUmVuZGUKICAgICBpZiAoIW1faW1hZ2UpCiAgICAgICAgIHJldHVybiB7IH07
CiAKLSAgICBpZiAoaXM8Qml0bWFwSW1hZ2U+KCptX2ltYWdlKSAmJiByZW5kZXJlciAmJiByZW5k
ZXJlci0+c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbikKKyAgICBpZiAoaXM8Qml0bWFwSW1hZ2U+KCptX2ltYWdlKSAmJiByZW5kZXJlciAm
JiByZW5kZXJlci0+aW1hZ2VPcmllbnRhdGlvbigpID09IEltYWdlT3JpZW50YXRpb246OkZyb21J
bWFnZSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEJpdG1hcEltYWdlPigqbV9pbWFnZSkuc2l6
ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpOwogCiAgICAgaWYgKGlzPFNWR0ltYWdlPigqbV9pbWFn
ZSkgJiYgc2l6ZVR5cGUgPT0gVXNlZFNpemUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOTcsMTAgKzExOTcsMTAgQEAg
dm9pZCBEcmFnQ29udHJvbGxlcjo6ZG9JbWFnZURyYWcoRWxlbWVudAogICAgIGlmICghZWxlbWVu
dC5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihlbGVtZW50LnJlbmRlcmVyKCktPnNob3Vs
ZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCksIGVsZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUoKS5p
bWFnZU9yaWVudGF0aW9uKCkpOworICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBl
bGVtZW50LnJlbmRlcmVyKCktPmltYWdlT3JpZW50YXRpb24oKTsKIAogICAgIEltYWdlKiBpbWFn
ZSA9IGdldEltYWdlKGVsZW1lbnQpOwotICAgIGlmIChpbWFnZSAmJiAhbGF5b3V0UmVjdC5pc0Vt
cHR5KCkgJiYgc2hvdWxkVXNlQ2FjaGVkSW1hZ2VGb3JEcmFnSW1hZ2UoKmltYWdlKSAmJiAoZHJh
Z0ltYWdlID0gRHJhZ0ltYWdlIHsgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLCBlbGVt
ZW50LnJlbmRlcmVyKCkgPyBvcmllbnRhdGlvbkRlc2NyaXB0aW9uIDogSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKCkpIH0pKSB7CisgICAgaWYgKGltYWdlICYmICFsYXlvdXRSZWN0LmlzRW1w
dHkoKSAmJiBzaG91bGRVc2VDYWNoZWRJbWFnZUZvckRyYWdJbWFnZSgqaW1hZ2UpICYmIChkcmFn
SW1hZ2UgPSBEcmFnSW1hZ2UgeyBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoaW1hZ2UsIG9yaWVu
dGF0aW9uKSB9KSkgewogICAgICAgICBkcmFnSW1hZ2UgPSBEcmFnSW1hZ2UgeyBmaXREcmFnSW1h
Z2VUb01heFNpemUoZHJhZ0ltYWdlLmdldCgpLCBsYXlvdXRSZWN0LnNpemUoKSwgbWF4RHJhZ0lt
YWdlU2l6ZSgpKSB9OwogICAgICAgICBJbnRTaXplIGZpdHRlZFNpemUgPSBkcmFnSW1hZ2VTaXpl
KGRyYWdJbWFnZS5nZXQoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJ
bWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdl
LmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0lt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDIwICsxMDIsMTUgQEAgc3RhdGljIERyYWdJ
bWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tUwogICAgIGlmICghc25hcHNob3QpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVu
dGF0aW9uOwotI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCisgICAgSW1hZ2VPcmll
bnRhdGlvbiBvcmllbnRhdGlvbjsKICAgICBpZiAobm9kZSkgewogICAgICAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKCFyZW5kZXJlciB8
fCAhaXM8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICAgICAgYXV0byYgcmVuZGVyRWxlbWVudCA9IGRvd25jYXN0PFJlbmRlckVsZW1l
bnQ+KCpyZW5kZXJlcik7Ci0gICAgICAgIG9yaWVudGF0aW9uLnNldFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uKHJlbmRlckVsZW1lbnQuc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSk7Ci0g
ICAgICAgIG9yaWVudGF0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHJlbmRlckVsZW1lbnQu
c3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOworICAgICAgICBvcmllbnRhdGlvbiA9IGRvd25j
YXN0PFJlbmRlckVsZW1lbnQ+KCpyZW5kZXJlcikuaW1hZ2VPcmllbnRhdGlvbigpOwogICAgIH0K
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG5vZGUpOwotI2VuZGlmCisKICAgICBSZWZQdHI8SW1h
Z2U+IGltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShzbmFwc2hvdCks
IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTMwNSw3ICszMDAsNyBAQCBEcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFn
SW1hZ2VUb0ZyYWN0aW9uCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLURyYWdJbWFnZVJlZiBj
cmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24pCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VP
cmllbnRhdGlvbikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRy
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgJKHJldmlzaW9uIDI0ODUzMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC04NCw3ICs4NCw3IEBAIERyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYK
IERyYWdJbWFnZVJlZiBwbGF0Zm9ybUFkanVzdERyYWdJbWFnZUZvckRldmljZVNjYWxlRmFjdG9y
KERyYWdJbWFnZVJlZiwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpOwogRHJhZ0ltYWdlUmVmIGRp
c3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFnSW1hZ2VSZWYsIGZsb2F0IGRlbHRhKTsKIAot
RHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSosIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbik7CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdl
KEltYWdlKiwgSW1hZ2VPcmllbnRhdGlvbik7CiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdl
SWNvbkZvckNhY2hlZEltYWdlRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CiAKIFdFQkNPUkVfRVhQ
T1JUIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKEZyYW1lJiwgTm9kZSYpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsNyArMTgzLDcgQEAgYm9v
bCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYKIAotSW1hZ2VEcmF3UmVz
dWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBCaXRt
YXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3As
IEJsZW5kTW9kZSBtb2RlLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKQogewogICAgIGlmIChkZXN0UmVjdC5pc0VtcHR5KCkgfHwgc3JjUmVj
dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7
CkBAIC0yNjgsOCArMjY4LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdy
YXBoaQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24oZGVzY3JpcHRpb24uaW1hZ2VPcmllbnRhdGlvbigpKTsKLSAgICBpZiAo
ZGVzY3JpcHRpb24ucmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbikKKyAgICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUlt
YWdlKQogICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3Vy
cmVudEZyYW1lKTsKIAogICAgIGRyYXdOYXRpdmVJbWFnZShpbWFnZSwgY29udGV4dCwgZGVzdFJl
Y3QsIHNyY1JlY3QsIEludFNpemUoc2l6ZSgpKSwgb3AsIG1vZGUsIG9yaWVudGF0aW9uKTsKQEAg
LTMwNiw3ICszMDUsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
CiAgICAgICAgIC8vIFRlbXBvcmFyaWx5IHJlc2V0IGltYWdlIG9ic2VydmVyLCB3ZSBkb24ndCB3
YW50IHRvIHJlY2VpdmUgYW55IGNoYW5nZUluUmVjdCgpIGNhbGxzIGR1ZSB0byB0aGlzIHJlbGF5
b3V0LgogICAgICAgICBzZXRJbWFnZU9ic2VydmVyKG51bGxwdHIpOwogCi0gICAgICAgIGRyYXco
YnVmZmVyLT5jb250ZXh0KCksIHRpbGVSZWN0LCB0aWxlUmVjdCwgb3AsIGJsZW5kTW9kZSwgRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwor
ICAgICAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCB0aWxlUmVjdCwgdGlsZVJlY3QsIG9wLCBi
bGVuZE1vZGUsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5v
bmUpOwogCiAgICAgICAgIHNldEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwogICAgICAgICBidWZm
ZXItPmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMTYxLDcgKzE2MSw3IEBAIHByb3RlY3RlZDoKICAgICAvLyB8ZGVzdHJveUFsbHwgYWxv
bmcuCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lB
bGwgPSB0cnVlKTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSBvdmVycmlkZTsKICNpZiBQTEFURk9STShXSU4pCiAg
ICAgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVP
cGVyYXRvcikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCShyZXZpc2lv
biAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBD
cm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd0Nyb3NzZgogICAgIGNvbnRleHQuZW5kVHJhbnNw
YXJlbmN5TGF5ZXIoKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IENyb3NzZmFkZUdlbmVyYXRlZElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJh
dyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxl
bmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICBjb250
ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRTaXplIHNpemUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2Nyb3NzZmFkZVNpemU7IH0KIAogcHJvdGVjdGVkOgotICAgIElt
YWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7
CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAogICAg
IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlJiBmcm9tSW1hZ2UsIEltYWdlJiB0b0ltYWdl
LCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0
IEZsb2F0U2l6ZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzAsNyArMTcwLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1h
Z2U6OmRvQ3VzdAogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKLUlt
YWdlRHJhd1Jlc3VsdCBDdXN0b21QYWludEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVz
dENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUs
IERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorSW1hZ2VEcmF3UmVz
dWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdN
b2RlLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihkZXN0Q29udGV4dCk7CiAgICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaAkocmV2aXNpb24gMjQ4
NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAKICAgICBJbWFn
ZURyYXdSZXN1bHQgZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNp
emUmKTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikgZmluYWw7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikg
ZmluYWw7CiAgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7
CiAKICAgICBXZWFrUHRyPFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24+
IG1fcGFpbnREZWZpbml0aW9uOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR2VuZXJhdGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShi
b29sIC8qZGVzdHJveUFsbCovID0gdHJ1ZSkgb3ZlcnJpZGUgeyB9CiAKIHByb3RlY3RlZDoKLSAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJy
aWRlID0gMDsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVy
cmlkZSA9IDA7CiAgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSkgb3ZlcnJpZGUgPSAwOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDcgKzM5LDcgQEAgR3JhZGllbnRJbWFnZTo6R3JhZGllbnRJbWFnZShHcmFk
aWVudCYgZwogCiBHcmFkaWVudEltYWdlOjp+R3JhZGllbnRJbWFnZSgpID0gZGVmYXVsdDsKIAot
SW1hZ2VEcmF3UmVzdWx0IEdyYWRpZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0
Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
RGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCitJbWFnZURyYXdSZXN1
bHQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUs
IEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGRlc3RDb250ZXh0KTsKICAgICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRp
b24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCShyZXZpc2lvbiAyNDg1MzApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBHcmFkaWVudElt
YWdlKEdyYWRpZW50JiwgY29uc3QgRmxvYXRTaXplJik7CiAKLSAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdN
b2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIGZpbmFsOworICAgIEltYWdlRHJhd1Jl
c3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNv
ZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIGZpbmFsOwogICAgIHZvaWQgZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOwogICAgIGJvb2wgaXNHcmFkaWVudEltYWdlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgZHVtcChXVEY6OlRleHRTdHJl
YW0mKSBjb25zdCBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzMzLDcgKzczMyw3IEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWEKICAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd0ltYWdlKGltYWdlLCBkZXN0
aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiAKICAgICBJbnRlcnBvbGF0
aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRo
aXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJl
dHVybiBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5k
TW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdP
cHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CisgICAgcmV0dXJuIGltYWdlLmRyYXco
KnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9z
aXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50
aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRh
dGlvbik7CiB9CiAKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZElt
YWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0
aW9ucykKQEAgLTc0NSw3ICs3NDUsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3VGlsCiAgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdUaWxlZEltYWdlKGltYWdlLCBk
ZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1hZ2VQYWludGluZ09wdGlv
bnMpOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25R
dWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9s
YXRpb25RdWFsaXR5KTsKLSAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5h
dGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9j
b21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdl
UGFpbnRpbmdPcHRpb25zLm1fZGVjb2RpbmdNb2RlKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhd1Rp
bGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1hZ2VQ
YWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMu
bV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fZGVjb2RpbmdNb2RlLCBpbWFnZVBh
aW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uKTsKIH0KIAogSW1hZ2VEcmF3UmVzdWx0IEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0
aWxlU2NhbGVGYWN0b3IsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTIxMSwyOSArMjExLDI5IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CiB9Owog
CiBzdHJ1Y3QgSW1hZ2VQYWludGluZ09wdGlvbnMgewotICAgIEltYWdlUGFpbnRpbmdPcHRpb25z
KENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zl
ciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGUg
ZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24gPSBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24oKSwgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBJ
bnRlcnBvbGF0aW9uRGVmYXVsdCkKKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9k
ZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9k
ZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRp
b24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBv
bGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0KQogICAgICAgICA6IG1fY29tcG9z
aXRlT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0b3IpCiAgICAgICAgICwgbV9ibGVuZE1vZGUoYmxl
bmRNb2RlKQogICAgICAgICAsIG1fZGVjb2RpbmdNb2RlKGRlY29kaW5nTW9kZSkKLSAgICAgICAg
LCBtX29yaWVudGF0aW9uRGVzY3JpcHRpb24ob3JpZW50YXRpb25EZXNjcmlwdGlvbikKKyAgICAg
ICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQogICAgICAgICAsIG1faW50ZXJwb2xhdGlv
blF1YWxpdHkoaW50ZXJwb2xhdGlvblF1YWxpdHkpCiAgICAgewogICAgIH0KIAotICAgIEltYWdl
UGFpbnRpbmdPcHRpb25zKEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRl
c2NyaXB0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IElu
dGVycG9sYXRpb25EZWZhdWx0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9
IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5v
cm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25v
dXMpCisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMoSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
biwgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBJbnRlcnBvbGF0
aW9uRGVmYXVsdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3Np
dGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgYmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIERl
Y29kaW5nTW9kZSBkZWNvZGluZ01vZGUgPSBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKQogICAg
ICAgICA6IG1fY29tcG9zaXRlT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0b3IpCiAgICAgICAgICwg
bV9ibGVuZE1vZGUoYmxlbmRNb2RlKQogICAgICAgICAsIG1fZGVjb2RpbmdNb2RlKGRlY29kaW5n
TW9kZSkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uRGVzY3JpcHRpb24ob3JpZW50YXRpb25EZXNj
cmlwdGlvbikKKyAgICAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQogICAgICAgICAs
IG1faW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlvblF1YWxpdHkpCiAgICAgewogICAg
IH0KIAotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEludGVycG9sYXRpb25RdWFsaXR5IGludGVy
cG9sYXRpb25RdWFsaXR5LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25E
ZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBi
bGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9
IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpCisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMoSW50
ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHksIEltYWdlT3JpZW50YXRpb24g
b3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lLCBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1v
ZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERlY29k
aW5nTW9kZTo6U3luY2hyb25vdXMpCiAgICAgICAgIDogbV9jb21wb3NpdGVPcGVyYXRvcihjb21w
b3NpdGVPcGVyYXRvcikKICAgICAgICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUpCiAgICAgICAg
ICwgbV9kZWNvZGluZ01vZGUoZGVjb2RpbmdNb2RlKQotICAgICAgICAsIG1fb3JpZW50YXRpb25E
ZXNjcmlwdGlvbihvcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorICAgICAgICAsIG1fb3JpZW50YXRp
b24ob3JpZW50YXRpb24pCiAgICAgICAgICwgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eShpbnRlcnBv
bGF0aW9uUXVhbGl0eSkKICAgICB7CiAgICAgfQpAQCAtMjQzLDcgKzI0Myw3IEBAIHN0cnVjdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyB7CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9jb21wb3NpdGVP
cGVyYXRvcjsKICAgICBCbGVuZE1vZGUgbV9ibGVuZE1vZGU7CiAgICAgRGVjb2RpbmdNb2RlIG1f
ZGVjb2RpbmdNb2RlOwotICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBtX29yaWVudGF0
aW9uRGVzY3JpcHRpb247CisgICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOwogICAg
IEludGVycG9sYXRpb25RdWFsaXR5IG1faW50ZXJwb2xhdGlvblF1YWxpdHk7CiB9OwogCkBAIC0z
NDcsNyArMzQ3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBz
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAogI2lmIFVTRShDRykgfHwgVVNFKERJ
UkVDVDJEKSB8fCBVU0UoQ0FJUk8pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBv
c2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2Rl
OjpOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uKCkpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwg
Y29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uID0g
SW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CiAjZW5kaWYKIAogI2lmIFVTRShDRykgfHwgVVNFKERJ
UkVDVDJEKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCwxMyArNDAsMTMgQEAgR3JhcGhpY3NDb250ZXh0SW1wbDo6fkdyYXBo
aWNzQ29udGV4dEltcAogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdJ
bWFnZUltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7CiAgICAgSW50ZXJwb2xh
dGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNv
bnRleHQsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAg
IHJldHVybiBpbWFnZS5kcmF3KGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1f
YmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWlu
dGluZ09wdGlvbnMubV9vcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKKyAgICByZXR1cm4gaW1hZ2Uu
ZHJhdyhjb250ZXh0LCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5t
X2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1f
b3JpZW50YXRpb24pOwogfQogCiBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6
ZHJhd1RpbGVkSW1hZ2VJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2Us
IGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewogICAgIElu
dGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNT
Y29wZShjb250ZXh0LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5
KTsKLSAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3Vy
Y2UsIHRpbGVTaXplLCBzcGFjaW5nLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9kZWNvZGluZ01vZGUpOworICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoY29udGV4
dCwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRpbmdP
cHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRN
b2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9vcmllbnRhdGlvbik7CiB9CiAKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRl
eHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxl
IGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBpbWFnZVBhaW50aW5nT3B0aW9ucykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSw3
IEBAIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYKICAgICAgICAgaW1h
Z2VPYnNlcnZlcigpLT5kaWREcmF3KCp0aGlzKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEltYWdl
OjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRU
aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSkKK0ltYWdlRHJh
d1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0
U2l6ZSYgc2NhbGVkVGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSBkZWNvZGluZ01v
ZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgQ29sb3IgY29sb3IgPSBz
aW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7CkBAIC0x
ODQsNyArMTg0LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpYwog
ICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRZKChkZXN0UmVjdC55KCkgLSBvbmVUaWxlUmVjdC55
KCkpIC8gc2NhbGUuaGVpZ2h0KCkpOwogICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0aChk
ZXN0UmVjdC53aWR0aCgpIC8gc2NhbGUud2lkdGgoKSk7CiAgICAgICAgIHZpc2libGVTcmNSZWN0
LnNldEhlaWdodChkZXN0UmVjdC5oZWlnaHQoKSAvIHNjYWxlLmhlaWdodCgpKTsKLSAgICAgICAg
cmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBvcCwgYmxlbmRNb2Rl
LCBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAg
cmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBvcCwgYmxlbmRNb2Rl
LCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKICAgICB9CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQpAQCAtMTk2LDcgKzE5Niw3IEBAIEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1Rp
bGVkKEdyYXBoaWMKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFkoKGRlc3RSZWN0Lnko
KSAtIG9uZVRpbGVSZWN0LnkoKSkgLyBzY2FsZS5oZWlnaHQoKSk7CiAgICAgICAgICAgICB2aXNp
YmxlU3JjUmVjdC5zZXRXaWR0aCgxKTsKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldEhl
aWdodChkZXN0UmVjdC5oZWlnaHQoKSAvIHNjYWxlLmhlaWdodCgpKTsKLSAgICAgICAgICAgIHJl
dHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZTo6
Tm9ybWFsLCBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAg
ICAgICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3As
IEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKICAgICAgICAg
fQogICAgICAgICBpZiAoc2l6ZSgpLmhlaWdodCgpID09IDEgJiYgaW50ZXJzZWN0aW9uKG9uZVRp
bGVSZWN0LCBkZXN0UmVjdCkud2lkdGgoKSA9PSBkZXN0UmVjdC53aWR0aCgpKSB7CiAgICAgICAg
ICAgICBGbG9hdFJlY3QgdmlzaWJsZVNyY1JlY3Q7CkBAIC0yMDQsNyArMjA0LDcgQEAgSW1hZ2VE
cmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpYwogICAgICAgICAgICAgdmlzaWJsZVNy
Y1JlY3Quc2V0WSgwKTsKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKGRlc3RS
ZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0aCgpKTsKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0
LnNldEhlaWdodCgxKTsKLSAgICAgICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2
aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybiBkcmF3KGN0eHQs
IGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGlu
Z01vZGUsIG9yaWVudGF0aW9uKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMjM2LDcg
KzIzNiw3IEBAIEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWMKICAgICAg
ICAgICAgICAgICBGbG9hdFJlY3QgZnJvbVJlY3QodG9GbG9hdFBvaW50KGN1cnJlbnRUaWxlUmVj
dC5sb2NhdGlvbigpIC0gb25lVGlsZVJlY3QubG9jYXRpb24oKSksIGN1cnJlbnRUaWxlUmVjdC5z
aXplKCkpOwogICAgICAgICAgICAgICAgIGZyb21SZWN0LnNjYWxlKDEgLyBzY2FsZS53aWR0aCgp
LCAxIC8gc2NhbGUuaGVpZ2h0KCkpOwogCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZHJhdyhj
dHh0LCB0b1JlY3QsIGZyb21SZWN0LCBvcCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IGRyYXcoY3R4dCwgdG9SZWN0LCBmcm9tUmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBk
ZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09
IEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVxdWVzdERlY29kaW5nKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgIHRvWCArPSBjdXJyZW50VGlsZVJlY3Qu
d2lkdGgoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAko
cmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTkwLDggKzE5MCw4IEBAIHByb3RlY3RlZDoKICNpZiBQ
TEFURk9STShXSU4pCiAgICAgdmlydHVhbCB2b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6
ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNp
emUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yKSB7IH0KICNlbmRpZgotICAgIHZpcnR1YWwg
SW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSA9IDA7Ci0g
ICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNp
emUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSk7CisgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQg
ZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdN
b2RlLCBJbWFnZU9yaWVudGF0aW9uKSA9IDA7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxl
ZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbik7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZChHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBU
aWxlUnVsZSB2UnVsZSwgQ29tcG9zaXRlT3BlcmF0b3IpOwogCiAgICAgLy8gU3VwcG9ydGluZyB0
aWxlZCBkcmF3aW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VGcmFtZS5oCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAg
cHJpdmF0ZToKICAgICBTdWJzYW1wbGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbCB7IFN1YnNh
bXBsaW5nTGV2ZWw6OkRlZmF1bHQgfTsKICAgICBEZWNvZGluZ09wdGlvbnMgbV9kZWNvZGluZ09w
dGlvbnM7CiAKLSAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24geyBEZWZhdWx0SW1h
Z2VPcmllbnRhdGlvbiB9OworICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IElt
YWdlT3JpZW50YXRpb246Ok5vbmUgfTsKICAgICBTZWNvbmRzIG1fZHVyYXRpb247CiAgICAgYm9v
bCBtX2hhc0FscGhhIHsgdHJ1ZSB9OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwCShyZXZpc2lvbiAyNDg1
MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9u
LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDYzICswLDAgQEAKLQotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCi0KLSNpbmNsdWRlICJBZmZp
bmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJGbG9hdFNpemUuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1BZmZpbmVUcmFuc2Zvcm0gSW1hZ2VPcmllbnRhdGlvbjo6dHJhbnNmb3JtRnJvbURl
ZmF1bHQoY29uc3QgRmxvYXRTaXplJiBkcmF3blNpemUpIGNvbnN0Ci17Ci0gICAgZmxvYXQgdyA9
IGRyYXduU2l6ZS53aWR0aCgpOwotICAgIGZsb2F0IGggPSBkcmF3blNpemUuaGVpZ2h0KCk7Ci0K
LSAgICBzd2l0Y2ggKG1fb3JpZW50YXRpb24pIHsKLSAgICBjYXNlIE9yaWdpblRvcExlZnQ6Ci0g
ICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKLSAgICBjYXNlIE9yaWdpblRvcFJpZ2h0
OgotICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKC0xLCAgMCwgIDAsICAxLCAgdywgMCk7
Ci0gICAgY2FzZSBPcmlnaW5Cb3R0b21SaWdodDoKLSAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5z
Zm9ybSgtMSwgIDAsICAwLCAtMSwgIHcsIGgpOwotICAgIGNhc2UgT3JpZ2luQm90dG9tTGVmdDoK
LSAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSggMSwgIDAsICAwLCAtMSwgIDAsIGgpOwot
ICAgIGNhc2UgT3JpZ2luTGVmdFRvcDoKLSAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgg
MCwgIDEsICAxLCAgMCwgIDAsIDApOwotICAgIGNhc2UgT3JpZ2luUmlnaHRUb3A6Ci0gICAgICAg
IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oIDAsICAxLCAtMSwgIDAsICB3LCAwKTsKLSAgICBjYXNl
IE9yaWdpblJpZ2h0Qm90dG9tOgotICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCAwLCAt
MSwgLTEsICAwLCAgdywgaCk7Ci0gICAgY2FzZSBPcmlnaW5MZWZ0Qm90dG9tOgotICAgICAgICBy
ZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCAwLCAtMSwgIDEsICAwLCAgMCwgaCk7Ci0gICAgfQotCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5oCShyZXZpc2lvbiAyNDg1MzAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIzLDEwNyArMjQsMTAwIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
Zm5kZWYgSW1hZ2VPcmllbnRhdGlvbl9oCi0jZGVmaW5lIEltYWdlT3JpZW50YXRpb25faAorI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJGbG9h
dFNpemUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBZmZpbmVUcmFuc2Zvcm07
Ci1jbGFzcyBGbG9hdFNpemU7CitzdHJ1Y3QgSW1hZ2VPcmllbnRhdGlvbiB7CisgICAgZW51bSBP
cmllbnRhdGlvbiB7CisgICAgICAgIEZyb21JbWFnZSAgICAgICAgID0gMCwgLy8gT3JpZW50YXRp
b24gZnJvbSB0aGUgaW1hZ2Ugc2hvdWxkIGJlIHJlc3BlY3RlZC4KKworICAgICAgICAvLyBUaGlz
IHJhbmdlIGludGVudGlvbmFsbHkgbWF0Y2hlcyB0aGUgb3JpZW50YXRpb24gdmFsdWVzIGZyb20g
dGhlIEVYSUYgc3BlYy4KKyAgICAgICAgLy8gU2VlIEpFSVRBIENQLTM0NTEsIHBhZ2UgMTguIGh0
dHA6Ly93d3cuZXhpZi5vcmcvRXhpZjItMi5QREYKKyAgICAgICAgT3JpZ2luVG9wTGVmdCAgICAg
PSAxLCAvLyBkZWZhdWx0CisgICAgICAgIE9yaWdpblRvcFJpZ2h0ICAgID0gMiwgLy8gbWlycm9y
IGFsb25nIHktYXhpcworICAgICAgICBPcmlnaW5Cb3R0b21SaWdodCA9IDMsIC8vIDE4MCBkZWdy
ZWUgcm90YXRpb24KKyAgICAgICAgT3JpZ2luQm90dG9tTGVmdCAgPSA0LCAvLyBtaXJyb3IgYWxv
bmcgdGhlIHgtYXhpcworICAgICAgICBPcmlnaW5MZWZ0VG9wICAgICA9IDUsIC8vIG1pcnJvciBh
bG9uZyB4LWF4aXMgKyAyNzAgZGVncmVlIENXIHJvdGF0aW9uCisgICAgICAgIE9yaWdpblJpZ2h0
VG9wICAgID0gNiwgLy8gOTAgZGVncmVlIENXIHJvdGF0aW9uCisgICAgICAgIE9yaWdpblJpZ2h0
Qm90dG9tID0gNywgLy8gbWlycm9yIGFsb25nIHgtYXhpcyArIDkwIGRlZ3JlZSBDVyByb3RhdGlv
bgorICAgICAgICBPcmlnaW5MZWZ0Qm90dG9tICA9IDgsIC8vIDI3MCBkZWdyZWUgQ1cgcm90YXRp
b24KIAotLy8gVGhpcyBlbnVtIGludGVudGlvbmFsbHkgbWF0Y2hlcyB0aGUgb3JpZW50YXRpb24g
dmFsdWVzIGZyb20gdGhlIEVYSUYgc3BlYy4KLS8vIFNlZSBKRUlUQSBDUC0zNDUxLCBwYWdlIDE4
LiBodHRwOi8vd3d3LmV4aWYub3JnL0V4aWYyLTIuUERGCi1lbnVtIEltYWdlT3JpZW50YXRpb25F
bnVtIHsKLSAgICAvLyAiVG9wTGVmdCIgbWVhbnMgdGhhdCB0aGUgMCByb3cgc3RhcnRzIGF0IHRo
ZSBUb3AsIHRoZSAwIGNvbHVtbiBzdGFydHMgYXQgdGhlIExlZnQuCi0gICAgT3JpZ2luVG9wTGVm
dCA9IDEsIC8vIGRlZmF1bHQKLSAgICBPcmlnaW5Ub3BSaWdodCA9IDIsIC8vIG1pcnJvciBhbG9u
ZyB5LWF4aXMKLSAgICBPcmlnaW5Cb3R0b21SaWdodCA9IDMsIC8vIDE4MCBkZWdyZWUgcm90YXRp
b24KLSAgICBPcmlnaW5Cb3R0b21MZWZ0ID0gNCwgLy8gbWlycm9yIGFsb25nIHRoZSB4LWF4aXMK
LSAgICBPcmlnaW5MZWZ0VG9wID0gNSwgLy8gbWlycm9yIGFsb25nIHgtYXhpcyArIDI3MCBkZWdy
ZWUgQ1cgcm90YXRpb24KLSAgICBPcmlnaW5SaWdodFRvcCA9IDYsIC8vIDkwIGRlZ3JlZSBDVyBy
b3RhdGlvbgotICAgIE9yaWdpblJpZ2h0Qm90dG9tID0gNywgLy8gbWlycm9yIGFsb25nIHgtYXhp
cyArIDkwIGRlZ3JlZSBDVyByb3RhdGlvbgotICAgIE9yaWdpbkxlZnRCb3R0b20gPSA4LCAvLyAy
NzAgZGVncmVlIENXIHJvdGF0aW9uCi0gICAgLy8gQWxsIG90aGVyIHZhbHVlcyBhcmUgInJlc2Vy
dmVkIiBhcyBvZiBFWElGIDIuMgotICAgIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uID0gT3JpZ2lu
VG9wTGVmdCwKLX07CisgICAgICAgIE5vbmUgICAgICAgICAgICAgID0gT3JpZ2luVG9wTGVmdAor
ICAgIH07CiAKLWVudW0gUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHsKLSAgICBEb05vdFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uID0gMCwKLSAgICBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9
IDEKLX07CisgICAgSW1hZ2VPcmllbnRhdGlvbigpID0gZGVmYXVsdDsKIAotc3RydWN0IEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbiB7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
biwKLSAgICAgICAgSW1hZ2VPcmllbnRhdGlvbkVudW0gb3JpZW50YXRpb24pCi0gICAgICAgIDog
bV9yZXNwZWN0T3JpZW50YXRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCi0gICAg
ICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKKyAgICBJbWFnZU9yaWVudGF0aW9uKE9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKQorICAgICAgICA6IG1fb3JpZW50YXRpb24ob3JpZW50YXRp
b24pCiAgICAgewogICAgIH0KIAotICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpCi0g
ICAgICAgIDogbV9yZXNwZWN0T3JpZW50YXRpb24oRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bikKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKQorICAg
IHN0YXRpYyBPcmllbnRhdGlvbiBmcm9tRVhJRlZhbHVlKGludCBleGlmVmFsdWUpCiAgICAgewor
ICAgICAgICByZXR1cm4gaXNWYWxpZEVYSUZPcmllbnRhdGlvbihleGlmVmFsdWUpID8gc3RhdGlj
X2Nhc3Q8T3JpZW50YXRpb24+KGV4aWZWYWx1ZSkgOiBOb25lOwogICAgIH0KIAotICAgIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbihSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxk
UmVzcGVjdEltYWdlT3JpZW50YXRpb24pCi0gICAgICAgIDogbV9yZXNwZWN0T3JpZW50YXRpb24o
c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihE
ZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikKKyAgICBvcGVyYXRvciBPcmllbnRhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKworICAgIGJvb2wgdXNlc1dpZHRoQXNIZWlnaHQo
KSBjb25zdAogICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVmFsaWRFWElGT3JpZW50YXRpb24obV9v
cmllbnRhdGlvbikpOworICAgICAgICAvLyBWYWx1ZXMgNSB0aHJvdWdoIDggYWxsIGZsaXAgdGhl
IHdpZHRoL2hlaWdodC4KKyAgICAgICAgcmV0dXJuIG1fb3JpZW50YXRpb24gPj0gT3JpZ2luTGVm
dFRvcCAmJiBtX29yaWVudGF0aW9uIDw9IE9yaWdpbkxlZnRCb3R0b207CiAgICAgfQogCi0gICAg
dm9pZCBzZXRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbihSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVu
dW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pIHsgbV9yZXNwZWN0T3JpZW50YXRpb24g
PSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbjsgfQotICAgIFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uRW51bSByZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpIHsgcmV0dXJuIG1fcmVzcGVjdE9y
aWVudGF0aW9uOyB9CisgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybUZyb21EZWZhdWx0KGNv
bnN0IEZsb2F0U2l6ZSYgZHJhd25TaXplKSBjb25zdAorICAgIHsKKyAgICAgICAgZmxvYXQgdyA9
IGRyYXduU2l6ZS53aWR0aCgpOworICAgICAgICBmbG9hdCBoID0gZHJhd25TaXplLmhlaWdodCgp
OwogCi0gICAgdm9pZCBzZXRJbWFnZU9yaWVudGF0aW9uRW51bShJbWFnZU9yaWVudGF0aW9uRW51
bSBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247IH0KLSAgICBJbWFn
ZU9yaWVudGF0aW9uRW51bSBpbWFnZU9yaWVudGF0aW9uKCkgeyByZXR1cm4gbV9vcmllbnRhdGlv
bjsgfQorICAgICAgICBzd2l0Y2ggKG1fb3JpZW50YXRpb24pIHsKKyAgICAgICAgY2FzZSBGcm9t
SW1hZ2U6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJl
dHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKKyAgICAgICAgY2FzZSBPcmlnaW5Ub3BMZWZ0OgorICAg
ICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOworICAgICAgICBjYXNlIE9yaWdpblRv
cFJpZ2h0OgorICAgICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgtMSwgIDAsICAwLCAg
MSwgIHcsIDApOworICAgICAgICBjYXNlIE9yaWdpbkJvdHRvbVJpZ2h0OgorICAgICAgICAgICAg
cmV0dXJuIEFmZmluZVRyYW5zZm9ybSgtMSwgIDAsICAwLCAtMSwgIHcsIGgpOworICAgICAgICBj
YXNlIE9yaWdpbkJvdHRvbUxlZnQ6CisgICAgICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3Jt
KCAxLCAgMCwgIDAsIC0xLCAgMCwgaCk7CisgICAgICAgIGNhc2UgT3JpZ2luTGVmdFRvcDoKKyAg
ICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oIDAsICAxLCAgMSwgIDAsICAwLCAwKTsK
KyAgICAgICAgY2FzZSBPcmlnaW5SaWdodFRvcDoKKyAgICAgICAgICAgIHJldHVybiBBZmZpbmVU
cmFuc2Zvcm0oIDAsICAxLCAtMSwgIDAsICB3LCAwKTsKKyAgICAgICAgY2FzZSBPcmlnaW5SaWdo
dEJvdHRvbToKKyAgICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oIDAsIC0xLCAtMSwg
IDAsICB3LCBoKTsKKyAgICAgICAgY2FzZSBPcmlnaW5MZWZ0Qm90dG9tOgorICAgICAgICAgICAg
cmV0dXJuIEFmZmluZVRyYW5zZm9ybSggMCwgLTEsICAxLCAgMCwgIDAsIGgpOworICAgICAgICB9
CiAKLSAgICBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gbV9yZXNwZWN0T3JpZW50YXRpb247
Ci0gICAgSW1hZ2VPcmllbnRhdGlvbkVudW0gbV9vcmllbnRhdGlvbjsKLX07Ci0KLWNsYXNzIElt
YWdlT3JpZW50YXRpb24gewotcHVibGljOgotICAgIEltYWdlT3JpZW50YXRpb24oKQotICAgICAg
ICA6IG1fb3JpZW50YXRpb24oRGVmYXVsdEltYWdlT3JpZW50YXRpb24pCi0gICAgeworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgp
OwogICAgIH0KIAotICAgIGV4cGxpY2l0IEltYWdlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlv
bkVudW0gb3JpZW50YXRpb24pCi0gICAgICAgIDogbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikK
LSAgICB7Ci0gICAgfQorcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgT3JpZW50YXRpb24gRVhJ
RkZpcnN0ID0gT3JpZ2luVG9wTGVmdDsKKyAgICBzdGF0aWMgY29uc3QgT3JpZW50YXRpb24gRVhJ
Rkxhc3QgPSBPcmlnaW5MZWZ0Qm90dG9tOworICAgIHN0YXRpYyBjb25zdCBPcmllbnRhdGlvbiBG
aXJzdCA9IEZyb21JbWFnZTsKKyAgICBzdGF0aWMgY29uc3QgT3JpZW50YXRpb24gTGFzdCA9IEVY
SUZMYXN0OwogCi0gICAgYm9vbCB1c2VzV2lkdGhBc0hlaWdodCgpIGNvbnN0CisgICAgc3RhdGlj
IGJvb2wgaXNWYWxpZE9yaWVudGF0aW9uKGludCBvcmllbnRhdGlvbikKICAgICB7Ci0gICAgICAg
IC8vIFZhbHVlcyA1IHRocm91Z2ggOCBhbGwgZmxpcCB0aGUgd2lkdGgvaGVpZ2h0LgotICAgICAg
ICByZXR1cm4gbV9vcmllbnRhdGlvbiA+PSBPcmlnaW5MZWZ0VG9wOworICAgICAgICByZXR1cm4g
b3JpZW50YXRpb24gPj0gc3RhdGljX2Nhc3Q8aW50PihGaXJzdCkgJiYgb3JpZW50YXRpb24gPD0g
c3RhdGljX2Nhc3Q8aW50PihMYXN0KTsKICAgICB9CiAKLSAgICAvLyBJbWFnZU9yaWVudGF0aW9u
RW51bSBjdXJyZW50bHkgbWF0Y2hlcyBFWElGIHZhbHVlcywgaG93ZXZlciBjb2RlIG91dHNpZGUK
LSAgICAvLyB0aGlzIGZ1bmN0aW9uIHNob3VsZCBuZXZlciBhc3N1bWUgdGhhdC4KLSAgICBzdGF0
aWMgSW1hZ2VPcmllbnRhdGlvbiBmcm9tRVhJRlZhbHVlKGludCBleGlmVmFsdWUpCisgICAgc3Rh
dGljIGJvb2wgaXNWYWxpZEVYSUZPcmllbnRhdGlvbihpbnQgb3JpZW50YXRpb24pCiAgICAgewot
ICAgICAgICAvLyBWYWx1ZXMgZGlyZWN0IGZyb20gaW1hZ2VzIG1heSBiZSBpbnZhbGlkLCBpbiB3
aGljaCBjYXNlIHdlIHVzZSB0aGUgZGVmYXVsdC4KLSAgICAgICAgaWYgKGV4aWZWYWx1ZSA8IE9y
aWdpblRvcExlZnQgfHwgZXhpZlZhbHVlID4gT3JpZ2luTGVmdEJvdHRvbSkKLSAgICAgICAgICAg
IHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7Ci0gICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0
aW9uKHN0YXRpY19jYXN0PEltYWdlT3JpZW50YXRpb25FbnVtPihleGlmVmFsdWUpKTsKKyAgICAg
ICAgcmV0dXJuIG9yaWVudGF0aW9uID49IHN0YXRpY19jYXN0PGludD4oRVhJRkZpcnN0KSAmJiBv
cmllbnRhdGlvbiA8PSBzdGF0aWNfY2FzdDxpbnQ+KEVYSUZMYXN0KTsKICAgICB9CiAKLSAgICAv
LyBUaGlzIHRyYW5zZm9ybSBjYW4gYmUgdXNlZCBmb3IgZHJhd2luZyBhbiBpbWFnZSBhY2NvcmRp
bmcgdG8gdGhlIG9yaWVudGF0aW9uLgotICAgIC8vIEl0IHNob3VsZCBiZSB1c2VkIGluIGEgcmln
aHQtaGFuZGVkIGNvb3JkaW5hdGUgc3lzdGVtLgotICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zv
cm1Gcm9tRGVmYXVsdChjb25zdCBGbG9hdFNpemUmIGRyYXduU2l6ZSkgY29uc3Q7Ci0KLSAgICBp
bmxpbmUgb3BlcmF0b3IgSW1hZ2VPcmllbnRhdGlvbkVudW0oKSBjb25zdCB7IHJldHVybiBtX29y
aWVudGF0aW9uOyB9Ci0gICAgCi0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbWFn
ZU9yaWVudGF0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3RoZXIubV9vcmllbnRhdGlvbiA9
PSBtX29yaWVudGF0aW9uOyB9Ci0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbWFn
ZU9yaWVudGF0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0K
LQotcHJpdmF0ZToKLSAgICAvLyBGSVhNRTogVGhpcyBvbmx5IG5lZWRzIHRvIGJlIG9uZSBieXRl
LgotICAgIEltYWdlT3JpZW50YXRpb25FbnVtIG1fb3JpZW50YXRpb247CisgICAgT3JpZW50YXRp
b24gbV9vcmllbnRhdGlvbiB7IE5vbmUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEltYWdlT3JpZW50YXRpb25faApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAkocmV2aXNpb24gMjQ4NTMwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02ODksNyArNjg5LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6ZHVtcChUZXh0
U3RyZWFtJiB0cykKICAgICB0cy5kdW1wUHJvcGVydHkoInNvbGlkLWNvbG9yIiwgc2luZ2xlUGl4
ZWxTb2xpZENvbG9yKCkpOwogCiAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IGZy
YW1lT3JpZW50YXRpb25BdEluZGV4KDApOwotICAgIGlmIChvcmllbnRhdGlvbiAhPSBPcmlnaW5U
b3BMZWZ0KQorICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKQog
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoIm9yaWVudGF0aW9uIiwgb3JpZW50YXRpb24pOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgTmFtZWRJbWFnZUdlbmVyYXRlZElt
YWdlOjpOYW1lZEltYWdlR2VuZQogICAgIHNldENvbnRhaW5lclNpemUoc2l6ZSk7CiB9CiAKLUlt
YWdlRHJhd1Jlc3VsdCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorSW1hZ2VEcmF3
UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVj
b2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQogewogI2lmIFVTRShORVdfVEhFTUUpIHx8IFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGNvbnRleHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFt
ZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgJKHJldmlzaW9uIDI0ODUz
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0
ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB9
CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3Jp
ZW50YXRpb24pIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSkgb3ZlcnJpZGU7CiAKICAgICBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UoU3RyaW5nIG5h
bWUsIGNvbnN0IEZsb2F0U2l6ZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Niw3ICs2Niw3IEBAIEludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWcKIGJv
b2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogQ29sb3IgbmF0
aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKIAot
dm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbnRTaXplJiwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYpOwor
dm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbnRTaXplJiwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7CiB2b2lkIGNs
ZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKICAgICAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0ltYWdlRGVjb2RlckFWRk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQko
cmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAt
NTMxLDcgKzUzMSw3IEBAIGJvb2wgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6ZnJhbWVJc0NvbXBsZXQK
IAogSW1hZ2VPcmllbnRhdGlvbiBJbWFnZURlY29kZXJBVkZPYmpDOjpmcmFtZU9yaWVudGF0aW9u
QXRJbmRleChzaXplX3QpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb24oKTsK
KyAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZTsKIH0KIAogU2Vjb25kcyBJbWFnZURl
Y29kZXJBVkZPYmpDOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhZG93TGF5ZXJCdWZm
ZXIoUGxhdGZvCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFn
ZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkgewotICAgICAgICBkcmF3TmF0aXZlSW1h
Z2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBGbG9hdFJlY3Qocm91bmRlZEludFBv
aW50KGxheWVyT3JpZ2luKSwgbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbGF5
ZXJTaXplKSwgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZTo6
Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uKCksCisgICAgICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0
Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQobGF5
ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBsYXllclNpemUp
LCBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlOjpOb3JtYWws
IEltYWdlT3JpZW50YXRpb246Ok5vbmUsCiAgICAgICAgICAgICBJbnRlcnBvbGF0aW9uRGVmYXVs
dCwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRlKCkpOwogICAgIH0KIH0KQEAg
LTE5Miw3ICsxOTIsNyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhZG93SW1hZ2UoUGxhdGZvcm1Db250
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS0+bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkgewotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZv
cm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgc2hhZG93U3RhdGUu
Z2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBJbWFnZU9yaWVudGF0
aW9uKCksCisgICAgICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2Uu
Z2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlOjpOb3JtYWwsIEltYWdlT3JpZW50YXRpb246Ok5vbmUsCiAgICAgICAg
ICAgICBJbnRlcnBvbGF0aW9uRGVmYXVsdCwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNoYWRv
d1N0YXRlKCkpOwogICAgIH0KIH0KQEAgLTg4OSw3ICs4ODksNyBAQCB2b2lkIGRyYXdOYXRpdmVJ
bWFnZShQbGF0Zm9ybUNvbnRleHRDYWlyCiAgICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0Q29tcG9z
aXRlT3BlcmF0aW9uKHBsYXRmb3JtQ29udGV4dCwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9k
ZSk7CiAKICAgICBGbG9hdFJlY3QgZHN0ID0gZGVzdFJlY3Q7Ci0gICAgaWYgKG9yaWVudGF0aW9u
ICE9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKSB7CisgICAgaWYgKG9yaWVudGF0aW9uICE9IElt
YWdlT3JpZW50YXRpb246Ok5vbmUpIHsKICAgICAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBl
Y3RzIHRoZSBvcmlnaW4gdG8gYmUgYXQgKDAsIDApLgogICAgICAgICBDYWlybzo6dHJhbnNsYXRl
KHBsYXRmb3JtQ29udGV4dCwgZHN0LngoKSwgZHN0LnkoKSk7CiAgICAgICAgIGRzdC5zZXRMb2Nh
dGlvbihGbG9hdFBvaW50KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAJKHJldmlzaW9u
IDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTQsNyArMzU0LDcgQEAgdm9pZCBJ
bWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIAogewogICAgIEJhY2tpbmdTdG9yZUNv
cHkgY29weU1vZGUgPSAmZGVzdGluYXRpb25Db250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFj
a2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmU7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFn
ZSA9IGNvcHlJbWFnZShjb3B5TW9kZSk7Ci0gICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdJbWFn
ZSgqaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxl
bmRNb2RlLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24oKSkpOworICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBkZXN0
UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSwgRGVjb2Rp
bmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkpOwogfQogCiB2b2lk
IEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5j
cHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3
IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGMKICAgICByZXR1cm4g
Y29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYgb3JpZW50
YXRpb24pCit2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxl
bmRNb2RlLCBvcmllbnRhdGlvbik7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lv
biAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvCiAgICAgQ0dDb250ZXh0VHJhbnNsYXRl
Q1RNKGNvbnRleHQsIGFkanVzdGVkRGVzdFJlY3QueCgpLCBhZGp1c3RlZERlc3RSZWN0LnkoKSk7
CiAgICAgYWRqdXN0ZWREZXN0UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOwogCi0gICAg
aWYgKG9yaWVudGF0aW9uICE9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKSB7CisgICAgaWYgKG9y
aWVudGF0aW9uICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsKICAgICAgICAgQ0dDb250ZXh0
Q29uY2F0Q1RNKGNvbnRleHQsIG9yaWVudGF0aW9uLnRyYW5zZm9ybUZyb21EZWZhdWx0KGFkanVz
dGVkRGVzdFJlY3Quc2l6ZSgpKSk7CiAgICAgICAgIGlmIChvcmllbnRhdGlvbi51c2VzV2lkdGhB
c0hlaWdodCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgZGVzdGluYXRpb24gcmVjdCB3aWxsIGhh
dmUgaXQncyB3aWR0aCBhbmQgaGVpZ2h0IGFscmVhZHkgcmV2ZXJzZWQgZm9yIHRoZSBvcmllbnRh
dGlvbiBvZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgc3RhdGljIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRp
b25Gcm9tUAogICAgIEFTU0VSVChpbWFnZVByb3BlcnRpZXMpOwogICAgIENGTnVtYmVyUmVmIG9y
aWVudGF0aW9uUHJvcGVydHkgPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaW1h
Z2VQcm9wZXJ0aWVzLCBrQ0dJbWFnZVByb3BlcnR5T3JpZW50YXRpb24pOwogICAgIGlmICghb3Jp
ZW50YXRpb25Qcm9wZXJ0eSkKLSAgICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb24oKTsKKyAg
ICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok5vbmU7CiAgICAgCiAgICAgaW50IGV4aWZW
YWx1ZTsKICAgICBDRk51bWJlckdldFZhbHVlKG9yaWVudGF0aW9uUHJvcGVydHksIGtDRk51bWJl
ckludFR5cGUsICZleGlmVmFsdWUpOwpAQCAtMzUwLDcgKzM1MCw3IEBAIEltYWdlT3JpZW50YXRp
b24gSW1hZ2VEZWNvZGVyQ0c6OmZyYW1lT3IKIHsKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5
UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdElu
ZGV4KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgaW5kZXgsIGltYWdlU291cmNlT3B0aW9ucygpLmdl
dCgpKSk7CiAgICAgaWYgKCFwcm9wZXJ0aWVzKQotICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRh
dGlvbigpOworICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZTsKICAgICAKICAg
ICByZXR1cm4gb3JpZW50YXRpb25Gcm9tUHJvcGVydGllcyhwcm9wZXJ0aWVzLmdldCgpKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05h
dGl2ZUltYWdlQ0cuY3BwCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjks
NyArNjksNyBAQCBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjCiAgICAg
cmV0dXJuIENvbG9yKHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzFdICogMjU1IC8g
cGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzNdKTsKIH0KIAotdm9p
ZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3As
IEJsZW5kTW9kZSBtb2RlLCBjb25zdCBJbWFnZU9yaWVudGF0aW9uJiBvcmllbnRhdGlvbikKK3Zv
aWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
LCBCbGVuZE1vZGUgbW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICAv
LyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIg
dGhhbiBzaXplKCkuCiAgICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gbmF0aXZlSW1h
Z2VTaXplKGltYWdlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BERkRvY3VtZW50SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCShyZXZpc2lvbiAyNDg1MzApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFn
ZTo6dXBkYXRlQ2FjaGVkSW1hZ2UKICAgICBkZWNvZGVkU2l6ZUNoYW5nZWQoaW50ZXJuYWxTaXpl
LnVuY2xhbXBlZEFyZWEoKSAqIDQpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK0ltYWdl
RHJhd1Jlc3VsdCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbikKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1faGFzUGFnZSkKICAgICAgICAgcmV0
dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgJKHJldmlz
aW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0
aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIG92
ZXJyaWRlOwogICAgIEZsb2F0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBJbWFn
ZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwor
ICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwogCiAg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAg
IGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQxMSwxMSArMTQxMSwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6aGFuZGxlCiAgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX3RhZyhtZXNzYWdl
LCAmdGFncyk7CiAgICAgICAgIGlmIChnc3RfdGFnX2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1Rf
VEFHX0lNQUdFX09SSUVOVEFUSU9OLCAmdGFnLm91dFB0cigpKSkgewogICAgICAgICAgICAgaWYg
KCFnX3N0cmNtcDAodGFnLmdldCgpLCAicm90YXRlLTkwIikpCi0gICAgICAgICAgICAgICAgc2V0
VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uKE9yaWdpblJpZ2h0VG9wKSk7
CisgICAgICAgICAgICAgICAgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0
aW9uOjpPcmlnaW5SaWdodFRvcCk7CiAgICAgICAgICAgICBlbHNlIGlmICghZ19zdHJjbXAwKHRh
Zy5nZXQoKSwgInJvdGF0ZS0xODAiKSkKLSAgICAgICAgICAgICAgICBzZXRWaWRlb1NvdXJjZU9y
aWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24oT3JpZ2luQm90dG9tUmlnaHQpKTsKKyAgICAgICAg
ICAgICAgICBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb246Ok9yaWdp
bkJvdHRvbVJpZ2h0KTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAodGFnLmdldCgp
LCAicm90YXRlLTI3MCIpKQotICAgICAgICAgICAgICAgIHNldFZpZGVvU291cmNlT3JpZW50YXRp
b24oSW1hZ2VPcmllbnRhdGlvbihPcmlnaW5MZWZ0Qm90dG9tKSk7CisgICAgICAgICAgICAgICAg
c2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5MZWZ0Qm90
dG9tKTsKICAgICAgICAgfQogICAgICAgICBnc3RfdGFnX2xpc3RfdW5yZWYodGFncyk7CiAgICAg
ICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04ODcsNyArODg3LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYQogCiAgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgcGFp
bnRpbmdPcHRpb25zKENvbXBvc2l0ZUNvcHkpOwogICAgIGlmIChtX3JlbmRlcmluZ0NhbkJlQWNj
ZWxlcmF0ZWQpCi0gICAgICAgIHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRp
b24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0obV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKKyAg
ICAgICAgcGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb24gPSBtX3ZpZGVvU291cmNlT3JpZW50
YXRpb247CiAKICAgICBhdXRvIGdzdEltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdl
KG1fc2FtcGxlLmdldCgpKTsKICAgICBpZiAoIWdzdEltYWdlKQpAQCAtOTY1LDcgKzk2NSw3IEBA
IE5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW0KIH0KICNlbmRpZiAvLyBV
U0UoR1NUUkVBTUVSX0dMKQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OnNldFZpZGVvU291cmNlT3JpZW50YXRpb24oY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYgb3JpZW50
YXRpb24pCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFZpZGVvU291
cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBpZiAo
bV92aWRlb1NvdXJjZU9yaWVudGF0aW9uID09IG9yaWVudGF0aW9uKQogICAgICAgICByZXR1cm47
CkBAIC05ODAsMTYgKzk4MCwxNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OnNlCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1
cmVNYXBwZXJGbGFncygpCiB7CiAgICAgc3dpdGNoIChtX3ZpZGVvU291cmNlT3JpZW50YXRpb24p
IHsKLSAgICBjYXNlIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOgorICAgIGNhc2UgSW1hZ2VPcmll
bnRhdGlvbjo6T3JpZ2luVG9wTGVmdDoKICAgICAgICAgbV90ZXh0dXJlTWFwcGVyRmxhZ3MgPSAw
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE9yaWdpblJpZ2h0VG9wOgorICAgIGNhc2UgSW1h
Z2VPcmllbnRhdGlvbjo6T3JpZ2luUmlnaHRUb3A6CiAgICAgICAgIG1fdGV4dHVyZU1hcHBlckZs
YWdzID0gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRSb3RhdGVUZXh0dXJlOTA7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgT3JpZ2luQm90dG9tUmlnaHQ6CisgICAgY2FzZSBJbWFnZU9yaWVudGF0
aW9uOjpPcmlnaW5Cb3R0b21SaWdodDoKICAgICAgICAgbV90ZXh0dXJlTWFwcGVyRmxhZ3MgPSBU
ZXh0dXJlTWFwcGVyR0w6OlNob3VsZFJvdGF0ZVRleHR1cmUxODA7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgT3JpZ2luTGVmdEJvdHRvbToKKyAgICBjYXNlIEltYWdlT3JpZW50YXRpb246Ok9y
aWdpbkxlZnRCb3R0b206CiAgICAgICAgIG1fdGV4dHVyZU1hcHBlckZsYWdzID0gVGV4dHVyZU1h
cHBlckdMOjpTaG91bGRSb3RhdGVUZXh0dXJlMjcwOwogICAgICAgICBicmVhazsKICAgICBkZWZh
dWx0OgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5oCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODUsNyArMTg1LDcgQEAgcHVibGljOgogICAgIE5hdGl2ZUltYWdlUHRy
IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdm9p
ZCBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKGNvbnN0IEltYWdlT3JpZW50YXRpb24mKTsKKyAg
ICB2b2lkIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbik7CiAgICAg
R3N0RWxlbWVudCogcGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX3BpcGVsaW5lLmdldCgpOyB9
CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlU3luY01lc3NhZ2UoR3N0TWVzc2FnZSopOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVy
ZUNvcGllckdTdHJlYW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5jcHAJKHJl
dmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NywxNyArOTcsMTcgQEAgdm9pZCBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OnVwZGF0ZQog
ICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4Lm1ha2VJZGVudGl0eSgpOwogCiAgICAgc3dpdGNoICht
X29yaWVudGF0aW9uKSB7Ci0gICAgY2FzZSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjoKKyAgICBj
YXNlIEltYWdlT3JpZW50YXRpb246Ok9yaWdpblRvcExlZnQ6CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgT3JpZ2luUmlnaHRUb3A6CisgICAgY2FzZSBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5S
aWdodFRvcDoKICAgICAgICAgbV90ZXh0dXJlU3BhY2VNYXRyaXgucm90YXRlKC05MCk7CiAgICAg
ICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4LnRyYW5zbGF0ZSgtMSwgMCk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgT3JpZ2luQm90dG9tUmlnaHQ6CisgICAgY2FzZSBJbWFnZU9yaWVudGF0aW9u
OjpPcmlnaW5Cb3R0b21SaWdodDoKICAgICAgICAgbV90ZXh0dXJlU3BhY2VNYXRyaXgucm90YXRl
KDE4MCk7CiAgICAgICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4LnRyYW5zbGF0ZSgtMSwgLTEpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIE9yaWdpbkxlZnRCb3R0b206CisgICAgY2FzZSBJbWFn
ZU9yaWVudGF0aW9uOjpPcmlnaW5MZWZ0Qm90dG9tOgogICAgICAgICBtX3RleHR1cmVTcGFjZU1h
dHJpeC5yb3RhdGUoLTI3MCk7CiAgICAgICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4LnRyYW5zbGF0
ZSgwLCAtMSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgVmlkZW9U
ZXh0dXJlQ29waWVyR1N0cmVhbWVyOjp1cGRhdGUKICAgICAgICAgLTEsIDEsIC0oZmFyVmFsdWUg
KyBuZWFyVmFsdWUpIC8gKGZhclZhbHVlIC0gbmVhclZhbHVlKSwgMSk7CiB9CiAKLWJvb2wgVmlk
ZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUoR0x1aW50IGlucHV0VGV4dHVyZSwgSW50U2l6ZSYgZnJhbWVTaXplLCBHTHVpbnQgb3V0cHV0
VGV4dHVyZSwgR0xlbnVtIG91dHB1dFRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5h
bEZvcm1hdCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGJvb2wgZmxpcFksIEltYWdlT3Jp
ZW50YXRpb24mIHNvdXJjZU9yaWVudGF0aW9uKQorYm9vbCBWaWRlb1RleHR1cmVDb3BpZXJHU3Ry
ZWFtZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHTHVpbnQgaW5wdXRUZXh0
dXJlLCBJbnRTaXplJiBmcmFtZVNpemUsIEdMdWludCBvdXRwdXRUZXh0dXJlLCBHTGVudW0gb3V0
cHV0VGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVudW0gZm9y
bWF0LCBHTGVudW0gdHlwZSwgYm9vbCBmbGlwWSwgSW1hZ2VPcmllbnRhdGlvbiBzb3VyY2VPcmll
bnRhdGlvbikKIHsKICAgICBpZiAoIW1fc2hhZGVyUHJvZ3JhbSB8fCAhbV9mcmFtZWJ1ZmZlciB8
fCAhbV92Ym8gfHwgZnJhbWVTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4
dHVyZUNvcGllckdTdHJlYW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaAkocmV2
aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3
ICs0Myw3IEBAIHB1YmxpYzoKICAgICBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIoQ29sb3JD
b252ZXJzaW9uKTsKICAgICB+VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyKCk7CiAKLSAgICBi
b29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHTHVpbnQgaW5wdXRUZXh0dXJl
LCBJbnRTaXplJiBmcmFtZVNpemUsIEdMdWludCBvdXRwdXRUZXh0dXJlLCBHTGVudW0gb3V0cHV0
VGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVudW0gZm9ybWF0
LCBHTGVudW0gdHlwZSwgYm9vbCBmbGlwWSwgSW1hZ2VPcmllbnRhdGlvbiYgc291cmNlT3JpZW50
YXRpb24pOworICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdMdWlu
dCBpbnB1dFRleHR1cmUsIEludFNpemUmIGZyYW1lU2l6ZSwgR0x1aW50IG91dHB1dFRleHR1cmUs
IEdMZW51bSBvdXRwdXRUYXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQs
IEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBib29sIGZsaXBZLCBJbWFnZU9yaWVudGF0aW9u
IHNvdXJjZU9yaWVudGF0aW9uKTsKICAgICB2b2lkIHVwZGF0ZUNvbG9yQ29udmVyc2lvbk1hdHJp
eChDb2xvckNvbnZlcnNpb24pOwogICAgIHZvaWQgdXBkYXRlVGV4dHVyZVNwYWNlTWF0cml4KCk7
CiAgICAgdm9pZCB1cGRhdGVUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3Bl
cmF0aW9ucy5jcHAJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
MTMsNyArODEzLDcgQEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZQog
ICAgIGNvbnRleHQtPlNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOwogICAgIGFkanVzdGVkRGVzdFJl
Y3Quc2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKIAotICAgIGlmIChvcmllbnRhdGlvbiAhPSBE
ZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikgeworICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbWFnZU9y
aWVudGF0aW9uOjpOb25lKSB7CiAgICAgICAgIGNvbmNhdENUTShwbGF0Zm9ybUNvbnRleHQsIG9y
aWVudGF0aW9uLnRyYW5zZm9ybUZyb21EZWZhdWx0KGFkanVzdGVkRGVzdFJlY3Quc2l6ZSgpKSk7
CiAgICAgICAgIGlmIChvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKSB7CiAgICAgICAg
ICAgICAvLyBUaGUgZGVzdGluYXRpb24gcmVjdCB3aWxsIGhhdmUgaXQncyB3aWR0aCBhbmQgaGVp
Z2h0IGFscmVhZHkgcmV2ZXJzZWQgZm9yIHRoZSBvcmllbnRhdGlvbiBvZgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAko
cmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ0dXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIGJvb2wgQml0
bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE0KICAgICBpZiAoc2l6ZSkKICAgICAgICAg
ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1w
SW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgKnNpemUsIENvbXBvc2l0ZUNvcHkpOwog
ICAgIGVsc2UKLSAgICAgICAgZHJhdyhnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8u
Ym1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNp
emUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2Rl
OjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbigpKTsKKyAgICAgICAgZHJhdyhnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcElu
Zm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFn
ZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29tcG9zaXRlQ29weSwgQmxlbmRN
b2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246
Ok5vbmUpOwogCiAgICAgLy8gRG8gY2xlYW51cAogICAgIENHQ29udGV4dFJlbGVhc2UoY2dDb250
ZXh0KTsKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hp
bmdTb3VyYwogICAgICAgICBpZiAoaW1hZ2UgJiYgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkgPT0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBDR0ltYWdlR2V0V2lkdGgo
aW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewogICAgICAg
ICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAgICAg
bV9jdXJyZW50RnJhbWUgPSBpOwotICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9h
dFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgY29t
cG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICBkcmF3KGN0eHQsIGRz
dFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVp
Z2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3lu
Y2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOwogICAgICAgICAgICAgbV9jdXJyZW50
RnJhbWUgPSBjdXJyZW50RnJhbWU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTEwMyw3ICsxMDMsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJj
CiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29ycmVjdCBzaXplIHdhcyBmb3VuZCwgZmFsbGJh
Y2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFtZQogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUg
PSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwotICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0
KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBjb21w
b3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZs
b2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgp
KSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9u
b3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9X
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZUNhaXJvV2luLmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MSw3ICs4MSw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE0K
ICAgICBpZiAoc2l6ZSkKICAgICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKGdjLCBG
bG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwg
KnNpemUsIENvbXBvc2l0ZUNvcHkpOwogICAgIGVsc2UKLSAgICAgICAgZHJhdyhnYywgRmxvYXRS
ZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0
UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwg
Q29tcG9zaXRlQ29weSwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25v
dXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgZHJhdyhnYywgRmxv
YXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZs
b2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgp
KSwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOwogCiAgICAgLy8gRG8gY2xlYW51cAogICAg
IGNhaXJvX2Rlc3Ryb3kodGFyZ2V0UmVmKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIEJpdG1h
cEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjCiAgICAgICAgIGlmIChjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihz
cmNTaXplLmhlaWdodCgpKSAmJiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNl
LmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgoKSkpIHsKICAgICAg
ICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICAgICAgICAg
IG1fY3VycmVudEZyYW1lID0gaTsKLSAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxv
YXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIGNv
bXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAgZHJhdyhjdHh0LCBk
c3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhl
aWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5
bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKICAgICAgICAgICAgIG1fY3VycmVu
dEZyYW1lID0gY3VycmVudEZyYW1lOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC0xMDgsNyArMTA4LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3Vy
YwogCiAgICAgLy8gTm8gaW1hZ2Ugb2YgdGhlIGNvcnJlY3Qgc2l6ZSB3YXMgZm91bmQsIGZhbGxi
YWNrIHRvIGRyYXdpbmcgdGhlIGN1cnJlbnQgZnJhbWUKICAgICBGbG9hdFNpemUgaW1hZ2VTaXpl
ID0gQml0bWFwSW1hZ2U6OnNpemUoKTsKLSAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVj
dCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgY29t
cG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBG
bG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQo
KSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJv
bm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29k
ZXJEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJE
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDIwICsxNTksMjAgQEAgYm9vbCBJbWFnZURlY29k
ZXJEaXJlY3QyRDo6ZnJhbWVJc0NvbXBsZQogSW1hZ2VPcmllbnRhdGlvbiBJbWFnZURlY29kZXJE
aXJlY3QyRDo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAogewog
ICAgIGlmICghbV9uYXRpdmVEZWNvZGVyKQotICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlv
bigpOworICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZTsKIAogICAgIENPTVB0
cjxJV0lDQml0bWFwRnJhbWVEZWNvZGU+IGZyYW1lOwogICAgIEhSRVNVTFQgaHIgPSBtX25hdGl2
ZURlY29kZXItPkdldEZyYW1lKGluZGV4LCAmZnJhbWUpOwogICAgIGlmICghU1VDQ0VFREVEKGhy
KSkKLSAgICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb24oKTsKKyAgICAgICAgcmV0dXJuIElt
YWdlT3JpZW50YXRpb246Ok5vbmU7CiAKICAgICBDT01QdHI8SVdJQ01ldGFkYXRhUXVlcnlSZWFk
ZXI+IG1ldGFkYXRhOwogICAgIGhyID0gZnJhbWUtPkdldE1ldGFkYXRhUXVlcnlSZWFkZXIoJm1l
dGFkYXRhKTsKICAgICBpZiAoIVNVQ0NFRURFRChocikpCi0gICAgICAgIHJldHVybiBJbWFnZU9y
aWVudGF0aW9uKCk7CisgICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpOb25lOwogCiAg
ICAgLy8gRklYTUU6IElkZW50aWZ5IGltYWdlIHR5cGUsIGFuZCBhc2sgcHJvcGVyIG9yaWVudGF0
aW9uLgotICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7CisgICAgcmV0dXJuIEltYWdlT3Jp
ZW50YXRpb246Ok5vbmU7CiB9CiAKIFNlY29uZHMgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmZyYW1l
RHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEaXJlY3QyRC5jcHAJKHJl
dmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCB2b2lkIEJp
dG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjCiAgICAgICAgIGlmIChpbWFnZSAmJiBj
bGFtcFRvPGludD4oaW1hZ2VTaXplLmhlaWdodCgpKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KHNyY1Np
emUuaGVpZ2h0KCkpICYmIGNsYW1wVG88aW50PihpbWFnZVNpemUud2lkdGgoKSkgPT0gc3RhdGlj
X2Nhc3Q8aW50PihzcmNTaXplLndpZHRoKCkpKSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVu
dEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7
Ci0gICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBz
cmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2Rl
OjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbigpKTsKKyAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9w
LCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmll
bnRhdGlvbjo6Tm9uZSk7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFt
ZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtODksNyArODksNyBAQCB2b2lk
IEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjCiAKICAgICAvLyBObyBpbWFnZSBv
ZiB0aGUgY29ycmVjdCBzaXplIHdhcyBmb3VuZCwgZmFsbGJhY2sgdG8gZHJhd2luZyB0aGUgY3Vy
cmVudCBmcmFtZQogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgp
OwotICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6
ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpO
b3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbigpKTsKKyAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBp
bWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5k
TW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9u
OjpOb25lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURp
cmVjdDJELmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDIsNyArMTAyLDcgQEAgQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoYwog
ICAgIHJldHVybiBDb2xvcigpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBz
cmNTaXplLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSwgY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYgb3JpZW50YXRpb24pCit2b2lkIGRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxl
bmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBh
dXRvIHBsYXRmb3JtQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwCShyZXZpc2lv
biAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBEcmFnSW1hZ2VSZWYgZGlzc29sdmVE
cmFnSW1hZ2VUb0ZyYWN0aW9uCiAgICAgcmV0dXJuIGltYWdlOwogfQogCi1EcmFnSW1hZ2VSZWYg
Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWFnZSwgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKQorRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSog
aW1hZ2UsIEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgcmV0dXJuIGltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVy
RnJhbWUuaAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQmFja2lu
Z1N0b3JlPiBtX2JhY2tpbmdTdG9yZTsKICAgICBEaXNwb3NhbE1ldGhvZCBtX2Rpc3Bvc2FsTWV0
aG9kIHsgRGlzcG9zYWxNZXRob2Q6OlVuc3BlY2lmaWVkIH07CiAKLSAgICBJbWFnZU9yaWVudGF0
aW9uIG1fb3JpZW50YXRpb24geyBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbiB9OworICAgIEltYWdl
T3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IEltYWdlT3JpZW50YXRpb246Ok5vbmUgfTsKICAg
ICBTZWNvbmRzIG1fZHVyYXRpb247CiAgICAgYm9vbCBtX2hhc0FscGhhIHsgdHJ1ZSB9OwogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0lt
YWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAkocmV2aXNpb24gMjQ4NTMwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VE
ZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDcgKzE5Myw3IEBAIHN0YXRpYyBJbWFn
ZU9yaWVudGF0aW9uIHJlYWRJbWFnZU9yaWVudGEKICAgICAgICAgfQogICAgIH0KIAotICAgIHJl
dHVybiBJbWFnZU9yaWVudGF0aW9uKCk7CisgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok5v
bmU7CiB9CiAKIGNsYXNzIEpQRUdJbWFnZVJlYWRlciB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0JKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAg
LTc4LDcgKzc4LDcgQEAgRHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZgog
CiBzdGF0aWMgZmxvYXQgbWF4aW11bUFsbG93ZWREcmFnSW1hZ2VBcmVhID0gNjAwICogMTAyNDsK
IAotRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1hZ2UsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbikKK0RyYWdJbWFnZVJlZiBjcmVh
dGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uKQogewogICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT53aWR0aCgpIHx8ICFpbWFnZS0+
aGVpZ2h0KCkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC05Niw5ICs5Niw3IEBAIERyYWdJbWFn
ZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW0KICAgICAgICAgR3JhcGhpY3NDb250ZXh0
IGNvbnRleHQocmVuZGVyZXJDb250ZXh0LkNHQ29udGV4dCk7CiAgICAgICAgIGNvbnRleHQudHJh
bnNsYXRlKDAsIGltYWdlU2l6ZS5oZWlnaHQpOwogICAgICAgICBjb250ZXh0LnNjYWxlKHsgYWRq
dXN0ZWRJbWFnZVNjYWxlLCAtYWRqdXN0ZWRJbWFnZVNjYWxlIH0pOwotICAgICAgICBJbWFnZVBh
aW50aW5nT3B0aW9ucyBwYWludGluZ09wdGlvbnM7Ci0gICAgICAgIHBhaW50aW5nT3B0aW9ucy5t
X29yaWVudGF0aW9uRGVzY3JpcHRpb24gPSBvcmllbnRhdGlvbjsKLSAgICAgICAgY29udGV4dC5k
cmF3SW1hZ2UoKmltYWdlLCBGbG9hdFBvaW50KCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgICAg
IGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgpLCBJbWFnZVBhaW50aW5nT3B0
aW9ucyhvcmllbnRhdGlvbikpOwogICAgIH1dOwogICAgIHJldHVybiBpbWFnZUNvcHkuQ0dJbWFn
ZTsKIH0KQEAgLTI3NCw3ICsyNzIsNyBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc2NhbGVEcmFn
SW1hZ2UoUmV0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJldGFpblB0cjxDR0ltYWdlUmVm
PiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24pCitSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKElt
YWdlKiwgSW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQkocmV2aXNpb24g
MjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtOTIsMTkgKzkyLDE4IEBAIFJldGFpblB0cjxOU0ltYWdlPiBkaXNz
b2x2ZURyYWdJbWFnZVRvRnIKICAgICByZXR1cm4gZGlzc29sdmVkSW1hZ2U7CiB9CiAgICAgICAg
IAotUmV0YWluUHRyPE5TSW1hZ2U+IGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1h
Z2UsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikKK1JldGFpblB0cjxO
U0ltYWdlPiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBJbWFnZU9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIEZsb2F0U2l6ZSBzaXplID0gaW1hZ2UtPnNpemUo
KTsKIAogICAgIGlmIChpczxCaXRtYXBJbWFnZT4oKmltYWdlKSkgewotICAgICAgICBJbWFnZU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uOwogICAgICAgICBCaXRtYXBJbWFnZSYgYml0bWFwSW1hZ2Ug
PSBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKTsKICAgICAgICAgSW50U2l6ZSBzaXplUmVz
cGVjdGluZ09yaWVudGF0aW9uID0gYml0bWFwSW1hZ2Uuc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlv
bigpOwogCi0gICAgICAgIGlmIChkZXNjcmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigp
ID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQorICAgICAgICBpZiAob3JpZW50YXRpb24gPT0g
SW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlKQogICAgICAgICAgICAgb3JpZW50YXRpb24gPSBi
aXRtYXBJbWFnZS5vcmllbnRhdGlvbkZvckN1cnJlbnRGcmFtZSgpOwogCi0gICAgICAgIGlmIChv
cmllbnRhdGlvbiAhPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikgeworICAgICAgICBpZiAob3Jp
ZW50YXRpb24gIT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkgewogICAgICAgICAgICAgLy8gQ29u
c3RydWN0IGEgY29ycmVjdGx5LXJvdGF0ZWQgY29weSBvZiB0aGUgaW1hZ2UgdG8gdXNlIGFzIHRo
ZSBkcmFnIGltYWdlLgogICAgICAgICAgICAgRmxvYXRSZWN0IGRlc3RSZWN0KEZsb2F0UG9pbnQo
KSwgc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIGV4aXQ6CiAgICAgcmV0dXJuIGhibXAubGVhaygpOwog
fQogICAgIAotRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1n
LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0lt
YWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgSFduZERD
IGRjKDApOwogICAgIGF1dG8gd29ya2luZ0RDID0gYWRvcHRHRElPYmplY3QoOjpDcmVhdGVDb21w
YXRpYmxlREMoZGMpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VDYWlyb1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0RyYWdJbWFnZUNhaXJvV2luLmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJvV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQ2LDcgKzE0Niw3IEBAIGV4aXQ6CiAgICAgcmV0dXJuIGhibXAubGVhaygpOwogfQogICAgIAot
RHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24pCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUlt
YWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgSFduZERDIGRjKDApOwog
ICAgIGF1dG8gd29ya2luZ0RDID0gYWRvcHRHRElPYmplY3QoOjpDcmVhdGVDb21wYXRpYmxlREMo
ZGMpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VEaXJlY3Qy
RC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFn
ZURpcmVjdDJELmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0RyYWdJbWFnZURpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODks
NyBAQCBEcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmCiAgICAgcmV0dXJu
IGhibXAubGVhaygpOwogfQogCi1EcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdl
KEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK0RyYWdJbWFnZVJlZiBj
cmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbikKIHsK
ICAgICBIV25kREMgZGMobnVsbHB0cik7CiAgICAgYXV0byB3b3JraW5nREMgPSBhZG9wdEdESU9i
amVjdCg6OkNyZWF0ZUNvbXBhdGlibGVEQyhkYykpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiAyNDg1MzAp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05NTUsNyArOTU1LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRGaWxsTGF5ZQogCiAgICAgICAgICAgICBhdXRvIGludGVycG9sYXRpb24gPSBjaG9v
c2VJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250ZXh0LCAqaW1hZ2UsICZiZ0xheWVyLCBnZW9tZXRy
eS50aWxlU2l6ZSgpKTsKICAgICAgICAgICAgIGF1dG8gZGVjb2RpbmdNb2RlID0gZGVjb2RpbmdN
b2RlRm9ySW1hZ2VEcmF3KCppbWFnZSwgcGFpbnRJbmZvKTsKLSAgICAgICAgICAgIGF1dG8gZHJh
d1Jlc3VsdCA9IGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBnZW9tZXRyeS5kZXN0UmVj
dCgpLCB0b0xheW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5LnRp
bGVTaXplKCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21w
b3NpdGVPcCwgYmdMYXllci5ibGVuZE1vZGUoKSwgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24oKSwgaW50ZXJwb2xhdGlvbikpOworICAgICAgICAgICAgYXV0byBkcmF3
UmVzdWx0ID0gY29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0
KCksIHRvTGF5b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGls
ZVNpemUoKSwgZ2VvbWV0cnkuc3BhY2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBv
c2l0ZU9wLCBiZ0xheWVyLmJsZW5kTW9kZSgpLCBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRp
b246Ok5vbmUsIGludGVycG9sYXRpb24pKTsKICAgICAgICAgICAgIGlmIChkcmF3UmVzdWx0ID09
IEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVxdWVzdERlY29kaW5nKSB7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKGJnSW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSk7CiAgICAgICAgICAgICAgICAgYmdJbWFn
ZS0+Y2FjaGVkSW1hZ2UoKS0+YWRkQ2xpZW50V2FpdGluZ0ZvckFzeW5jRGVjb2RpbmcoKnRoaXMp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAkocmV2
aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMwLDE2ICsyMDMwLDE4IEBAIGJvb2wgUmVuZGVyRWxl
bWVudDo6Y2hlY2tGb3JSZXBhaW50RHVyaW4KICAgICByZXR1cm4gIXNldHRpbmdzKCkucmVwYWlu
dE91dHNpZGVMYXlvdXRFbmFibGVkKCk7CiB9CiAKLVJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51
bSBSZW5kZXJFbGVtZW50OjpzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0CitJ
bWFnZU9yaWVudGF0aW9uIFJlbmRlckVsZW1lbnQ6OmltYWdlT3JpZW50YXRpb24oKSBjb25zdAog
ewogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCiAgICAgLy8gVGhp
cyBjYW4gb25seSBiZSBlbmFibGVkIGZvciBwb3J0cyB3aGljaCBob25vciB0aGUgb3JpZW50YXRp
b24gZmxhZyBpbiB0aGVpciBkcmF3aW5nIGNvZGUuCiAgICAgaWYgKGRvY3VtZW50KCkuaXNJbWFn
ZURvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbjsKKyAg
ICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZTsKICNlbmRpZgogICAgIC8v
IFJlc3BlY3QgdGhlIGltYWdlJ3Mgb3JpZW50YXRpb24gaWYgaXQncyBiZWluZyB1c2VkIGFzIGEg
ZnVsbC1wYWdlIGltYWdlIG9yIGl0J3MKICAgICAvLyBhbiA8aW1nPiBhbmQgdGhlIHNldHRpbmcg
dG8gcmVzcGVjdCBpdCBldmVyeXdoZXJlIGlzIHNldC4KLSAgICByZXR1cm4gc2V0dGluZ3MoKS5z
aG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpICYmIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVs
ZW1lbnQoKSkgPyBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA6IERvTm90UmVzcGVjdEltYWdlT3Jp
ZW50YXRpb247CisgICAgaWYgKHNldHRpbmdzKCkuc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRp
b24oKSAmJiBpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkpKQorICAgICAgICByZXR1cm4g
SW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlOworICAgIHJldHVybiBzdHlsZSgpLmltYWdlT3Jp
ZW50YXRpb24oKTsKIH0KIAogdm9pZCBSZW5kZXJFbGVtZW50OjphZGp1c3RGcmFnbWVudGVkRmxv
d1N0YXRlT25Db250YWluaW5nQmxvY2tDaGFuZ2VJZk5lZWRlZCgpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIw
NCw3ICsyMDQsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9ja0Zv
ckZpeGVkUG9zaXRpb24oKSBjb25zdDsKICAgICBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2Nr
Rm9yQWJzb2x1dGVQb3NpdGlvbigpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVzcGVj
dEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VPcmllbnRhdGlvbiBpbWFnZU9yaWVudGF0aW9u
KCkgY29uc3Q7CiAKICAgICB2b2lkIHJlbW92ZUZyb21SZW5kZXJGcmFnbWVudGVkRmxvdygpOwog
ICAgIHZpcnR1YWwgdm9pZCByZXNldEVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93QW5kQ2hpbGRJbmZv
SW5jbHVkaW5nRGVzY2VuZGFudHMoUmVuZGVyRnJhZ21lbnRlZEZsb3cqKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAkocmV2
aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVk
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDggKzIyNCw3IEBAIHZvaWQgUmVuZGVy
RW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50
ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFs
aXR5KGNvbnRleHQsIGltYWdlLCAmaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7Ci0gICAgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVz
cGVjdEltYWdlT3JpZW50YXRpb24oKSwgc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAg
IGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlv
bnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgaW50ZXJwb2xhdGlvbikpOworICAgIGNvbnRleHQu
ZHJhd0ltYWdlKGltYWdlLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoaW1hZ2VP
cmllbnRhdGlvbigpLCBpbnRlcnBvbGF0aW9uKSk7CiB9CiAKIHZvaWQgUmVuZGVyRW1iZWRkZWRP
YmplY3Q6OnBhaW50Q29udGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY5LDExICs0NjksNyBAQCB2b2lkIFJl
bmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mCiAgICAgICAgICAgICAgICAgICAgIGNl
bnRlclkgPSAwOwogICAgICAgICAgICAgICAgIGltYWdlT2Zmc2V0ID0gTGF5b3V0U2l6ZShsZWZ0
Qm9yZGVyICsgbGVmdFBhZCArIGNlbnRlclggKyBtaXNzaW5nSW1hZ2VCb3JkZXJXaWR0aCwgdG9w
Qm9yZGVyICsgdG9wUGFkICsgY2VudGVyWSArIG1pc3NpbmdJbWFnZUJvcmRlcldpZHRoKTsKIAot
ICAgICAgICAgICAgICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRl
c2NyaXB0aW9uKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkpOwotI2lmIEVOQUJMRShD
U1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAgICAgICAgICAgICAgb3JpZW50YXRpb25EZXNjcmlw
dGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7
Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHNuYXBS
ZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBp
bWFnZVNpemUpLCBkZXZpY2VTY2FsZUZhY3RvciksIG9yaWVudGF0aW9uRGVzY3JpcHRpb24pOwor
ICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc25hcFJlY3RUb0Rldmlj
ZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdlU2l6ZSks
IGRldmljZVNjYWxlRmFjdG9yKSwgaW1hZ2VPcmllbnRhdGlvbigpKTsKICAgICAgICAgICAgICAg
ICBlcnJvclBpY3R1cmVEcmF3biA9IHRydWU7CiAgICAgICAgICAgICB9CiAKQEAgLTYzNSw5ICs2
MzEsOCBAQCBJbWFnZURyYXdSZXN1bHQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1JlCiAgICAgaWYg
KGlzPEJpdG1hcEltYWdlPihpbWFnZSkpCiAgICAgICAgIGRvd25jYXN0PEJpdG1hcEltYWdlPigq
aW1hZ2UpLnVwZGF0ZUZyb21TZXR0aW5ncyhzZXR0aW5ncygpKTsKIAotICAgIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKHNob3VsZFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uKCksIHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICAgICBhdXRvIGRl
Y29kaW5nTW9kZSA9IGRlY29kaW5nTW9kZUZvckltYWdlRHJhdygqaW1hZ2UsIHBhaW50SW5mbyk7
Ci0gICAgYXV0byBkcmF3UmVzdWx0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoKmlt
ZywgcmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIGludGVycG9s
YXRpb24pKTsKKyAgICBhdXRvIGRyYXdSZXN1bHQgPSBwYWludEluZm8uY29udGV4dCgpLmRyYXdJ
bWFnZSgqaW1nLCByZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgaW1hZ2VPcmllbnRhdGlvbigpLCBpbnRl
cnBvbGF0aW9uKSk7CiAgICAgaWYgKGRyYXdSZXN1bHQgPT0gSW1hZ2VEcmF3UmVzdWx0OjpEaWRS
ZXF1ZXN0RGVjb2RpbmcpCiAgICAgICAgIGltYWdlUmVzb3VyY2UoKS5jYWNoZWRJbWFnZSgpLT5h
ZGRDbGllbnRXYWl0aW5nRm9yQXN5bmNEZWNvZGluZygqdGhpcyk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiAy
NDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQ3Niw3ICsyNDc2LDcgQEAgYm9vbCBSZW5kZXJMYXllckJh
Y2tpbmc6OmlzRGlyZWN0bHlDb21wbwogICAgICAgICBpZiAoIWlzPEJpdG1hcEltYWdlPihpbWFn
ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKGRvd25jYXN0PEJp
dG1hcEltYWdlPigqaW1hZ2UpLm9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgIT0gRGVmYXVs
dEltYWdlT3JpZW50YXRpb24pCisgICAgICAgIGlmIChkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmlt
YWdlKS5vcmllbnRhdGlvbkZvckN1cnJlbnRGcmFtZSgpICE9IEltYWdlT3JpZW50YXRpb246Ok5v
bmUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiAoUExBVEZPUk0oR1RLKSB8fCBQ
TEFURk9STShXUEUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBz
aG90dGVkUGx1Z0luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDUsOCArMTQ1LDcgQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFp
bnRTbmFwcwogICAgICAgICByZXR1cm47CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRl
cnBvbGF0aW9uID0gY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgKmltYWdlLCBp
bWFnZSwgYWxpZ25lZFJlY3Quc2l6ZSgpKTsKLSAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigp
LCBzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2UoKmlt
YWdlLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlw
dGlvbiwgaW50ZXJwb2xhdGlvbikpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgYWxp
Z25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJw
b2xhdGlvbikpOwogfQogCiBDdXJzb3JEaXJlY3RpdmUgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46
OmdldEN1cnNvcihjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIEN1cnNvciYgb3ZlcnJpZGVDdXJz
b3IpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1Miw3ICs3NTIsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4g
V2ViQ29yZTo6aXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSh3cml0aW5nTW9kZSgpKTsgfQogICAg
IGJvb2wgaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBXZWJDb3Jl
Ojppc0ZsaXBwZWRXcml0aW5nTW9kZSh3cml0aW5nTW9kZSgpKTsgfQogCi0gICAgSW1hZ2VPcmll
bnRhdGlvbkVudW0gaW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0OworICAgIEltYWdlT3JpZW50YXRp
b24gaW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0OwogCiAgICAgSW1hZ2VSZW5kZXJpbmcgaW1hZ2VS
ZW5kZXJpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZVJlbmRlcmluZz4obV9y
YXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VSZW5kZXJpbmcpOyB9CiAKQEAgLTk1MSw3ICs5NTEsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0g
ICAgdm9pZCBzZXRJbWFnZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb25FbnVtIHYpIHsgU0VU
X1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBpbWFnZU9yaWVudGF0aW9uLCBzdGF0aWNfY2FzdDxp
bnQ+KHYpKTsgfQorICAgIHZvaWQgc2V0SW1hZ2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9u
IHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBpbWFnZU9yaWVudGF0aW9uLCBzdGF0
aWNfY2FzdDxpbnQ+KHYpKTsgfQogI2VuZGlmCiAKICAgICB2b2lkIHNldEltYWdlUmVuZGVyaW5n
KEltYWdlUmVuZGVyaW5nIHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBpbWFnZVJl
bmRlcmluZywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpKTsgfQpAQCAtMTU4Miw3ICsxNTgyLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBPcHRpb25TZXQ8VGV4dEVtcGhhc2lzUG9zaXRpb24+IGlu
aXRpYWxUZXh0RW1waGFzaXNQb3NpdGlvbigpIHsgcmV0dXJuIHsgVGV4dEVtcGhhc2lzUG9zaXRp
b246Ok92ZXIsIFRleHRFbXBoYXNpc1Bvc2l0aW9uOjpSaWdodCB9OyB9CiAgICAgc3RhdGljIFJ1
YnlQb3NpdGlvbiBpbml0aWFsUnVieVBvc2l0aW9uKCkgeyByZXR1cm4gUnVieVBvc2l0aW9uOjpC
ZWZvcmU7IH0KICAgICBzdGF0aWMgTGluZUJveENvbnRhaW4gaW5pdGlhbExpbmVCb3hDb250YWlu
KCkgeyByZXR1cm4gTGluZUJveENvbnRhaW5CbG9jayB8IExpbmVCb3hDb250YWluSW5saW5lIHwg
TGluZUJveENvbnRhaW5SZXBsYWNlZDsgfQotICAgIHN0YXRpYyBJbWFnZU9yaWVudGF0aW9uRW51
bSBpbml0aWFsSW1hZ2VPcmllbnRhdGlvbigpIHsgcmV0dXJuIE9yaWdpblRvcExlZnQ7IH0KKyAg
ICBzdGF0aWMgSW1hZ2VPcmllbnRhdGlvbiBpbml0aWFsSW1hZ2VPcmllbnRhdGlvbigpIHsgcmV0
dXJuIEltYWdlT3JpZW50YXRpb246Ok5vbmU7IH0KICAgICBzdGF0aWMgSW1hZ2VSZW5kZXJpbmcg
aW5pdGlhbEltYWdlUmVuZGVyaW5nKCkgeyByZXR1cm4gSW1hZ2VSZW5kZXJpbmc6OkF1dG87IH0K
ICAgICBzdGF0aWMgSW1hZ2VSZXNvbHV0aW9uU291cmNlIGluaXRpYWxJbWFnZVJlc29sdXRpb25T
b3VyY2UoKSB7IHJldHVybiBJbWFnZVJlc29sdXRpb25Tb3VyY2U6OlNwZWNpZmllZDsgfQogICAg
IHN0YXRpYyBJbWFnZVJlc29sdXRpb25TbmFwIGluaXRpYWxJbWFnZVJlc29sdXRpb25TbmFwKCkg
eyByZXR1cm4gSW1hZ2VSZXNvbHV0aW9uU25hcDo6Tm9uZTsgfQpAQCAtMjA5MSwxMiArMjA5MSwx
MiBAQCBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aGFzSW5saW5lQ29sdW1uCiAgICAgcmV0dXJu
IGF4aXMgPT0gQ29sdW1uQXhpczo6QXV0byB8fCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID09
IChheGlzID09IENvbHVtbkF4aXM6Okhvcml6b250YWwpOwogfQogCi1pbmxpbmUgSW1hZ2VPcmll
bnRhdGlvbkVudW0gUmVuZGVyU3R5bGU6OmltYWdlT3JpZW50YXRpb24oKSBjb25zdAoraW5saW5l
IEltYWdlT3JpZW50YXRpb24gUmVuZGVyU3R5bGU6OmltYWdlT3JpZW50YXRpb24oKSBjb25zdAog
ewogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PEltYWdlT3JpZW50YXRpb25FbnVtPihtX3JhcmVJbmhlcml0ZWREYXRhLT5pbWFnZU9yaWVu
dGF0aW9uKTsKKyAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbihtX3JhcmVJbmhlcml0ZWREYXRh
LT5pbWFnZU9yaWVudGF0aW9uKTsKICNlbHNlCi0gICAgcmV0dXJuIERlZmF1bHRJbWFnZU9yaWVu
dGF0aW9uOworICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpOb25lOwogI2VuZGlmCiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWRE
YXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZUluaGVyaXRlZERhdGEuaAkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAkod29ya2luZyBjb3B5KQpA
QCAtMTIxLDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBsaW5lQm94Q29udGFpbjog
NzsgLy8gTGluZUJveENvbnRhaW4KICAgICAvLyBDU1MgSW1hZ2UgVmFsdWVzIExldmVsIDMKICNp
ZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgIHVuc2lnbmVkIGltYWdlT3JpZW50
YXRpb24gOiA0OyAvLyBJbWFnZU9yaWVudGF0aW9uRW51bQorICAgIHVuc2lnbmVkIGltYWdlT3Jp
ZW50YXRpb24gOiA0OyAvLyBJbWFnZU9yaWVudGF0aW9uCiAjZW5kaWYKICAgICB1bnNpZ25lZCBp
bWFnZVJlbmRlcmluZyA6IDM7IC8vIEltYWdlUmVuZGVyaW5nCiAgICAgdW5zaWduZWQgbGluZVNu
YXAgOiAyOyAvLyBMaW5lU25hcApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNyArMjAyLDcgQEAgSW1hZ2VE
cmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbgogCiAgICAgZnJhbWVWaWV3KCktPnNj
cm9sbFRvRnJhZ21lbnQoaW5pdGlhbEZyYWdtZW50VVJMKTsKIAotICAgIEltYWdlRHJhd1Jlc3Vs
dCByZXN1bHQgPSBkcmF3KGNvbnRleHQsIGRzdFJlY3QsIHNjYWxlZFNyYywgY29tcG9zaXRlT3As
IGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKCkpOworICAgIEltYWdlRHJhd1Jlc3VsdCByZXN1bHQgPSBkcmF3KGNvbnRleHQs
IGRzdFJlY3QsIHNjYWxlZFNyYywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CiAKICAgICBzZXRJbWFnZU9i
c2VydmVyKG9ic2VydmVyKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjIxLDcgKzIyMSw3IEBA
IE5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckMKICAgICBpZiAoIWJ1ZmZl
cikgLy8gZmFpbGVkIHRvIGFsbG9jYXRlIGltYWdlCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCByZWN0KCksIENvbXBvc2l0ZVNv
dXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgZHJhdyhidWZmZXItPmNvbnRleHQo
KSwgcmVjdCgpLCByZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9ybWFs
LCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKIAog
ICAgIC8vIEZJWE1FOiBXSyhCdWcgMTEzNjU3KTogV2Ugc2hvdWxkIHVzZSBEb250Q29weUJhY2tp
bmdTdG9yZSBoZXJlLgogICAgIHJldHVybiBidWZmZXItPmNvcHlJbWFnZShDb3B5QmFja2luZ1N0
b3JlKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCBO
YXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2UoY29uCiAgICAgUGxhdGZvcm1Db250
ZXh0RGlyZWN0MkQgcGxhdGZvcm1Db250ZXh0KG5hdGl2ZUltYWdlVGFyZ2V0LmdldCgpKTsKICAg
ICBHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNz
Q29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAKLSAgICBk
cmF3KGxvY2FsQ29udGV4dCwgcmVjdCgpLCByZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJs
ZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24oKSk7CisgICAgZHJhdyhsb2NhbENvbnRleHQsIHJlY3QoKSwgcmVjdCgp
LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpT
eW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CiAKICAgICByZXR1cm4gbmF0aXZl
SW1hZ2U7CiB9CkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5G
b3JDb250YWluZXIoRwogICAgIGltYWdlLT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBz
Y2FsZWRTcmNSZWN0LCB1bnNjYWxlZFBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBj
b21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBC
bGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVj
b2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAg
ICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgJKHJldmlzaW9uIDI0ODUzMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydEFuaW1hdGlvblRpbWVyRmlyZWQoKTsKIAogICAg
IGV4cGxpY2l0IFNWR0ltYWdlKEltYWdlT2JzZXJ2ZXImKTsKLSAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHRvUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdN
b2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIGZpbmFsOworICAgIEltYWdlRHJhd1Jl
c3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNv
ZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIGZpbmFsOwogICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWlu
ZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVS
TCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogICAgIHZvaWQgZHJhd1BhdHRlcm5Gb3JDb250
YWluZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBm
bG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLAogICAgICAgICBDb21wb3NpdGVP
cGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiwgQmxlbmRNb2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAkocmV2
aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9y
Q29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBGbG9hdFNpemUg
U1ZHSW1hZ2VGb3JDb250YWluZXI6OnNpemUoKSBjCiB9CiAKIEltYWdlRHJhd1Jlc3VsdCBTVkdJ
bWFnZUZvckNvbnRhaW5lcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwKLSAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUs
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKKyAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBE
ZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgcmV0dXJuIG1faW1hZ2UtPmRy
YXdGb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX2NvbnRhaW5lclpvb20s
IG1faW5pdGlhbEZyYWdtZW50VVJMLCBkc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcCwgYmxl
bmRNb2RlKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZv
ckNvbnRhaW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5oCShyZXZpc2lvbiAyNDg1MzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1faW1hZ2UtPmNvbXB1dGVJbnRyaW5zaWNE
aW1lbnNpb25zKGludHJpbnNpY1dpZHRoLCBpbnRyaW5zaWNIZWlnaHQsIGludHJpbnNpY1JhdGlv
KTsKICAgICB9CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgZmluYWw7
CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVj
b2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBmaW5hbDsKIAogICAgIHZvaWQgZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6
ZSYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gMjQ4NTk1KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wOC0xMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJv
dWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uIHNob3VsZCBiZSBhIHZhbHVlIGluIEltYWdlT3JpZW50YXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDU1MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjppbWFnZVBvc2l0aW9uSW5mb3JtYXRp
b24pOgorCiAyMDE5LTA4LTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBCbG9iIHJlZ2lzdHJpZXMgc2hvdWxkIGJlIGtleWVkIGJ5IHNlc3Npb24gSURzCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQkocmV2aXNpb24gMjQ4NTMwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2MzksOCArMjYzOSw3
IEBAIHN0YXRpYyB2b2lkIGltYWdlUG9zaXRpb25JbmZvcm1hdGlvbihXZWIKICAgICBpZiAoIWdy
YXBoaWNzQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBzaG91bGRSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbiA9IHJlbmRlckltYWdlLnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3Qo
MCwgMCwgYml0bWFwU2l6ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSk7CisgICAg
Z3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFw
U2l6ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSwgcmVuZGVySW1hZ2UuaW1hZ2VPcmll
bnRhdGlvbigpKTsKICAgICBpbmZvLmltYWdlID0gc2hhcmVkQml0bWFwOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376181</attachid>
            <date>2019-08-13 10:28:33 -0700</date>
            <delta_ts>2019-08-13 16:43:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200553-20190813102832.patch</filename>
            <type>text/plain</type>
            <size>107682</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4MCBAQAorMjAxOS0wOC0xMyAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIHNob3VsZFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uIHNob3VsZCBiZSBhIHZhbHVlIGluIEltYWdlT3JpZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDU1
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaXMgYSBzdGVwIHRvd2FyZHMgaW1wbGVtZW50aW5nIHRoZSBjc3MgaW1hZ2Utb3JpZW50
YXRpb24uCisKKyAgICAgICAgSW5zdGVhZCBvZiBoYXZpbmcgSW1hZ2VPcmllbnRhdGlvbkVudW0s
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiwKKyAgICAgICAgSW1hZ2VPcmllbnRhdGlvbiBh
bmQgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHdlIGFyZSBnb2luZyB0byBoYXZlIGEKKyAg
ICAgICAgc2luZ2xlIHN0cnVjdHVyZSBuYW1lZCAnSW1hZ2VPcmllbnRhdGlvbicgd2hpY2ggaXMg
YSB3cmFwcGVyIGZvciB0aGUgZW51bQorICAgICAgICB0eXBlICJPcmllbnRhdGlvbiIuCisKKyAg
ICAgICAgVGhpcyBzdHJ1Y3R1cmUgd2lsbCBoYXZlIGEgY29uc3RydWN0b3IgYW5kIGNhc3Rpbmcg
b3BlcmF0b3Igc3VjaCB0aGF0CisgICAgICAgIGFzc2lnbmluZyBhbiBlbnVtIHZhbHVlIGFuZCBj
b21wYXJpbmcgd2l0aCBhbiBlbnVtIHZhbHVlIHdpbGwgYmUgZG9uZQorICAgICAgICBpbXBsaWNp
dGx5LgorCisgICAgICAgIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uIGlzIHJlcHJlc2VudGVkIGFz
IGEgbmV3IGVudW0gdmFsdWUgJ0Zyb21JbWFnZScuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgSW1hZ2VPcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgSW1hZ2VPcmllbnRhdGlvbkVu
dW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVEcmFnSW1hZ2UgY29uc3QpOgorICAg
ICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TENhbnZhc0VsZW1lbnQ6OnBhaW50KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmltYWdlU2l6ZUZvclJlbmRl
cmVyIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkb0ltYWdlRHJhZyk6CisgICAgICAgICogcGxhdGZv
cm0vRHJhZ0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21T
bmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
cm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9DdXN0b21QYWludEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1h
Z2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhZGllbnRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
ZGllbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlUGFpbnRpbmdPcHRpb25zOjpJbWFnZVBhaW50aW5nT3B0aW9ucyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3SW1hZ2VJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6
OmRyYXdUaWxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VP
cmllbnRhdGlvbjo6SW1hZ2VPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9y
aWVudGF0aW9uOjpmcm9tRVhJRlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50
YXRpb246Om9wZXJhdG9yIE9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlT3JpZW50YXRpb246OnVzZXNXaWR0aEFzSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlT3JpZW50YXRpb246OnRyYW5zZm9ybUZyb21EZWZhdWx0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb246OmlzVmFsaWRPcmllbnRhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uOjppc1ZhbGlkRVhJRk9yaWVudGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbjo6SW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbjo6c2V0UmVzcGVjdEltYWdlT3JpZW50YXRpb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uOjpyZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb246OnNldEltYWdlT3JpZW50YXRpb25FbnVtKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbjo6aW1hZ2VPcmllbnRh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uOjpvcGVy
YXRvciBJbWFnZU9yaWVudGF0aW9uRW51bSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbWFnZU9yaWVudGF0aW9uOjpvcGVyYXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb246Om9wZXJhdG9yIT0gY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjpkdW1wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9O
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXJBVkZPYmpDOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleCBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhaXJvOjpkcmF3U2hhZG93TGF5ZXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fp
cm86OmRyYXdTaGFkb3dJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd05hdGl2
ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9yaWVudGF0aW9uRnJvbVByb3Bl
cnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OmZyYW1lT3JpZW50YXRp
b25BdEluZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJ
bWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6OnNldFZpZGVvU291cmNlT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4dHVyZU1hcHBlckZsYWdz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjp1cGRhdGVUZXh0dXJlU3BhY2VNYXRyaXgpOgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
cmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRIQklU
TUFQT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRj
aGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNh
aXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1Nv
dXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJE
aXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJEaXJlY3QyRDo6ZnJh
bWVPcmllbnRhdGlvbkF0SW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpk
cmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRp
dmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cmVhZEltYWdlT3JpZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9EcmFnSW1hZ2VJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFn
SW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6aW1hZ2VPcmll
bnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzaG91bGRS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50
U25hcHNob3RJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFj
a2luZzo6aXNEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZSBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRJ
bWFnZU9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFs
SW1hZ2VPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW1hZ2VP
cmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUlu
aGVyaXRlZERhdGEuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZTo6ZHJhdyk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaDoKKwogMjAxOS0wOC0xMyAgU2lodWkgTGl1ICA8c2lodWlfbGl1
QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHN1cmUgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uIHVucmVnaXN0ZXIgaXRzZWxmIGZyb20gSURCU2VydmVyCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAko
cmV2aXNpb24gMjQ4NTk5KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTE4MjAsNyArMTgyMCw2IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZURlY29kZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcAotcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbnRSZWN0LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQ4NTk5KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTc5
MSw3ICsxMTc5MSw2IEBACiAJCUE4NzFERkUxMEExNTM3NkIwMEIxMkE2OCAvKiBSZW5kZXJXaWRn
ZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlcldpZGdl
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4NzQ4QkRGMTJDQkYyREMwMDFG
QkE0MSAvKiBIYXNoVG9vbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFz
aFRvb2xzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4NzQ4RDY2MTJDQzM3NjMw
MDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEltYWdlT3JpZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QTg3NDhENzQxMkNDM0Y4OTAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VPcmllbnRhdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4ODA1QUYxMTZDOTZBRUEwMDBFOUQ5OCAvKiBJbnB1
dFN0cmVhbVByZXByb2Nlc3Nvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnB1dFN0cmVhbVByZXByb2Nl
c3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODgyREExRjE1OTM4NDZBMDAw
MTE1RUQgLyogQ1NTVG9TdHlsZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDU1NUb1N0eWxlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTg4MkRBMjIxNTkzODQ4RDAwMDExNUVEIC8qIENTU1RvU3R5bGVNYXAuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTVG9TdHlsZU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjQ1NDgsNyArMjQ1NDcsNiBAQAogCQkJCTU1NzZBNTYyMUQ4OEE3MDgwMEND
QzA0QyAvKiBJbWFnZUZyYW1lLmNwcCAqLywKIAkJCQk1NTc2QTU2MzFEODhBNzA4MDBDQ0MwNEMg
LyogSW1hZ2VGcmFtZS5oICovLAogCQkJCUJDN0Y0NEE3MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFn
ZU9ic2VydmVyLmggKi8sCi0JCQkJQTg3NDhENzQxMkNDM0Y4OTAwMUZCQTQxIC8qIEltYWdlT3Jp
ZW50YXRpb24uY3BwICovLAogCQkJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJbWFnZU9y
aWVudGF0aW9uLmggKi8sCiAJCQkJNDkyOTFFNEExMzQxNzJDODAwRTc1M0RFIC8qIEltYWdlUmVu
ZGVyaW5nTW9kZS5oICovLAogCQkJCTU1NDY3NTc3MUZEMUZDMUEwMDNCMTBCMCAvKiBJbWFnZVNv
dXJjZS5jcHAgKi8sCkBAIC0yODYwNSw2ICsyODYwMyw3IEBACiAJCQkJRTFGRTEzNzUxODQwMkE2
NzAwODkyRjEzIC8qIENvbW1vbkNyeXB0b1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY2MEYzMkIxREZCQjEwNzAwNDE2RDZDIC8qIENvbW1vblZNLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QzkzRjM0QTFBQTZCQTVFMDBBOThCQUIgLyogQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFNEU5NEQ2MTIyRkYxNThBMDBERDE5MUYgLyogQ29tcGxleExp
bmVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRjRFNzhDMUU0NUMzRUYwMDZENzEwNSAv
KiBDb21wbGV4VGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QkE1MDkwMUJD
RkJEOTUwMEUzNEVGNyAvKiBDb21wb3NlZFRyZWVBbmNlc3Rvckl0ZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNDRGQTE4NTFCQ0E2QjVBMDA5MUI2RUYgLyogQ29tcG9zZWRUcmVlSXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMzA4MTksNyArMzA4MTgsNiBAQAogCQkJCTFBN0ZBNjE5
MEREQTNCM0EwMDI4RjhBNSAvKiBOZXR3b3JrU3RhdGVOb3RpZmllci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTEzRUYzNDQxNjg0RUNGNDAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMjY5Mzk3MjQxQTRBNUI2NDAwRTgzNDlEIC8qIE5GQS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJRTRFOTRENjEyMkZGMTU4QTAwREQxOTFGIC8qIENvbXBsZXhMaW5l
TGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjkzOTcyMjFBNEE0MTJGMDBFODM0OUQgLyog
TkZBTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY3NzI2MDExQTVCM0FEOTAwM0MyNEREIC8q
IE5GQVRvREZBLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VGNDNERDBFNjc0MDEyMDAxQzEyODcg
LyogTmluZVBpZWNlSW1hZ2UuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCShyZXZpc2lvbiAyNDg1OTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00ODc0LDQ5ICs0ODc0LDUwIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpvcGUKIAogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAKLXRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShJbWFn
ZU9yaWVudGF0aW9uRW51bSBlKQordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU1ByaW1pdGl2ZVZhbHVlKEltYWdlT3JpZW50YXRpb24gZSkKICAgICA6IENTU1ZhbHVlKFBy
aW1pdGl2ZUNsYXNzKQogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfREVHOwogICAg
IHN3aXRjaCAoZSkgewotICAgIGNhc2UgT3JpZ2luVG9wTGVmdDoKKyAgICBjYXNlIEltYWdlT3Jp
ZW50YXRpb246Ok9yaWdpblRvcExlZnQ6CiAgICAgICAgIG1fdmFsdWUubnVtID0gMDsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBPcmlnaW5SaWdodFRvcDoKKyAgICBjYXNlIEltYWdlT3JpZW50
YXRpb246Ok9yaWdpblJpZ2h0VG9wOgogICAgICAgICBtX3ZhbHVlLm51bSA9IDkwOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIE9yaWdpbkJvdHRvbVJpZ2h0OgorICAgIGNhc2UgSW1hZ2VPcmll
bnRhdGlvbjo6T3JpZ2luQm90dG9tUmlnaHQ6CiAgICAgICAgIG1fdmFsdWUubnVtID0gMTgwOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIE9yaWdpbkxlZnRCb3R0b206CisgICAgY2FzZSBJbWFn
ZU9yaWVudGF0aW9uOjpPcmlnaW5MZWZ0Qm90dG9tOgogICAgICAgICBtX3ZhbHVlLm51bSA9IDI3
MDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcmlnaW5Ub3BSaWdodDoKLSAgICBjYXNlIE9y
aWdpbkxlZnRUb3A6Ci0gICAgY2FzZSBPcmlnaW5Cb3R0b21MZWZ0OgotICAgIGNhc2UgT3JpZ2lu
UmlnaHRCb3R0b206CisgICAgY2FzZSBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2U6CisgICAg
Y2FzZSBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5Ub3BSaWdodDoKKyAgICBjYXNlIEltYWdlT3Jp
ZW50YXRpb246Ok9yaWdpbkxlZnRUb3A6CisgICAgY2FzZSBJbWFnZU9yaWVudGF0aW9uOjpPcmln
aW5Cb3R0b21MZWZ0OgorICAgIGNhc2UgSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luUmlnaHRCb3R0
b206CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIH0KIAotdGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEltYWdlT3JpZW50YXRpb25FbnVt
KCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBJ
bWFnZU9yaWVudGF0aW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNBbmdsZSgpKTsKICAgICBk
b3VibGUgcXVhcnRlcnMgPSA0ICogZG91YmxlVmFsdWUoQ1NTX1RVUk4pOwogICAgIGludCBvcmll
bnRhdGlvbiA9IDMgJiBzdGF0aWNfY2FzdDxpbnQ+KHF1YXJ0ZXJzIDwgMCA/IGZsb29yKHF1YXJ0
ZXJzKSA6IGNlaWwocXVhcnRlcnMpKTsKICAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7CiAgICAg
Y2FzZSAwOgotICAgICAgICByZXR1cm4gT3JpZ2luVG9wTGVmdDsKKyAgICAgICAgcmV0dXJuIElt
YWdlT3JpZW50YXRpb246Ok9yaWdpblRvcExlZnQ7CiAgICAgY2FzZSAxOgotICAgICAgICByZXR1
cm4gT3JpZ2luUmlnaHRUb3A7CisgICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpPcmln
aW5SaWdodFRvcDsKICAgICBjYXNlIDI6Ci0gICAgICAgIHJldHVybiBPcmlnaW5Cb3R0b21SaWdo
dDsKKyAgICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkJvdHRvbVJpZ2h0Owog
ICAgIGNhc2UgMzoKLSAgICAgICAgcmV0dXJuIE9yaWdpbkxlZnRCb3R0b207CisgICAgICAgIHJl
dHVybiBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5MZWZ0Qm90dG9tOwogICAgIH0KIAogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBPcmlnaW5Ub3BMZWZ0OworICAgIHJldHVy
biBJbWFnZU9yaWVudGF0aW9uOjpOb25lOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKENTU19JTUFH
RV9PUklFTlRBVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCShyZXZp
c2lvbiAyNDg1OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTQ0LDcgKzU0NCw3IEBAIERyYWdJbWFnZVJlZiBEYXRhVHJhbnNmZXI6
OmNyZWF0ZURyYWdJbWEKICAgICBsb2NhdGlvbiA9IG1fZHJhZ0xvY2F0aW9uOwogCiAgICAgaWYg
KG1fZHJhZ0ltYWdlKQotICAgICAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKG1f
ZHJhZ0ltYWdlLT5pbWFnZSgpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAg
ICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UobV9kcmFnSW1hZ2UtPmltYWdlKCks
IEltYWdlT3JpZW50YXRpb246Ok5vbmUpOwogCiAgICAgaWYgKG1fZHJhZ0ltYWdlRWxlbWVudCkg
ewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbV9kcmFnSW1hZ2VFbGVtZW50LT5kb2N1bWVu
dCgpLmZyYW1lKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcAkocmV2aXNpb24gMjQ4NTk5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxMCwxNyArNjEwLDEwIEBAIHZvaWQgSFRN
TENhbnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNzQ28KIAogICAgICAgICBpZiAoc2hvdWxkUGFp
bnQpIHsKICAgICAgICAgICAgIGlmIChoYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSkgewotICAgICAg
ICAgICAgICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGJ1ZmZlcigpOwotICAgICAgICAg
ICAgICAgIGlmIChpbWFnZUJ1ZmZlcikgewotICAgICAgICAgICAgICAgICAgICBpZiAobV9wcmVz
ZW50ZWRJbWFnZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb247Ci0jaWYgRU5BQkxFKENTU19JTUFHRV9P
UklFTlRBVElPTikKLSAgICAgICAgICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uRGVzY3JpcHRp
b24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0ocmVuZGVyZXIoKS0+c3R5bGUoKS5pbWFnZU9yaWVu
dGF0aW9uKCkpOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJ
bWFnZSgqbV9wcmVzZW50ZWRJbWFnZSwgc25hcHBlZEludFJlY3QociksIEltYWdlUGFpbnRpbmdP
cHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRpb24pKTsKLSAgICAgICAgICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1h
Z2VCdWZmZXIsIHNuYXBwZWRJbnRSZWN0KHIpKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgaWYgKG1fcHJlc2VudGVkSW1hZ2UpCisgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQuZHJhd0ltYWdlKCptX3ByZXNlbnRlZEltYWdlLCBzbmFwcGVkSW50UmVjdChyKSwgcmVuZGVy
ZXIoKS0+aW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChJbWFn
ZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBidWZmZXIoKSkKKyAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBzbmFwcGVkSW50UmVjdChyKSk7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChpc0dQVUJhc2VkKCkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDI0ODU5
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4MCw3ICsyODAsNyBAQCBGbG9hdFNpemUgQ2FjaGVkSW1hZ2U6OmltYWdl
U2l6ZUZvclJlbmRlCiAgICAgaWYgKCFtX2ltYWdlKQogICAgICAgICByZXR1cm4geyB9OwogCi0g
ICAgaWYgKGlzPEJpdG1hcEltYWdlPigqbV9pbWFnZSkgJiYgcmVuZGVyZXIgJiYgcmVuZGVyZXIt
PnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRp
b24pCisgICAgaWYgKGlzPEJpdG1hcEltYWdlPigqbV9pbWFnZSkgJiYgcmVuZGVyZXIgJiYgcmVu
ZGVyZXItPmltYWdlT3JpZW50YXRpb24oKSA9PSBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2Up
CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKm1faW1hZ2UpLnNpemVSZXNw
ZWN0aW5nT3JpZW50YXRpb24oKTsKIAogICAgIGlmIChpczxTVkdJbWFnZT4oKm1faW1hZ2UpICYm
IHNpemVUeXBlID09IFVzZWRTaXplKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAJKHJldmlzaW9uIDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTk3LDEwICsxMTk3LDEwIEBAIHZvaWQg
RHJhZ0NvbnRyb2xsZXI6OmRvSW1hZ2VEcmFnKEVsZW1lbnQKICAgICBpZiAoIWVsZW1lbnQucmVu
ZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24oZWxlbWVudC5yZW5kZXJlcigpLT5zaG91bGRSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbigpLCBlbGVtZW50LnJlbmRlcmVyKCktPnN0eWxlKCkuaW1hZ2VP
cmllbnRhdGlvbigpKTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gZWxlbWVu
dC5yZW5kZXJlcigpLT5pbWFnZU9yaWVudGF0aW9uKCk7CiAKICAgICBJbWFnZSogaW1hZ2UgPSBn
ZXRJbWFnZShlbGVtZW50KTsKLSAgICBpZiAoaW1hZ2UgJiYgIWxheW91dFJlY3QuaXNFbXB0eSgp
ICYmIHNob3VsZFVzZUNhY2hlZEltYWdlRm9yRHJhZ0ltYWdlKCppbWFnZSkgJiYgKGRyYWdJbWFn
ZSA9IERyYWdJbWFnZSB7IGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShpbWFnZSwgZWxlbWVudC5y
ZW5kZXJlcigpID8gb3JpZW50YXRpb25EZXNjcmlwdGlvbiA6IEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbigpKSB9KSkgeworICAgIGlmIChpbWFnZSAmJiAhbGF5b3V0UmVjdC5pc0VtcHR5KCkg
JiYgc2hvdWxkVXNlQ2FjaGVkSW1hZ2VGb3JEcmFnSW1hZ2UoKmltYWdlKSAmJiAoZHJhZ0ltYWdl
ID0gRHJhZ0ltYWdlIHsgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLCBvcmllbnRhdGlv
bikgfSkpIHsKICAgICAgICAgZHJhZ0ltYWdlID0gRHJhZ0ltYWdlIHsgZml0RHJhZ0ltYWdlVG9N
YXhTaXplKGRyYWdJbWFnZS5nZXQoKSwgbGF5b3V0UmVjdC5zaXplKCksIG1heERyYWdJbWFnZVNp
emUoKSkgfTsKICAgICAgICAgSW50U2l6ZSBmaXR0ZWRTaXplID0gZHJhZ0ltYWdlU2l6ZShkcmFn
SW1hZ2UuZ2V0KCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAJ
KHJldmlzaW9uIDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiwyMCArMTAyLDE1IEBAIHN0YXRpYyBEcmFnSW1hZ2VS
ZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbVMKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlv
bjsKLSNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQorICAgIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb247CiAgICAgaWYgKG5vZGUpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgICAgIGlmICghcmVuZGVyZXIgfHwgIWlz
PFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgICAgIGF1dG8mIHJlbmRlckVsZW1lbnQgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50Pigq
cmVuZGVyZXIpOwotICAgICAgICBvcmllbnRhdGlvbi5zZXRSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bihyZW5kZXJFbGVtZW50LnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkpOwotICAgICAg
ICBvcmllbnRhdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShyZW5kZXJFbGVtZW50LnN0eWxl
KCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICAgICAgb3JpZW50YXRpb24gPSBkb3duY2FzdDxS
ZW5kZXJFbGVtZW50PigqcmVuZGVyZXIpLmltYWdlT3JpZW50YXRpb24oKTsKICAgICB9Ci0jZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShub2RlKTsKLSNlbmRpZgorCiAgICAgUmVmUHRyPEltYWdlPiBp
bWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKFdURk1vdmUoc25hcHNob3QpLCBQcmVz
ZXJ2ZVJlc29sdXRpb246Olllcyk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0zMDUsNyArMzAwLDcgQEAgRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdl
VG9GcmFjdGlvbgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1EcmFnSW1hZ2VSZWYgY3JlYXRl
RHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQor
RHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSosIEltYWdlT3JpZW50
YXRpb24pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCShyZXZpc2lvbiAyNDg1OTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODQs
NyArODQsNyBAQCBEcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmCiBEcmFn
SW1hZ2VSZWYgcGxhdGZvcm1BZGp1c3REcmFnSW1hZ2VGb3JEZXZpY2VTY2FsZUZhY3RvcihEcmFn
SW1hZ2VSZWYsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKTsKIERyYWdJbWFnZVJlZiBkaXNzb2x2
ZURyYWdJbWFnZVRvRnJhY3Rpb24oRHJhZ0ltYWdlUmVmLCBmbG9hdCBkZWx0YSk7CiAKLURyYWdJ
bWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24pOworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFn
ZSosIEltYWdlT3JpZW50YXRpb24pOwogRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUljb25G
b3JDYWNoZWRJbWFnZUZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOwogCiBXRUJDT1JFX0VYUE9SVCBE
cmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTm9kZShGcmFtZSYsIE5vZGUmKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJ
KHJldmlzaW9uIDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDcgKzE4Myw3IEBAIGJvb2wgQml0
bWFwSW1hZ2U6Om5vdFNvbGlkQ29sb3IoKQogfQogI2VuZGlmCiAKLUltYWdlRHJhd1Jlc3VsdCBC
aXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIEJsZW5kTW9kZSBtb2RlLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pCitJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVu
ZE1vZGUgbW9kZSwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBv
cmllbnRhdGlvbikKIHsKICAgICBpZiAoZGVzdFJlY3QuaXNFbXB0eSgpIHx8IHNyY1JlY3QuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwpAQCAt
MjY4LDggKzI2OCw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGkK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBJbWFnZU9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKGRlc2NyaXB0aW9uLmltYWdlT3JpZW50YXRpb24oKSk7Ci0gICAgaWYgKGRlc2Ny
aXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRp
b24pCisgICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkK
ICAgICAgICAgb3JpZW50YXRpb24gPSBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChtX2N1cnJlbnRG
cmFtZSk7CiAKICAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBz
cmNSZWN0LCBJbnRTaXplKHNpemUoKSksIG9wLCBtb2RlLCBvcmllbnRhdGlvbik7CkBAIC0zMDYs
NyArMzA1LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDbwogICAg
ICAgICAvLyBUZW1wb3JhcmlseSByZXNldCBpbWFnZSBvYnNlcnZlciwgd2UgZG9uJ3Qgd2FudCB0
byByZWNlaXZlIGFueSBjaGFuZ2VJblJlY3QoKSBjYWxscyBkdWUgdG8gdGhpcyByZWxheW91dC4K
ICAgICAgICAgc2V0SW1hZ2VPYnNlcnZlcihudWxscHRyKTsKIAotICAgICAgICBkcmF3KGJ1ZmZl
ci0+Y29udGV4dCgpLCB0aWxlUmVjdCwgdGlsZVJlY3QsIG9wLCBibGVuZE1vZGUsIERlY29kaW5n
TW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAg
ICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgdGlsZVJlY3QsIHRpbGVSZWN0LCBvcCwgYmxlbmRN
b2RlLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsK
IAogICAgICAgICBzZXRJbWFnZU9ic2VydmVyKG9ic2VydmVyKTsKICAgICAgICAgYnVmZmVyLT5j
b252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgJKHJldmlzaW9uIDI0ODU5OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE2MSw3ICsxNjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gfGRlc3Ryb3lBbGx8IGFsb25nLgog
ICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkoYm9vbCBkZXN0cm95QWxsID0g
dHJ1ZSk7CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24pIG92ZXJyaWRlOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRp
b24pIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUg
PSBCbGVuZE1vZGU6Ok5vcm1hbCkgb3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZv
aWQgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0
b3IpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAkocmV2aXNpb24gMjQ4
NTk5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJh
dGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2YKICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6
ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24pCitJbWFnZURyYXdSZXN1bHQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9k
ZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgY29udGV4dC5z
ZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdl
bmVyYXRlZEltYWdlLmgJKHJldmlzaW9uIDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIEZsb2F0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9jcm9zc2ZhZGVTaXplOyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURy
YXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwg
RGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAg
IEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwogICAgIHZv
aWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CiAKICAgICBDcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZShJbWFnZSYgZnJvbUltYWdlLCBJbWFnZSYgdG9JbWFnZSwgZmxv
YXQgcGVyY2VudGFnZSwgY29uc3QgRmxvYXRTaXplJiBjcm9zc2ZhZGVTaXplLCBjb25zdCBGbG9h
dFNpemUmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBh
aW50SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCShyZXZpc2lvbiAyNDg1OTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTcwLDcgKzE3MCw3IEBAIEltYWdlRHJhd1Jlc3VsdCBDdXN0b21QYWludEltYWdlOjpk
b0N1c3QKICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWREcmF3OwogfQogCi1JbWFnZURy
YXdSZXN1bHQgQ3VzdG9tUGFpbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNv
ZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBD
dXN0b21QYWludEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoZGVzdENvbnRleHQpOwogICAgIGRlc3RDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlv
bihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgJKHJldmlzaW9uIDI0ODU5OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogCiAgICAgSW1hZ2VEcmF3
UmVzdWx0IGRvQ3VzdG9tUGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplJik7
CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24p
IGZpbmFsOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIGZpbmFs
OwogICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOwogCiAg
ICAgV2Vha1B0cjxQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnREZWZpbml0aW9uPiBtX3Bh
aW50RGVmaW5pdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dl
bmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24gMjQ4NTk5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
NDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCAv
KmRlc3Ryb3lBbGwqLyA9IHRydWUpIG92ZXJyaWRlIHsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZSA9
IDA7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGUg
PSAwOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUp
IG92ZXJyaWRlID0gMDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhZGllbnRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAJKHJldmlzaW9uIDI0ODU5OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw3ICszOSw3IEBAIEdyYWRpZW50SW1hZ2U6OkdyYWRpZW50SW1hZ2UoR3JhZGllbnQm
IGcKIAogR3JhZGllbnRJbWFnZTo6fkdyYWRpZW50SW1hZ2UoKSA9IGRlZmF1bHQ7CiAKLUltYWdl
RHJhd1Jlc3VsdCBHcmFkaWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29k
aW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IEdy
YWRpZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihkZXN0Q29udGV4dCk7CiAgICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNv
bXBvc2l0ZU9wLCBibGVuZE1vZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhZGllbnRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAkocmV2aXNpb24gMjQ4NTk5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgR3JhZGllbnRJbWFnZShH
cmFkaWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXco
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBmaW5hbDsKKyAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdN
b2RlLCBJbWFnZU9yaWVudGF0aW9uKSBmaW5hbDsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlKSBmaW5hbDsKICAgICBib29sIGlzR3JhZGllbnRJbWFnZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikg
Y29uc3QgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDI0ODU5OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTczMyw3ICs3MzMsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3SW1hCiAgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdJbWFnZShpbWFnZSwgZGVzdGluYXRp
b24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogCiAgICAgSW50ZXJwb2xhdGlvblF1
YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICByZXR1cm4g
aW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUs
IGltYWdlUGFpbnRpbmdPcHRpb25zLm1fZGVjb2RpbmdNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9u
cy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24pOworICAgIHJldHVybiBpbWFnZS5kcmF3KCp0aGlz
LCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb24p
OwogfQogCiBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9p
bnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMp
CkBAIC03NDUsNyArNzQ1LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJh
d1RpbAogICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGlu
YXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsK
IAogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9u
UXVhbGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24s
IHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9z
aXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50
aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSk7CisgICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZCgq
dGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxl
bmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMubV9vcmllbnRhdGlvbik7CiB9CiAKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNj
YWxlRmFjdG9yLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTEsMjkgKzIxMSwyOSBAQCBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGUgewogfTsKIAogc3Ry
dWN0IEltYWdlUGFpbnRpbmdPcHRpb25zIHsKLSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJs
ZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlIGRlY29k
aW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uID0gSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKCksIEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5ID0gSW50ZXJw
b2xhdGlvbkRlZmF1bHQpCisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMoQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgYmxl
bmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUgPSBE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0g
SW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSwgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlv
blF1YWxpdHkgPSBJbnRlcnBvbGF0aW9uRGVmYXVsdCkKICAgICAgICAgOiBtX2NvbXBvc2l0ZU9w
ZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQogICAgICAgICAsIG1fYmxlbmRNb2RlKGJsZW5kTW9k
ZSkKICAgICAgICAgLCBtX2RlY29kaW5nTW9kZShkZWNvZGluZ01vZGUpCi0gICAgICAgICwgbV9v
cmllbnRhdGlvbkRlc2NyaXB0aW9uKG9yaWVudGF0aW9uRGVzY3JpcHRpb24pCisgICAgICAgICwg
bV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKICAgICAgICAgLCBtX2ludGVycG9sYXRpb25RdWFs
aXR5KGludGVycG9sYXRpb25RdWFsaXR5KQogICAgIHsKICAgICB9CiAKLSAgICBJbWFnZVBhaW50
aW5nT3B0aW9ucyhJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlw
dGlvbiwgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBJbnRlcnBv
bGF0aW9uRGVmYXVsdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBDb21w
b3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgYmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWws
IERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUgPSBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKQor
ICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24sIElu
dGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5ID0gSW50ZXJwb2xhdGlvbkRl
ZmF1bHQsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291
cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGlu
Z01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykKICAgICAgICAg
OiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQogICAgICAgICAsIG1fYmxl
bmRNb2RlKGJsZW5kTW9kZSkKICAgICAgICAgLCBtX2RlY29kaW5nTW9kZShkZWNvZGluZ01vZGUp
Ci0gICAgICAgICwgbV9vcmllbnRhdGlvbkRlc2NyaXB0aW9uKG9yaWVudGF0aW9uRGVzY3JpcHRp
b24pCisgICAgICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKICAgICAgICAgLCBtX2lu
dGVycG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQogICAgIHsKICAgICB9CiAK
LSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0
aW9uUXVhbGl0eSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3Jp
cHRpb24gPSBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgYmxlbmRN
b2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUgPSBEZWNv
ZGluZ01vZGU6OlN5bmNocm9ub3VzKQorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEludGVycG9s
YXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5LCBJbWFnZU9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uID0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgYmxlbmRNb2RlID0g
QmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUgPSBEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKQogICAgICAgICA6IG1fY29tcG9zaXRlT3BlcmF0b3IoY29tcG9zaXRl
T3BlcmF0b3IpCiAgICAgICAgICwgbV9ibGVuZE1vZGUoYmxlbmRNb2RlKQogICAgICAgICAsIG1f
ZGVjb2RpbmdNb2RlKGRlY29kaW5nTW9kZSkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uRGVzY3Jp
cHRpb24ob3JpZW50YXRpb25EZXNjcmlwdGlvbikKKyAgICAgICAgLCBtX29yaWVudGF0aW9uKG9y
aWVudGF0aW9uKQogICAgICAgICAsIG1faW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlv
blF1YWxpdHkpCiAgICAgewogICAgIH0KQEAgLTI0Myw3ICsyNDMsNyBAQCBzdHJ1Y3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMgewogICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1fY29tcG9zaXRlT3BlcmF0
b3I7CiAgICAgQmxlbmRNb2RlIG1fYmxlbmRNb2RlOwogICAgIERlY29kaW5nTW9kZSBtX2RlY29k
aW5nTW9kZTsKLSAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gbV9vcmllbnRhdGlvbkRl
c2NyaXB0aW9uOworICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsKICAgICBJbnRl
cnBvbGF0aW9uUXVhbGl0eSBtX2ludGVycG9sYXRpb25RdWFsaXR5OwogfTsKIApAQCAtMzQ3LDcg
KzM0Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAKICNpZiBVU0UoQ0cpIHx8IFVTRShESVJFQ1Qy
RCkgfHwgVVNFKENBSVJPKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9y
bWFsLCBJbWFnZU9yaWVudGF0aW9uID0gSW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVy
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbiA9IEltYWdl
T3JpZW50YXRpb246Ok5vbmUpOwogI2VuZGlmCiAKICNpZiBVU0UoQ0cpIHx8IFVTRShESVJFQ1Qy
RCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCShyZXZpc2lvbiAyNDg1OTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDAsMTMgKzQwLDEzIEBAIEdyYXBoaWNzQ29udGV4dEltcGw6On5HcmFwaGljc0Nv
bnRleHRJbXAKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3SW1hZ2VJ
bXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewogICAgIEludGVycG9sYXRpb25R
dWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZShjb250ZXh0
LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICByZXR1
cm4gaW1hZ2UuZHJhdyhjb250ZXh0LCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5k
TW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdP
cHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CisgICAgcmV0dXJuIGltYWdlLmRyYXco
Y29udGV4dCwgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21w
b3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fZGVjb2RpbmdNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVu
dGF0aW9uKTsKIH0KIAogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdU
aWxlZEltYWdlSW1wbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25z
dCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICAgICBJbnRlcnBv
bGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUo
Y29udGV4dCwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0g
ICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZChjb250ZXh0LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0
aWxlU2l6ZSwgc3BhY2luZywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRv
ciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fZGVjb2RpbmdNb2RlKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKGNvbnRleHQsIGRl
c3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBpbWFnZVBhaW50aW5nT3B0aW9u
cy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwg
aW1hZ2VQYWludGluZ09wdGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fb3JpZW50YXRpb24pOwogfQogCiBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1w
bDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGlt
YWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVs
ZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1h
Z2VQYWludGluZ09wdGlvbnMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuY3BwCShyZXZpc2lvbiAyNDg1OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCB2
b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmCiAgICAgICAgIGltYWdlT2Jz
ZXJ2ZXIoKS0+ZGlkRHJhdygqdGhpcyk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJh
d1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNp
emUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5k
TW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUpCitJbWFnZURyYXdSZXN1
bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUm
IHNjYWxlZFRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIENvbG9yIGNvbG9yID0gc2luZ2xl
UGl4ZWxTb2xpZENvbG9yKCk7CiAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgewpAQCAtMTg0LDcg
KzE4NCw3IEBAIEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWMKICAgICAg
ICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0gb25lVGlsZVJlY3QueSgpKSAv
IHNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0V2lkdGgoZGVzdFJl
Y3Qud2lkdGgoKSAvIHNjYWxlLndpZHRoKCkpOwogICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRI
ZWlnaHQoZGVzdFJlY3QuaGVpZ2h0KCkgLyBzY2FsZS5oZWlnaHQoKSk7Ci0gICAgICAgIHJldHVy
biBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgZGVj
b2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgIHJldHVy
biBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgZGVj
b2RpbmdNb2RlLCBvcmllbnRhdGlvbik7CiAgICAgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKQEAgLTE5Niw3ICsxOTYsNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChH
cmFwaGljCiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRZKChkZXN0UmVjdC55KCkgLSBv
bmVUaWxlUmVjdC55KCkpIC8gc2NhbGUuaGVpZ2h0KCkpOwogICAgICAgICAgICAgdmlzaWJsZVNy
Y1JlY3Quc2V0V2lkdGgoMSk7CiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRIZWlnaHQo
ZGVzdFJlY3QuaGVpZ2h0KCkgLyBzY2FsZS5oZWlnaHQoKSk7Ci0gICAgICAgICAgICByZXR1cm4g
ZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIG9wLCBCbGVuZE1vZGU6Ok5vcm1h
bCwgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAg
ICAgICByZXR1cm4gZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIG9wLCBCbGVu
ZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdNb2RlLCBvcmllbnRhdGlvbik7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHNpemUoKS5oZWlnaHQoKSA9PSAxICYmIGludGVyc2VjdGlvbihvbmVUaWxlUmVj
dCwgZGVzdFJlY3QpLndpZHRoKCkgPT0gZGVzdFJlY3Qud2lkdGgoKSkgewogICAgICAgICAgICAg
RmxvYXRSZWN0IHZpc2libGVTcmNSZWN0OwpAQCAtMjA0LDcgKzIwNCw3IEBAIEltYWdlRHJhd1Jl
c3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWMKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0
LnNldFkoMCk7CiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0aChkZXN0UmVjdC53
aWR0aCgpIC8gc2NhbGUud2lkdGgoKSk7CiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRI
ZWlnaHQoMSk7Ci0gICAgICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJs
ZVNyY1JlY3QsIG9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBkZXN0
UmVjdCwgdmlzaWJsZVNyY1JlY3QsIG9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdNb2Rl
LCBvcmllbnRhdGlvbik7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKQEAgLTIzNiw3ICsyMzYs
NyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljCiAgICAgICAgICAg
ICAgICAgRmxvYXRSZWN0IGZyb21SZWN0KHRvRmxvYXRQb2ludChjdXJyZW50VGlsZVJlY3QubG9j
YXRpb24oKSAtIG9uZVRpbGVSZWN0LmxvY2F0aW9uKCkpLCBjdXJyZW50VGlsZVJlY3Quc2l6ZSgp
KTsKICAgICAgICAgICAgICAgICBmcm9tUmVjdC5zY2FsZSgxIC8gc2NhbGUud2lkdGgoKSwgMSAv
IHNjYWxlLmhlaWdodCgpKTsKIAotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRyYXcoY3R4dCwg
dG9SZWN0LCBmcm9tUmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBk
cmF3KGN0eHQsIHRvUmVjdCwgZnJvbVJlY3QsIG9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2Rp
bmdNb2RlLCBvcmllbnRhdGlvbik7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBJbWFn
ZURyYXdSZXN1bHQ6OkRpZFJlcXVlc3REZWNvZGluZykKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICB0b1ggKz0gY3VycmVudFRpbGVSZWN0LndpZHRo
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgJKHJldmlz
aW9uIDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE5MCw4ICsxOTAsOCBAQCBwcm90ZWN0ZWQ6CiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHZpcnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBz
cmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CiAjZW5kaWYKLSAgICB2aXJ0dWFsIEltYWdl
RHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
LCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgPSAwOwotICAgIElt
YWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiB0
aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlLCBEZWNvZGluZ01vZGUpOworICAgIHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXco
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbikgPSAwOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWQoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50
JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdl
T3JpZW50YXRpb24pOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1
bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9yKTsKIAogICAgIC8vIFN1cHBvcnRpbmcgdGlsZWQg
ZHJhd2luZwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFt
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
RnJhbWUuaAkocmV2aXNpb24gMjQ4NTk5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIHByaXZh
dGU6CiAgICAgU3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyBTdWJzYW1wbGlu
Z0xldmVsOjpEZWZhdWx0IH07CiAgICAgRGVjb2RpbmdPcHRpb25zIG1fZGVjb2RpbmdPcHRpb25z
OwogCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uIHsgRGVmYXVsdEltYWdlT3Jp
ZW50YXRpb24gfTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24geyBJbWFnZU9y
aWVudGF0aW9uOjpOb25lIH07CiAgICAgU2Vjb25kcyBtX2R1cmF0aW9uOwogICAgIGJvb2wgbV9o
YXNBbHBoYSB7IHRydWUgfTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZU9yaWVudGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmNwcAkocmV2aXNpb24gMjQ4NTk5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5jcHAJ
KG5vbmV4aXN0ZW50KQpAQCAtMSw2MyArMCwwIEBACi0KLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgotCi0jaW5jbHVkZSAiQWZmaW5lVHJh
bnNmb3JtLmgiCi0jaW5jbHVkZSAiRmxvYXRTaXplLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotQWZmaW5lVHJhbnNmb3JtIEltYWdlT3JpZW50YXRpb246OnRyYW5zZm9ybUZyb21EZWZhdWx0
KGNvbnN0IEZsb2F0U2l6ZSYgZHJhd25TaXplKSBjb25zdAotewotICAgIGZsb2F0IHcgPSBkcmF3
blNpemUud2lkdGgoKTsKLSAgICBmbG9hdCBoID0gZHJhd25TaXplLmhlaWdodCgpOwotCi0gICAg
c3dpdGNoIChtX29yaWVudGF0aW9uKSB7Ci0gICAgY2FzZSBPcmlnaW5Ub3BMZWZ0OgotICAgICAg
ICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7Ci0gICAgY2FzZSBPcmlnaW5Ub3BSaWdodDoKLSAg
ICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgtMSwgIDAsICAwLCAgMSwgIHcsIDApOwotICAg
IGNhc2UgT3JpZ2luQm90dG9tUmlnaHQ6Ci0gICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0o
LTEsICAwLCAgMCwgLTEsICB3LCBoKTsKLSAgICBjYXNlIE9yaWdpbkJvdHRvbUxlZnQ6Ci0gICAg
ICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oIDEsICAwLCAgMCwgLTEsICAwLCBoKTsKLSAgICBj
YXNlIE9yaWdpbkxlZnRUb3A6Ci0gICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oIDAsICAx
LCAgMSwgIDAsICAwLCAwKTsKLSAgICBjYXNlIE9yaWdpblJpZ2h0VG9wOgotICAgICAgICByZXR1
cm4gQWZmaW5lVHJhbnNmb3JtKCAwLCAgMSwgLTEsICAwLCAgdywgMCk7Ci0gICAgY2FzZSBPcmln
aW5SaWdodEJvdHRvbToKLSAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSggMCwgLTEsIC0x
LCAgMCwgIHcsIGgpOwotICAgIGNhc2UgT3JpZ2luTGVmdEJvdHRvbToKLSAgICAgICAgcmV0dXJu
IEFmZmluZVRyYW5zZm9ybSggMCwgLTEsICAxLCAgMCwgIDAsIGgpOwotICAgIH0KLQotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uaAkocmV2aXNpb24gMjQ4NTk5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMywxMDcgKzI0LDEwMCBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IEltYWdlT3JpZW50YXRpb25faAotI2RlZmluZSBJbWFnZU9yaWVudGF0aW9uX2gKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiRmxvYXRTaXpl
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwotY2xh
c3MgRmxvYXRTaXplOworc3RydWN0IEltYWdlT3JpZW50YXRpb24geworICAgIGVudW0gT3JpZW50
YXRpb24geworICAgICAgICBGcm9tSW1hZ2UgICAgICAgICA9IDAsIC8vIE9yaWVudGF0aW9uIGZy
b20gdGhlIGltYWdlIHNob3VsZCBiZSByZXNwZWN0ZWQuCisKKyAgICAgICAgLy8gVGhpcyByYW5n
ZSBpbnRlbnRpb25hbGx5IG1hdGNoZXMgdGhlIG9yaWVudGF0aW9uIHZhbHVlcyBmcm9tIHRoZSBF
WElGIHNwZWMuCisgICAgICAgIC8vIFNlZSBKRUlUQSBDUC0zNDUxLCBwYWdlIDE4LiBodHRwOi8v
d3d3LmV4aWYub3JnL0V4aWYyLTIuUERGCisgICAgICAgIE9yaWdpblRvcExlZnQgICAgID0gMSwg
Ly8gZGVmYXVsdAorICAgICAgICBPcmlnaW5Ub3BSaWdodCAgICA9IDIsIC8vIG1pcnJvciBhbG9u
ZyB5LWF4aXMKKyAgICAgICAgT3JpZ2luQm90dG9tUmlnaHQgPSAzLCAvLyAxODAgZGVncmVlIHJv
dGF0aW9uCisgICAgICAgIE9yaWdpbkJvdHRvbUxlZnQgID0gNCwgLy8gbWlycm9yIGFsb25nIHRo
ZSB4LWF4aXMKKyAgICAgICAgT3JpZ2luTGVmdFRvcCAgICAgPSA1LCAvLyBtaXJyb3IgYWxvbmcg
eC1heGlzICsgMjcwIGRlZ3JlZSBDVyByb3RhdGlvbgorICAgICAgICBPcmlnaW5SaWdodFRvcCAg
ICA9IDYsIC8vIDkwIGRlZ3JlZSBDVyByb3RhdGlvbgorICAgICAgICBPcmlnaW5SaWdodEJvdHRv
bSA9IDcsIC8vIG1pcnJvciBhbG9uZyB4LWF4aXMgKyA5MCBkZWdyZWUgQ1cgcm90YXRpb24KKyAg
ICAgICAgT3JpZ2luTGVmdEJvdHRvbSAgPSA4LCAvLyAyNzAgZGVncmVlIENXIHJvdGF0aW9uCiAK
LS8vIFRoaXMgZW51bSBpbnRlbnRpb25hbGx5IG1hdGNoZXMgdGhlIG9yaWVudGF0aW9uIHZhbHVl
cyBmcm9tIHRoZSBFWElGIHNwZWMuCi0vLyBTZWUgSkVJVEEgQ1AtMzQ1MSwgcGFnZSAxOC4gaHR0
cDovL3d3dy5leGlmLm9yZy9FeGlmMi0yLlBERgotZW51bSBJbWFnZU9yaWVudGF0aW9uRW51bSB7
Ci0gICAgLy8gIlRvcExlZnQiIG1lYW5zIHRoYXQgdGhlIDAgcm93IHN0YXJ0cyBhdCB0aGUgVG9w
LCB0aGUgMCBjb2x1bW4gc3RhcnRzIGF0IHRoZSBMZWZ0LgotICAgIE9yaWdpblRvcExlZnQgPSAx
LCAvLyBkZWZhdWx0Ci0gICAgT3JpZ2luVG9wUmlnaHQgPSAyLCAvLyBtaXJyb3IgYWxvbmcgeS1h
eGlzCi0gICAgT3JpZ2luQm90dG9tUmlnaHQgPSAzLCAvLyAxODAgZGVncmVlIHJvdGF0aW9uCi0g
ICAgT3JpZ2luQm90dG9tTGVmdCA9IDQsIC8vIG1pcnJvciBhbG9uZyB0aGUgeC1heGlzCi0gICAg
T3JpZ2luTGVmdFRvcCA9IDUsIC8vIG1pcnJvciBhbG9uZyB4LWF4aXMgKyAyNzAgZGVncmVlIENX
IHJvdGF0aW9uCi0gICAgT3JpZ2luUmlnaHRUb3AgPSA2LCAvLyA5MCBkZWdyZWUgQ1cgcm90YXRp
b24KLSAgICBPcmlnaW5SaWdodEJvdHRvbSA9IDcsIC8vIG1pcnJvciBhbG9uZyB4LWF4aXMgKyA5
MCBkZWdyZWUgQ1cgcm90YXRpb24KLSAgICBPcmlnaW5MZWZ0Qm90dG9tID0gOCwgLy8gMjcwIGRl
Z3JlZSBDVyByb3RhdGlvbgotICAgIC8vIEFsbCBvdGhlciB2YWx1ZXMgYXJlICJyZXNlcnZlZCIg
YXMgb2YgRVhJRiAyLjIKLSAgICBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbiA9IE9yaWdpblRvcExl
ZnQsCi19OworICAgICAgICBOb25lICAgICAgICAgICAgICA9IE9yaWdpblRvcExlZnQKKyAgICB9
OwogCi1lbnVtIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSB7Ci0gICAgRG9Ob3RSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbiA9IDAsCi0gICAgUmVzcGVjdEltYWdlT3JpZW50YXRpb24gPSAxCi19
OworICAgIEltYWdlT3JpZW50YXRpb24oKSA9IGRlZmF1bHQ7CiAKLXN0cnVjdCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24gewotICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbihSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24sCi0g
ICAgICAgIEltYWdlT3JpZW50YXRpb25FbnVtIG9yaWVudGF0aW9uKQotICAgICAgICA6IG1fcmVz
cGVjdE9yaWVudGF0aW9uKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAgICAgICAs
IG1fb3JpZW50YXRpb24ob3JpZW50YXRpb24pCisgICAgSW1hZ2VPcmllbnRhdGlvbihPcmllbnRh
dGlvbiBvcmllbnRhdGlvbikKKyAgICAgICAgOiBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQog
ICAgIHsKICAgICB9CiAKLSAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKQotICAgICAg
ICA6IG1fcmVzcGVjdE9yaWVudGF0aW9uKERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pCi0g
ICAgICAgICwgbV9vcmllbnRhdGlvbihEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikKKyAgICBzdGF0
aWMgT3JpZW50YXRpb24gZnJvbUVYSUZWYWx1ZShpbnQgZXhpZlZhbHVlKQogICAgIHsKKyAgICAg
ICAgcmV0dXJuIGlzVmFsaWRFWElGT3JpZW50YXRpb24oZXhpZlZhbHVlKSA/IHN0YXRpY19jYXN0
PE9yaWVudGF0aW9uPihleGlmVmFsdWUpIDogTm9uZTsKICAgICB9CiAKLSAgICBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uKQotICAgICAgICA6IG1fcmVzcGVjdE9yaWVudGF0aW9uKHNob3Vs
ZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAgICAgICAsIG1fb3JpZW50YXRpb24oRGVmYXVs
dEltYWdlT3JpZW50YXRpb24pCisgICAgb3BlcmF0b3IgT3JpZW50YXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX29yaWVudGF0aW9uOyB9CisKKyAgICBib29sIHVzZXNXaWR0aEFzSGVpZ2h0KCkgY29u
c3QKICAgICB7CisgICAgICAgIEFTU0VSVChpc1ZhbGlkRVhJRk9yaWVudGF0aW9uKG1fb3JpZW50
YXRpb24pKTsKKyAgICAgICAgLy8gVmFsdWVzIDUgdGhyb3VnaCA4IGFsbCBmbGlwIHRoZSB3aWR0
aC9oZWlnaHQuCisgICAgICAgIHJldHVybiBtX29yaWVudGF0aW9uID49IE9yaWdpbkxlZnRUb3Ag
JiYgbV9vcmllbnRhdGlvbiA8PSBPcmlnaW5MZWZ0Qm90dG9tOwogICAgIH0KIAotICAgIHZvaWQg
c2V0UmVzcGVjdEltYWdlT3JpZW50YXRpb24oUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNo
b3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSB7IG1fcmVzcGVjdE9yaWVudGF0aW9uID0gc2hv
dWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb247IH0KLSAgICBSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bkVudW0gcmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSB7IHJldHVybiBtX3Jlc3BlY3RPcmllbnRh
dGlvbjsgfQorICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1Gcm9tRGVmYXVsdChjb25zdCBG
bG9hdFNpemUmIGRyYXduU2l6ZSkgY29uc3QKKyAgICB7CisgICAgICAgIGZsb2F0IHcgPSBkcmF3
blNpemUud2lkdGgoKTsKKyAgICAgICAgZmxvYXQgaCA9IGRyYXduU2l6ZS5oZWlnaHQoKTsKIAot
ICAgIHZvaWQgc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oSW1hZ2VPcmllbnRhdGlvbkVudW0gb3Jp
ZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9Ci0gICAgSW1hZ2VPcmll
bnRhdGlvbkVudW0gaW1hZ2VPcmllbnRhdGlvbigpIHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0K
KyAgICAgICAgc3dpdGNoIChtX29yaWVudGF0aW9uKSB7CisgICAgICAgIGNhc2UgRnJvbUltYWdl
OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4g
QWZmaW5lVHJhbnNmb3JtKCk7CisgICAgICAgIGNhc2UgT3JpZ2luVG9wTGVmdDoKKyAgICAgICAg
ICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKKyAgICAgICAgY2FzZSBPcmlnaW5Ub3BSaWdo
dDoKKyAgICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oLTEsICAwLCAgMCwgIDEsICB3
LCAwKTsKKyAgICAgICAgY2FzZSBPcmlnaW5Cb3R0b21SaWdodDoKKyAgICAgICAgICAgIHJldHVy
biBBZmZpbmVUcmFuc2Zvcm0oLTEsICAwLCAgMCwgLTEsICB3LCBoKTsKKyAgICAgICAgY2FzZSBP
cmlnaW5Cb3R0b21MZWZ0OgorICAgICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSggMSwg
IDAsICAwLCAtMSwgIDAsIGgpOworICAgICAgICBjYXNlIE9yaWdpbkxlZnRUb3A6CisgICAgICAg
ICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCAwLCAgMSwgIDEsICAwLCAgMCwgMCk7CisgICAg
ICAgIGNhc2UgT3JpZ2luUmlnaHRUb3A6CisgICAgICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNm
b3JtKCAwLCAgMSwgLTEsICAwLCAgdywgMCk7CisgICAgICAgIGNhc2UgT3JpZ2luUmlnaHRCb3R0
b206CisgICAgICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCAwLCAtMSwgLTEsICAwLCAg
dywgaCk7CisgICAgICAgIGNhc2UgT3JpZ2luTGVmdEJvdHRvbToKKyAgICAgICAgICAgIHJldHVy
biBBZmZpbmVUcmFuc2Zvcm0oIDAsIC0xLCAgMSwgIDAsICAwLCBoKTsKKyAgICAgICAgfQogCi0g
ICAgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIG1fcmVzcGVjdE9yaWVudGF0aW9uOwotICAg
IEltYWdlT3JpZW50YXRpb25FbnVtIG1fb3JpZW50YXRpb247Ci19OwotCi1jbGFzcyBJbWFnZU9y
aWVudGF0aW9uIHsKLXB1YmxpYzoKLSAgICBJbWFnZU9yaWVudGF0aW9uKCkKLSAgICAgICAgOiBt
X29yaWVudGF0aW9uKERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKQotICAgIHsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKICAg
ICB9CiAKLSAgICBleHBsaWNpdCBJbWFnZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb25FbnVt
IG9yaWVudGF0aW9uKQotICAgICAgICA6IG1fb3JpZW50YXRpb24ob3JpZW50YXRpb24pCi0gICAg
ewotICAgIH0KK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IE9yaWVudGF0aW9uIEVYSUZGaXJz
dCA9IE9yaWdpblRvcExlZnQ7CisgICAgc3RhdGljIGNvbnN0IE9yaWVudGF0aW9uIEVYSUZMYXN0
ID0gT3JpZ2luTGVmdEJvdHRvbTsKKyAgICBzdGF0aWMgY29uc3QgT3JpZW50YXRpb24gRmlyc3Qg
PSBGcm9tSW1hZ2U7CisgICAgc3RhdGljIGNvbnN0IE9yaWVudGF0aW9uIExhc3QgPSBFWElGTGFz
dDsKIAotICAgIGJvb2wgdXNlc1dpZHRoQXNIZWlnaHQoKSBjb25zdAorICAgIHN0YXRpYyBib29s
IGlzVmFsaWRPcmllbnRhdGlvbihpbnQgb3JpZW50YXRpb24pCiAgICAgewotICAgICAgICAvLyBW
YWx1ZXMgNSB0aHJvdWdoIDggYWxsIGZsaXAgdGhlIHdpZHRoL2hlaWdodC4KLSAgICAgICAgcmV0
dXJuIG1fb3JpZW50YXRpb24gPj0gT3JpZ2luTGVmdFRvcDsKKyAgICAgICAgcmV0dXJuIG9yaWVu
dGF0aW9uID49IHN0YXRpY19jYXN0PGludD4oRmlyc3QpICYmIG9yaWVudGF0aW9uIDw9IHN0YXRp
Y19jYXN0PGludD4oTGFzdCk7CiAgICAgfQogCi0gICAgLy8gSW1hZ2VPcmllbnRhdGlvbkVudW0g
Y3VycmVudGx5IG1hdGNoZXMgRVhJRiB2YWx1ZXMsIGhvd2V2ZXIgY29kZSBvdXRzaWRlCi0gICAg
Ly8gdGhpcyBmdW5jdGlvbiBzaG91bGQgbmV2ZXIgYXNzdW1lIHRoYXQuCi0gICAgc3RhdGljIElt
YWdlT3JpZW50YXRpb24gZnJvbUVYSUZWYWx1ZShpbnQgZXhpZlZhbHVlKQorICAgIHN0YXRpYyBi
b29sIGlzVmFsaWRFWElGT3JpZW50YXRpb24oaW50IG9yaWVudGF0aW9uKQogICAgIHsKLSAgICAg
ICAgLy8gVmFsdWVzIGRpcmVjdCBmcm9tIGltYWdlcyBtYXkgYmUgaW52YWxpZCwgaW4gd2hpY2gg
Y2FzZSB3ZSB1c2UgdGhlIGRlZmF1bHQuCi0gICAgICAgIGlmIChleGlmVmFsdWUgPCBPcmlnaW5U
b3BMZWZ0IHx8IGV4aWZWYWx1ZSA+IE9yaWdpbkxlZnRCb3R0b20pCi0gICAgICAgICAgICByZXR1
cm4gSW1hZ2VPcmllbnRhdGlvbigpOwotICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbihz
dGF0aWNfY2FzdDxJbWFnZU9yaWVudGF0aW9uRW51bT4oZXhpZlZhbHVlKSk7CisgICAgICAgIHJl
dHVybiBvcmllbnRhdGlvbiA+PSBzdGF0aWNfY2FzdDxpbnQ+KEVYSUZGaXJzdCkgJiYgb3JpZW50
YXRpb24gPD0gc3RhdGljX2Nhc3Q8aW50PihFWElGTGFzdCk7CiAgICAgfQogCi0gICAgLy8gVGhp
cyB0cmFuc2Zvcm0gY2FuIGJlIHVzZWQgZm9yIGRyYXdpbmcgYW4gaW1hZ2UgYWNjb3JkaW5nIHRv
IHRoZSBvcmllbnRhdGlvbi4KLSAgICAvLyBJdCBzaG91bGQgYmUgdXNlZCBpbiBhIHJpZ2h0LWhh
bmRlZCBjb29yZGluYXRlIHN5c3RlbS4KLSAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtRnJv
bURlZmF1bHQoY29uc3QgRmxvYXRTaXplJiBkcmF3blNpemUpIGNvbnN0OwotCi0gICAgaW5saW5l
IG9wZXJhdG9yIEltYWdlT3JpZW50YXRpb25FbnVtKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRh
dGlvbjsgfQotICAgIAotICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSW1hZ2VPcmll
bnRhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLm1fb3JpZW50YXRpb24gPT0gbV9v
cmllbnRhdGlvbjsgfQotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSW1hZ2VPcmll
bnRhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgLy8gRklYTUU6IFRoaXMgb25seSBuZWVkcyB0byBiZSBvbmUgYnl0ZS4KLSAg
ICBJbWFnZU9yaWVudGF0aW9uRW51bSBtX29yaWVudGF0aW9uOworICAgIE9yaWVudGF0aW9uIG1f
b3JpZW50YXRpb24geyBOb25lIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBJbWFnZU9yaWVudGF0aW9uX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAJKHJldmlzaW9uIDI0ODU5OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjg5LDcgKzY4OSw3IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0cmVh
bSYgdHMpCiAgICAgdHMuZHVtcFByb3BlcnR5KCJzb2xpZC1jb2xvciIsIHNpbmdsZVBpeGVsU29s
aWRDb2xvcigpKTsKIAogICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBmcmFtZU9y
aWVudGF0aW9uQXRJbmRleCgwKTsKLSAgICBpZiAob3JpZW50YXRpb24gIT0gT3JpZ2luVG9wTGVm
dCkKKyAgICBpZiAob3JpZW50YXRpb24gIT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkKICAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJvcmllbnRhdGlvbiIsIG9yaWVudGF0aW9uKTsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZElt
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAyNDg1OTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6
TmFtZWRJbWFnZUdlbmUKICAgICBzZXRDb250YWluZXJTaXplKHNpemUpOwogfQogCi1JbWFnZURy
YXdSZXN1bHQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBE
ZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK0ltYWdlRHJhd1Jlc3Vs
dCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5n
TW9kZSwgSW1hZ2VPcmllbnRhdGlvbikKIHsKICNpZiBVU0UoTkVXX1RIRU1FKSB8fCBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihj
b250ZXh0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oCShyZXZpc2lvbiAyNDg1OTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1h
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cm90ZWN0ZWQ6Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0
aW9uKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUp
IG92ZXJyaWRlOwogCiAgICAgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBj
b25zdCBGbG9hdFNpemUmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hdGl2ZUltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuaAkocmV2aXNpb24gMjQ4NTk5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyAr
NjYsNyBAQCBJbnRTaXplIG5hdGl2ZUltYWdlU2l6ZShjb25zdCBOYXRpdmVJbWFnCiBib29sIG5h
dGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKIENvbG9yIG5hdGl2ZUlt
YWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiAKLXZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIGNvbnN0IEltYWdlT3JpZW50YXRpb24mKTsKK3ZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pOwogdm9pZCBjbGVhck5h
dGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiAgICAgCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0JKHJldmlz
aW9uIDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTUzMSw3
ICs1MzEsNyBAQCBib29sIEltYWdlRGVjb2RlckFWRk9iakM6OmZyYW1lSXNDb21wbGV0CiAKIElt
YWdlT3JpZW50YXRpb24gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6ZnJhbWVPcmllbnRhdGlvbkF0SW5k
ZXgoc2l6ZV90KSBjb25zdAogewotICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7CisgICAg
cmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok5vbmU7CiB9CiAKIFNlY29uZHMgSW1hZ2VEZWNvZGVy
QVZGT2JqQzo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9D
YWlyb09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNDg1OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzksNyArMTc5LDcgQEAgc3RhdGljIHZvaWQgZHJhd1NoYWRvd0xheWVyQnVmZmVyKFBs
YXRmbwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpIHsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBs
YXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgRmxvYXRSZWN0KHJvdW5kZWRJbnRQb2ludChs
YXllck9yaWdpbiksIGxheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGxheWVyU2l6
ZSksIHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1h
bCwgSW1hZ2VPcmllbnRhdGlvbigpLAorICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1D
b250ZXh0LCBzdXJmYWNlLmdldCgpLCBGbG9hdFJlY3Qocm91bmRlZEludFBvaW50KGxheWVyT3Jp
Z2luKSwgbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbGF5ZXJTaXplKSwgc2hh
ZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBJbWFn
ZU9yaWVudGF0aW9uOjpOb25lLAogICAgICAgICAgICAgSW50ZXJwb2xhdGlvbkRlZmF1bHQsIHNo
YWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKICAgICB9CiB9CkBAIC0xOTIs
NyArMTkyLDcgQEAgc3RhdGljIHZvaWQgZHJhd1NoYWRvd0ltYWdlKFBsYXRmb3JtQ29udAogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkpIHsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29u
dGV4dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHNoYWRvd1N0YXRlLmdsb2Jh
bENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbigp
LAorICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgp
LCBkZXN0UmVjdCwgc3JjUmVjdCwgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZTo6Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lLAogICAgICAgICAgICAg
SW50ZXJwb2xhdGlvbkRlZmF1bHQsIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0
ZSgpKTsKICAgICB9CiB9CkBAIC04ODksNyArODg5LDcgQEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
UGxhdGZvcm1Db250ZXh0Q2FpcgogICAgICAgICBDYWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9w
ZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUpOwog
CiAgICAgRmxvYXRSZWN0IGRzdCA9IGRlc3RSZWN0OwotICAgIGlmIChvcmllbnRhdGlvbiAhPSBE
ZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikgeworICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbWFnZU9y
aWVudGF0aW9uOjpOb25lKSB7CiAgICAgICAgIC8vIEltYWdlT3JpZW50YXRpb24gZXhwZWN0cyB0
aGUgb3JpZ2luIHRvIGJlIGF0ICgwLCAwKS4KICAgICAgICAgQ2Fpcm86OnRyYW5zbGF0ZShwbGF0
Zm9ybUNvbnRleHQsIGRzdC54KCksIGRzdC55KCkpOwogICAgICAgICBkc3Quc2V0TG9jYXRpb24o
RmxvYXRQb2ludCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCShyZXZpc2lvbiAyNDg1
OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU0LDcgKzM1NCw3IEBAIHZvaWQgSW1hZ2VC
dWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiAKIHsKICAgICBCYWNraW5nU3RvcmVDb3B5IGNv
cHlNb2RlID0gJmRlc3RpbmF0aW9uQ29udGV4dCA9PSAmY29udGV4dCgpID8gQ29weUJhY2tpbmdT
dG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBj
b3B5SW1hZ2UoY29weU1vZGUpOwotICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3SW1hZ2UoKmlt
YWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9k
ZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KCkpKTsKKyAgICBkZXN0aW5hdGlvbkNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUsIERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpKTsKIH0KIAogdm9pZCBJbWFn
ZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCShy
ZXZpc2lvbiAyNDg1OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9OYXRpdmVJbWFnZUNhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBD
b2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjCiAgICAgcmV0dXJuIGNvbG9y
RnJvbVByZW11bHRpcGxpZWRBUkdCKCpwaXhlbCk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEludFNpemUmIGltYWdlU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSBibGVuZE1vZGUsIGNvbnN0IEltYWdlT3JpZW50YXRpb24mIG9yaWVudGF0aW9u
KQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9k
ZSwgb3JpZW50YXRpb24pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkocmV2aXNpb24gMjQ4
NTk5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjbwogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShj
b250ZXh0LCBhZGp1c3RlZERlc3RSZWN0LngoKSwgYWRqdXN0ZWREZXN0UmVjdC55KCkpOwogICAg
IGFkanVzdGVkRGVzdFJlY3Quc2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKIAotICAgIGlmIChv
cmllbnRhdGlvbiAhPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikgeworICAgIGlmIChvcmllbnRh
dGlvbiAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKSB7CiAgICAgICAgIENHQ29udGV4dENvbmNh
dENUTShjb250ZXh0LCBvcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3RlZERl
c3RSZWN0LnNpemUoKSkpOwogICAgICAgICBpZiAob3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWln
aHQoKSkgewogICAgICAgICAgICAgLy8gVGhlIGRlc3RpbmF0aW9uIHJlY3Qgd2lsbCBoYXZlIGl0
J3Mgd2lkdGggYW5kIGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24g
b2YKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rl
ckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5jcHAJKHJldmlzaW9uIDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uRnJv
bVAKICAgICBBU1NFUlQoaW1hZ2VQcm9wZXJ0aWVzKTsKICAgICBDRk51bWJlclJlZiBvcmllbnRh
dGlvblByb3BlcnR5ID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGltYWdlUHJv
cGVydGllcywga0NHSW1hZ2VQcm9wZXJ0eU9yaWVudGF0aW9uKTsKICAgICBpZiAoIW9yaWVudGF0
aW9uUHJvcGVydHkpCi0gICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7CisgICAgICAg
IHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpOb25lOwogICAgIAogICAgIGludCBleGlmVmFsdWU7
CiAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShvcmllbnRhdGlvblByb3BlcnR5LCBrQ0ZOdW1iZXJJbnRU
eXBlLCAmZXhpZlZhbHVlKTsKQEAgLTM1MCw3ICszNTAsNyBAQCBJbWFnZU9yaWVudGF0aW9uIElt
YWdlRGVjb2RlckNHOjpmcmFtZU9yCiB7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
cHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleCht
X25hdGl2ZURlY29kZXIuZ2V0KCksIGluZGV4LCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkp
OwogICAgIGlmICghcHJvcGVydGllcykKLSAgICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb24o
KTsKKyAgICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok5vbmU7CiAgICAgCiAgICAgcmV0
dXJuIG9yaWVudGF0aW9uRnJvbVByb3BlcnRpZXMocHJvcGVydGllcy5nZXQoKSk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJ
bWFnZUNHLmNwcAkocmV2aXNpb24gMjQ4NTk5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5
LDcgQEAgQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoYwogICAgIHJldHVy
biBDb2xvcihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVs
WzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7CiB9CiAKLXZvaWQgZHJh
d05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVu
ZE1vZGUgbW9kZSwgY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYgb3JpZW50YXRpb24pCit2b2lkIGRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlIG1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgLy8gU3Vi
c2FtcGxpbmcgbWF5IGhhdmUgZ2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4g
c2l6ZSgpLgogICAgIEludFNpemUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6
ZShpbWFnZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAkocmV2aXNpb24gMjQ4NTk5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OnVw
ZGF0ZUNhY2hlZEltYWdlCiAgICAgZGVjb2RlZFNpemVDaGFuZ2VkKGludGVybmFsU2l6ZS51bmNs
YW1wZWRBcmVhKCkgKiA0KTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IFBERkRvY3VtZW50SW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9k
ZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCitJbWFnZURyYXdS
ZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24p
CiB7CiAgICAgaWYgKCFtX2RvY3VtZW50IHx8ICFtX2hhc1BhZ2UpCiAgICAgICAgIHJldHVybiBJ
bWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCShyZXZpc2lvbiAy
NDg1OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExl
bmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBvdmVycmlk
ZTsKICAgICBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgSW1hZ2VEcmF3
UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERl
Y29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAgICBJ
bWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKIAogICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBib29s
IGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAkocmV2aXNpb24gMjQ4NTk5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0MTEsMTEgKzE0MTEsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmhhbmRsZQogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV90YWcobWVzc2FnZSwgJnRh
Z3MpOwogICAgICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgR1NUX1RBR19J
TUFHRV9PUklFTlRBVElPTiwgJnRhZy5vdXRQdHIoKSkpIHsKICAgICAgICAgICAgIGlmICghZ19z
dHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS05MCIpKQotICAgICAgICAgICAgICAgIHNldFZpZGVv
U291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbihPcmlnaW5SaWdodFRvcCkpOworICAg
ICAgICAgICAgICAgIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbjo6
T3JpZ2luUmlnaHRUb3ApOwogICAgICAgICAgICAgZWxzZSBpZiAoIWdfc3RyY21wMCh0YWcuZ2V0
KCksICJyb3RhdGUtMTgwIikpCi0gICAgICAgICAgICAgICAgc2V0VmlkZW9Tb3VyY2VPcmllbnRh
dGlvbihJbWFnZU9yaWVudGF0aW9uKE9yaWdpbkJvdHRvbVJpZ2h0KSk7CisgICAgICAgICAgICAg
ICAgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5Cb3R0
b21SaWdodCk7CiAgICAgICAgICAgICBlbHNlIGlmICghZ19zdHJjbXAwKHRhZy5nZXQoKSwgInJv
dGF0ZS0yNzAiKSkKLSAgICAgICAgICAgICAgICBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKElt
YWdlT3JpZW50YXRpb24oT3JpZ2luTGVmdEJvdHRvbSkpOworICAgICAgICAgICAgICAgIHNldFZp
ZGVvU291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luTGVmdEJvdHRvbSk7
CiAgICAgICAgIH0KICAgICAgICAgZ3N0X3RhZ19saXN0X3VucmVmKHRhZ3MpOwogICAgICAgICBi
cmVhazsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAJKHJldmlzaW9uIDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODg3LDcgKzg4Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6cGEKIAogICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5n
T3B0aW9ucyhDb21wb3NpdGVDb3B5KTsKICAgICBpZiAobV9yZW5kZXJpbmdDYW5CZUFjY2VsZXJh
dGVkKQotICAgICAgICBwYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNl
dEltYWdlT3JpZW50YXRpb25FbnVtKG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbik7CisgICAgICAg
IHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uID0gbV92aWRlb1NvdXJjZU9yaWVudGF0aW9u
OwogCiAgICAgYXV0byBnc3RJbWFnZSA9IEltYWdlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZShtX3Nh
bXBsZS5nZXQoKSk7CiAgICAgaWYgKCFnc3RJbWFnZSkKQEAgLTk2NSw3ICs5NjUsNyBAQCBOYXRp
dmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtCiB9CiAjZW5kaWYgLy8gVVNFKEdT
VFJFQU1FUl9HTCkKIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpzZXRW
aWRlb1NvdXJjZU9yaWVudGF0aW9uKGNvbnN0IEltYWdlT3JpZW50YXRpb24mIG9yaWVudGF0aW9u
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpzZXRWaWRlb1NvdXJjZU9y
aWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgaWYgKG1fdmlk
ZW9Tb3VyY2VPcmllbnRhdGlvbiA9PSBvcmllbnRhdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAt
OTgwLDE2ICs5ODAsMTYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpz
ZQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1cGRhdGVUZXh0dXJlTWFw
cGVyRmxhZ3MoKQogewogICAgIHN3aXRjaCAobV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKSB7Ci0g
ICAgY2FzZSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjoKKyAgICBjYXNlIEltYWdlT3JpZW50YXRp
b246Ok9yaWdpblRvcExlZnQ6CiAgICAgICAgIG1fdGV4dHVyZU1hcHBlckZsYWdzID0gMDsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcmlnaW5SaWdodFRvcDoKKyAgICBjYXNlIEltYWdlT3Jp
ZW50YXRpb246Ok9yaWdpblJpZ2h0VG9wOgogICAgICAgICBtX3RleHR1cmVNYXBwZXJGbGFncyA9
IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkUm90YXRlVGV4dHVyZTkwOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIE9yaWdpbkJvdHRvbVJpZ2h0OgorICAgIGNhc2UgSW1hZ2VPcmllbnRhdGlvbjo6
T3JpZ2luQm90dG9tUmlnaHQ6CiAgICAgICAgIG1fdGV4dHVyZU1hcHBlckZsYWdzID0gVGV4dHVy
ZU1hcHBlckdMOjpTaG91bGRSb3RhdGVUZXh0dXJlMTgwOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIE9yaWdpbkxlZnRCb3R0b206CisgICAgY2FzZSBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5M
ZWZ0Qm90dG9tOgogICAgICAgICBtX3RleHR1cmVNYXBwZXJGbGFncyA9IFRleHR1cmVNYXBwZXJH
TDo6U2hvdWxkUm90YXRlVGV4dHVyZTI3MDsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuaAkocmV2aXNpb24gMjQ4NTk5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMTg1LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0
VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihjb25zdCBJbWFnZU9yaWVudGF0aW9uJik7CisgICAgdm9p
ZCBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24pOwogICAgIEdzdEVs
ZW1lbnQqIHBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9waXBlbGluZS5nZXQoKTsgfQogCiAg
ICAgdmlydHVhbCBib29sIGhhbmRsZVN5bmNNZXNzYWdlKEdzdE1lc3NhZ2UqKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3Bp
ZXJHU3RyZWFtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwCShyZXZpc2lv
biAyNDg1OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsMTcg
Kzk3LDE3IEBAIHZvaWQgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjp1cGRhdGUKICAgICBt
X3RleHR1cmVTcGFjZU1hdHJpeC5tYWtlSWRlbnRpdHkoKTsKIAogICAgIHN3aXRjaCAobV9vcmll
bnRhdGlvbikgewotICAgIGNhc2UgRGVmYXVsdEltYWdlT3JpZW50YXRpb246CisgICAgY2FzZSBJ
bWFnZU9yaWVudGF0aW9uOjpPcmlnaW5Ub3BMZWZ0OgogICAgICAgICBicmVhazsKLSAgICBjYXNl
IE9yaWdpblJpZ2h0VG9wOgorICAgIGNhc2UgSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luUmlnaHRU
b3A6CiAgICAgICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4LnJvdGF0ZSgtOTApOwogICAgICAgICBt
X3RleHR1cmVTcGFjZU1hdHJpeC50cmFuc2xhdGUoLTEsIDApOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIE9yaWdpbkJvdHRvbVJpZ2h0OgorICAgIGNhc2UgSW1hZ2VPcmllbnRhdGlvbjo6T3Jp
Z2luQm90dG9tUmlnaHQ6CiAgICAgICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4LnJvdGF0ZSgxODAp
OwogICAgICAgICBtX3RleHR1cmVTcGFjZU1hdHJpeC50cmFuc2xhdGUoLTEsIC0xKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBPcmlnaW5MZWZ0Qm90dG9tOgorICAgIGNhc2UgSW1hZ2VPcmll
bnRhdGlvbjo6T3JpZ2luTGVmdEJvdHRvbToKICAgICAgICAgbV90ZXh0dXJlU3BhY2VNYXRyaXgu
cm90YXRlKC0yNzApOwogICAgICAgICBtX3RleHR1cmVTcGFjZU1hdHJpeC50cmFuc2xhdGUoMCwg
LTEpOwogICAgICAgICBicmVhazsKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIFZpZGVvVGV4dHVy
ZUNvcGllckdTdHJlYW1lcjo6dXBkYXRlCiAgICAgICAgIC0xLCAxLCAtKGZhclZhbHVlICsgbmVh
clZhbHVlKSAvIChmYXJWYWx1ZSAtIG5lYXJWYWx1ZSksIDEpOwogfQogCi1ib29sIFZpZGVvVGV4
dHVyZUNvcGllckdTdHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdM
dWludCBpbnB1dFRleHR1cmUsIEludFNpemUmIGZyYW1lU2l6ZSwgR0x1aW50IG91dHB1dFRleHR1
cmUsIEdMZW51bSBvdXRwdXRUYXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3Jt
YXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBib29sIGZsaXBZLCBJbWFnZU9yaWVudGF0
aW9uJiBzb3VyY2VPcmllbnRhdGlvbikKK2Jvb2wgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVy
Ojpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR0x1aW50IGlucHV0VGV4dHVyZSwg
SW50U2l6ZSYgZnJhbWVTaXplLCBHTHVpbnQgb3V0cHV0VGV4dHVyZSwgR0xlbnVtIG91dHB1dFRh
cmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xlbnVtIGZvcm1hdCwg
R0xlbnVtIHR5cGUsIGJvb2wgZmxpcFksIEltYWdlT3JpZW50YXRpb24gc291cmNlT3JpZW50YXRp
b24pCiB7CiAgICAgaWYgKCFtX3NoYWRlclByb2dyYW0gfHwgIW1fZnJhbWVidWZmZXIgfHwgIW1f
dmJvIHx8IGZyYW1lU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVD
b3BpZXJHU3RyZWFtZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmgJKHJldmlzaW9u
IDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9W
aWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMs
NyBAQCBwdWJsaWM6CiAgICAgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyKENvbG9yQ29udmVy
c2lvbik7CiAgICAgflZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcigpOwogCi0gICAgYm9vbCBj
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR0x1aW50IGlucHV0VGV4dHVyZSwgSW50
U2l6ZSYgZnJhbWVTaXplLCBHTHVpbnQgb3V0cHV0VGV4dHVyZSwgR0xlbnVtIG91dHB1dFRhcmdl
dCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xlbnVtIGZvcm1hdCwgR0xl
bnVtIHR5cGUsIGJvb2wgZmxpcFksIEltYWdlT3JpZW50YXRpb24mIHNvdXJjZU9yaWVudGF0aW9u
KTsKKyAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHTHVpbnQgaW5w
dXRUZXh0dXJlLCBJbnRTaXplJiBmcmFtZVNpemUsIEdMdWludCBvdXRwdXRUZXh0dXJlLCBHTGVu
dW0gb3V0cHV0VGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVu
dW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgYm9vbCBmbGlwWSwgSW1hZ2VPcmllbnRhdGlvbiBzb3Vy
Y2VPcmllbnRhdGlvbik7CiAgICAgdm9pZCB1cGRhdGVDb2xvckNvbnZlcnNpb25NYXRyaXgoQ29s
b3JDb252ZXJzaW9uKTsKICAgICB2b2lkIHVwZGF0ZVRleHR1cmVTcGFjZU1hdHJpeCgpOwogICAg
IHZvaWQgdXBkYXRlVHJhbnNmb3JtYXRpb25NYXRyaXgoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlv
bnMuY3BwCShyZXZpc2lvbiAyNDg1OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEzLDcg
KzgxMyw3IEBAIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmUKICAgICBj
b250ZXh0LT5TZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKICAgICBhZGp1c3RlZERlc3RSZWN0LnNl
dExvY2F0aW9uKEZsb2F0UG9pbnQoKSk7CiAKLSAgICBpZiAob3JpZW50YXRpb24gIT0gRGVmYXVs
dEltYWdlT3JpZW50YXRpb24pIHsKKyAgICBpZiAob3JpZW50YXRpb24gIT0gSW1hZ2VPcmllbnRh
dGlvbjo6Tm9uZSkgewogICAgICAgICBjb25jYXRDVE0ocGxhdGZvcm1Db250ZXh0LCBvcmllbnRh
dGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3RlZERlc3RSZWN0LnNpemUoKSkpOwogICAg
ICAgICBpZiAob3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSkgewogICAgICAgICAgICAg
Ly8gVGhlIGRlc3RpbmF0aW9uIHJlY3Qgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5kIGhlaWdodCBh
bHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAJKHJldmlz
aW9uIDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUNHV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBib29sIEJpdG1hcElt
YWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNCiAgICAgaWYgKHNpemUpCiAgICAgICAgIGRyYXdG
cmFtZU1hdGNoaW5nU291cmNlU2l6ZShnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8u
Ym1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksICpzaXplLCBDb21wb3NpdGVDb3B5KTsKICAgICBl
bHNlCi0gICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lk
dGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndp
ZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbXBvc2l0ZUNvcHksIEJsZW5kTW9kZTo6Tm9y
bWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24oKSk7CisgICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJt
V2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXpl
LndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbXBvc2l0ZUNvcHksIEJsZW5kTW9kZTo6
Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25l
KTsKIAogICAgIC8vIERvIGNsZWFudXAKICAgICBDR0NvbnRleHRSZWxlYXNlKGNnQ29udGV4dCk7
CkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291
cmMKICAgICAgICAgaWYgKGltYWdlICYmIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpID09IHN0YXRp
Y19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgQ0dJbWFnZUdldFdpZHRoKGltYWdl
KSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgoKSkpIHsKICAgICAgICAgICAg
IHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICAgICAgICAgIG1fY3Vy
cmVudEZyYW1lID0gaTsKLSAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0
KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0
ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0
LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgp
KSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9u
b3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKICAgICAgICAgICAgIG1fY3VycmVudEZyYW1l
ID0gY3VycmVudEZyYW1lOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMDMs
NyArMTAzLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyYwogCiAg
ICAgLy8gTm8gaW1hZ2Ugb2YgdGhlIGNvcnJlY3Qgc2l6ZSB3YXMgZm91bmQsIGZhbGxiYWNrIHRv
IGRyYXdpbmcgdGhlIGN1cnJlbnQgZnJhbWUKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gQml0
bWFwSW1hZ2U6OnNpemUoKTsKLSAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBm
LCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgY29tcG9zaXRl
T3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJl
Y3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIGNv
bXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywg
SW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDYWlyb1dpbi5jcHAJKHJldmlzaW9uIDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEs
NyArODEsNyBAQCBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNCiAgICAg
aWYgKHNpemUpCiAgICAgICAgIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShnYywgRmxvYXRS
ZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksICpzaXpl
LCBDb21wb3NpdGVDb3B5KTsKICAgICBlbHNlCi0gICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgw
LjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3Qo
MC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbXBv
c2l0ZUNvcHksIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVj
dCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJl
Y3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENv
bXBvc2l0ZUNvcHksIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3Vz
LCBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKIAogICAgIC8vIERvIGNsZWFudXAKICAgICBjYWly
b19kZXN0cm95KHRhcmdldFJlZik7CkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyYwogICAgICAgICBpZiAoY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfaGVpZ2h0KHN1cmZhY2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6
ZS5oZWlnaHQoKSkgJiYgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZS5nZXQo
KSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLndpZHRoKCkpKSB7CiAgICAgICAgICAg
ICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAgICAgICAgICBtX2N1
cnJlbnRGcmFtZSA9IGk7Ci0gICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVj
dCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCBjb21wb3Np
dGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVj
dCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQo
KSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJv
bm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFt
ZSA9IGN1cnJlbnRGcmFtZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTA4
LDcgKzEwOCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmMKIAog
ICAgIC8vIE5vIGltYWdlIG9mIHRoZSBjb3JyZWN0IHNpemUgd2FzIGZvdW5kLCBmYWxsYmFjayB0
byBkcmF3aW5nIHRoZSBjdXJyZW50IGZyYW1lCiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IEJp
dG1hcEltYWdlOjpzaXplKCk7Ci0gICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4w
ZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0
ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRS
ZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBj
b21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMs
IEltYWdlT3JpZW50YXRpb246Ok5vbmUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGly
ZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI0ODU5OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1OSwyMCArMTU5LDIwIEBAIGJvb2wgSW1hZ2VEZWNvZGVyRGly
ZWN0MkQ6OmZyYW1lSXNDb21wbGUKIEltYWdlT3JpZW50YXRpb24gSW1hZ2VEZWNvZGVyRGlyZWN0
MkQ6OmZyYW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fbmF0aXZlRGVjb2RlcikKLSAgICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb24oKTsK
KyAgICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok5vbmU7CiAKICAgICBDT01QdHI8SVdJ
Q0JpdG1hcEZyYW1lRGVjb2RlPiBmcmFtZTsKICAgICBIUkVTVUxUIGhyID0gbV9uYXRpdmVEZWNv
ZGVyLT5HZXRGcmFtZShpbmRleCwgJmZyYW1lKTsKICAgICBpZiAoIVNVQ0NFRURFRChocikpCi0g
ICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7CisgICAgICAgIHJldHVybiBJbWFnZU9y
aWVudGF0aW9uOjpOb25lOwogCiAgICAgQ09NUHRyPElXSUNNZXRhZGF0YVF1ZXJ5UmVhZGVyPiBt
ZXRhZGF0YTsKICAgICBociA9IGZyYW1lLT5HZXRNZXRhZGF0YVF1ZXJ5UmVhZGVyKCZtZXRhZGF0
YSk7CiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQotICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRh
dGlvbigpOworICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZTsKIAogICAgIC8v
IEZJWE1FOiBJZGVudGlmeSBpbWFnZSB0eXBlLCBhbmQgYXNrIHByb3BlciBvcmllbnRhdGlvbi4K
LSAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbigpOworICAgIHJldHVybiBJbWFnZU9yaWVudGF0
aW9uOjpOb25lOwogfQogCiBTZWNvbmRzIEltYWdlRGVjb2RlckRpcmVjdDJEOjpmcmFtZUR1cmF0
aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGlyZWN0MkQuY3BwCShyZXZpc2lv
biAyNDg1OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VE
aXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyYwogICAgICAgICBpZiAoaW1hZ2UgJiYgY2xhbXBU
bzxpbnQ+KGltYWdlU2l6ZS5oZWlnaHQoKSkgPT0gc3RhdGljX2Nhc3Q8aW50PihzcmNTaXplLmhl
aWdodCgpKSAmJiBjbGFtcFRvPGludD4oaW1hZ2VTaXplLndpZHRoKCkpID09IHN0YXRpY19jYXN0
PGludD4oc3JjU2l6ZS53aWR0aCgpKSkgewogICAgICAgICAgICAgc2l6ZV90IGN1cnJlbnRGcmFt
ZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBpOwotICAg
ICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6
ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9y
bWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24oKSk7CisgICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAw
LjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxl
bmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRp
b246Ok5vbmUpOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBCaXRt
YXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyYwogCiAgICAgLy8gTm8gaW1hZ2Ugb2YgdGhl
IGNvcnJlY3Qgc2l6ZSB3YXMgZm91bmQsIGZhbGxiYWNrIHRvIGRyYXdpbmcgdGhlIGN1cnJlbnQg
ZnJhbWUKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gQml0bWFwSW1hZ2U6OnNpemUoKTsKLSAg
ICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lk
dGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFs
LCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24o
KSk7CisgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VT
aXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGU6
Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9u
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3Qy
RC5jcHAJKHJldmlzaW9uIDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcg
KzEwMiw3IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGMKICAgICBy
ZXR1cm4gQ29sb3IoKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6
ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGNv
bnN0IEltYWdlT3JpZW50YXRpb24mIG9yaWVudGF0aW9uKQordm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9k
ZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgYXV0byBw
bGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAkocmV2aXNpb24gMjQ4
NTk5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0lt
YWdlVG9GcmFjdGlvbgogICAgIHJldHVybiBpbWFnZTsKIH0KIAotRHJhZ0ltYWdlUmVmIGNyZWF0
ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1hZ2UsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdl
LCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIHJldHVybiBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2RlckZyYW1l
LmgJKHJldmlzaW9uIDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtODIs
NyArODIsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJhY2tpbmdTdG9y
ZT4gbV9iYWNraW5nU3RvcmU7CiAgICAgRGlzcG9zYWxNZXRob2QgbV9kaXNwb3NhbE1ldGhvZCB7
IERpc3Bvc2FsTWV0aG9kOjpVbnNwZWNpZmllZCB9OwogCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBt
X29yaWVudGF0aW9uIHsgRGVmYXVsdEltYWdlT3JpZW50YXRpb24gfTsKKyAgICBJbWFnZU9yaWVu
dGF0aW9uIG1fb3JpZW50YXRpb24geyBJbWFnZU9yaWVudGF0aW9uOjpOb25lIH07CiAgICAgU2Vj
b25kcyBtX2R1cmF0aW9uOwogICAgIGJvb2wgbV9oYXNBbHBoYSB7IHRydWUgfTsKIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURl
Y29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDI0ODU5OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Myw3ICsxOTMsNyBAQCBzdGF0aWMgSW1hZ2VPcmll
bnRhdGlvbiByZWFkSW1hZ2VPcmllbnRhCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4g
SW1hZ2VPcmllbnRhdGlvbigpOworICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpOb25lOwog
fQogCiBjbGFzcyBKUEVHSW1hZ2VSZWFkZXIgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL0RyYWdJbWFnZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCShyZXZpc2lvbiAyNDg1OTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3
ICs3OCw3IEBAIERyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYKIAogc3Rh
dGljIGZsb2F0IG1heGltdW1BbGxvd2VkRHJhZ0ltYWdlQXJlYSA9IDYwMCAqIDEwMjQ7CiAKLURy
YWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb24pCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJh
Z0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWFnZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
bikKIHsKICAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+d2lkdGgoKSB8fCAhaW1hZ2UtPmhlaWdo
dCgpKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtOTYsOSArOTYsNyBAQCBEcmFnSW1hZ2VSZWYg
Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCBjb250
ZXh0KHJlbmRlcmVyQ29udGV4dC5DR0NvbnRleHQpOwogICAgICAgICBjb250ZXh0LnRyYW5zbGF0
ZSgwLCBpbWFnZVNpemUuaGVpZ2h0KTsKICAgICAgICAgY29udGV4dC5zY2FsZSh7IGFkanVzdGVk
SW1hZ2VTY2FsZSwgLWFkanVzdGVkSW1hZ2VTY2FsZSB9KTsKLSAgICAgICAgSW1hZ2VQYWludGlu
Z09wdGlvbnMgcGFpbnRpbmdPcHRpb25zOwotICAgICAgICBwYWludGluZ09wdGlvbnMubV9vcmll
bnRhdGlvbkRlc2NyaXB0aW9uID0gb3JpZW50YXRpb247Ci0gICAgICAgIGNvbnRleHQuZHJhd0lt
YWdlKCppbWFnZSwgRmxvYXRQb2ludCgpLCBwYWludGluZ09wdGlvbnMpOworICAgICAgICBjb250
ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMo
b3JpZW50YXRpb24pKTsKICAgICB9XTsKICAgICByZXR1cm4gaW1hZ2VDb3B5LkNHSW1hZ2U7CiB9
CkBAIC0yNzQsNyArMjcyLDcgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHNjYWxlRHJhZ0ltYWdl
KFJldAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3Jl
YXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KQorUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSos
IEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0JKHJldmlzaW9uIDI0ODU5
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTkyLDE5ICs5MiwxOCBAQCBSZXRhaW5QdHI8TlNJbWFnZT4gZGlzc29sdmVE
cmFnSW1hZ2VUb0ZyCiAgICAgcmV0dXJuIGRpc3NvbHZlZEltYWdlOwogfQogICAgICAgICAKLVJl
dGFpblB0cjxOU0ltYWdlPiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pCitSZXRhaW5QdHI8TlNJbWFn
ZT4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWFnZSwgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbikKIHsKICAgICBGbG9hdFNpemUgc2l6ZSA9IGltYWdlLT5zaXplKCk7CiAK
ICAgICBpZiAoaXM8Qml0bWFwSW1hZ2U+KCppbWFnZSkpIHsKLSAgICAgICAgSW1hZ2VPcmllbnRh
dGlvbiBvcmllbnRhdGlvbjsKICAgICAgICAgQml0bWFwSW1hZ2UmIGJpdG1hcEltYWdlID0gZG93
bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSk7CiAgICAgICAgIEludFNpemUgc2l6ZVJlc3BlY3Rp
bmdPcmllbnRhdGlvbiA9IGJpdG1hcEltYWdlLnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKTsK
IAotICAgICAgICBpZiAoZGVzY3JpcHRpb24ucmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSA9PSBS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKKyAgICAgICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdl
T3JpZW50YXRpb246OkZyb21JbWFnZSkKICAgICAgICAgICAgIG9yaWVudGF0aW9uID0gYml0bWFw
SW1hZ2Uub3JpZW50YXRpb25Gb3JDdXJyZW50RnJhbWUoKTsKIAotICAgICAgICBpZiAob3JpZW50
YXRpb24gIT0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pIHsKKyAgICAgICAgaWYgKG9yaWVudGF0
aW9uICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsKICAgICAgICAgICAgIC8vIENvbnN0cnVj
dCBhIGNvcnJlY3RseS1yb3RhdGVkIGNvcHkgb2YgdGhlIGltYWdlIHRvIHVzZSBhcyB0aGUgZHJh
ZyBpbWFnZS4KICAgICAgICAgICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCksIHNp
emVSZXNwZWN0aW5nT3JpZW50YXRpb24pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAJKHJldmlzaW9uIDI0ODU5OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExOCw3ICsxMTgsNyBAQCBleGl0OgogICAgIHJldHVybiBoYm1wLmxlYWsoKTsKIH0KICAg
ICAKLURyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZy
b21JbWFnZShJbWFnZSogaW1nLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIEhXbmREQyBkYygw
KTsKICAgICBhdXRvIHdvcmtpbmdEQyA9IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRlQ29tcGF0aWJs
ZURDKGRjKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fp
cm9XaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFn
SW1hZ2VDYWlyb1dpbi5jcHAJKHJldmlzaW9uIDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3
ICsxNDYsNyBAQCBleGl0OgogICAgIHJldHVybiBoYm1wLmxlYWsoKTsKIH0KICAgICAKLURyYWdJ
bWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKQorRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJ
bWFnZSogaW1nLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIEhXbmREQyBkYygwKTsKICAgICBh
dXRvIHdvcmtpbmdEQyA9IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRlQ29tcGF0aWJsZURDKGRjKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlRGlyZWN0MkQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VEaXJl
Y3QyRC5jcHAJKHJldmlzaW9uIDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9EcmFnSW1hZ2VEaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAg
RHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZgogICAgIHJldHVybiBoYm1w
LmxlYWsoKTsKIH0KIAotRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFn
ZSogaW1nLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCitEcmFnSW1hZ2VSZWYgY3JlYXRl
RHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAg
SFduZERDIGRjKG51bGxwdHIpOwogICAgIGF1dG8gd29ya2luZ0RDID0gYWRvcHRHRElPYmplY3Qo
OjpDcmVhdGVDb21wYXRpYmxlREMoZGMpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gMjQ4NTk5KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50RmlsbExheWUKIAogICAgICAgICAgICAgYXV0byBpbnRlcnBvbGF0aW9uID0gY2hvb3NlSW50
ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgKmltYWdlLCAmYmdMYXllciwgZ2VvbWV0cnkudGls
ZVNpemUoKSk7CiAgICAgICAgICAgICBhdXRvIGRlY29kaW5nTW9kZSA9IGRlY29kaW5nTW9kZUZv
ckltYWdlRHJhdygqaW1hZ2UsIHBhaW50SW5mbyk7Ci0gICAgICAgICAgICBhdXRvIGRyYXdSZXN1
bHQgPSBjb250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwg
dG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6
ZSgpLCBnZW9tZXRyeS5zcGFjZVNpemUoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRl
T3AsIGJnTGF5ZXIuYmxlbmRNb2RlKCksIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKCksIGludGVycG9sYXRpb24pKTsKKyAgICAgICAgICAgIGF1dG8gZHJhd1Jlc3Vs
dCA9IGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBnZW9tZXRyeS5kZXN0UmVjdCgpLCB0
b0xheW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5LnRpbGVTaXpl
KCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVP
cCwgYmdMYXllci5ibGVuZE1vZGUoKSwgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uOjpO
b25lLCBpbnRlcnBvbGF0aW9uKSk7CiAgICAgICAgICAgICBpZiAoZHJhd1Jlc3VsdCA9PSBJbWFn
ZURyYXdSZXN1bHQ6OkRpZFJlcXVlc3REZWNvZGluZykgewogICAgICAgICAgICAgICAgIEFTU0VS
VChiZ0ltYWdlLT5pc0NhY2hlZEltYWdlKCkpOwogICAgICAgICAgICAgICAgIGJnSW1hZ2UtPmNh
Y2hlZEltYWdlKCktPmFkZENsaWVudFdhaXRpbmdGb3JBc3luY0RlY29kaW5nKCp0aGlzKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAJKHJldmlzaW9u
IDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjAzMCwxNiArMjAzMCwxOCBAQCBib29sIFJlbmRlckVsZW1lbnQ6
OmNoZWNrRm9yUmVwYWludER1cmluCiAgICAgcmV0dXJuICFzZXR0aW5ncygpLnJlcGFpbnRPdXRz
aWRlTGF5b3V0RW5hYmxlZCgpOwogfQogCi1SZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gUmVu
ZGVyRWxlbWVudDo6c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSBjb25zdAorSW1hZ2VP
cmllbnRhdGlvbiBSZW5kZXJFbGVtZW50OjppbWFnZU9yaWVudGF0aW9uKCkgY29uc3QKIHsKICNp
ZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogICAgIC8vIFRoaXMgY2Fu
IG9ubHkgYmUgZW5hYmxlZCBmb3IgcG9ydHMgd2hpY2ggaG9ub3IgdGhlIG9yaWVudGF0aW9uIGZs
YWcgaW4gdGhlaXIgZHJhd2luZyBjb2RlLgogICAgIGlmIChkb2N1bWVudCgpLmlzSW1hZ2VEb2N1
bWVudCgpKQotICAgICAgICByZXR1cm4gUmVzcGVjdEltYWdlT3JpZW50YXRpb247CisgICAgICAg
IHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2U7CiAjZW5kaWYKICAgICAvLyBSZXNw
ZWN0IHRoZSBpbWFnZSdzIG9yaWVudGF0aW9uIGlmIGl0J3MgYmVpbmcgdXNlZCBhcyBhIGZ1bGwt
cGFnZSBpbWFnZSBvciBpdCdzCiAgICAgLy8gYW4gPGltZz4gYW5kIHRoZSBzZXR0aW5nIHRvIHJl
c3BlY3QgaXQgZXZlcnl3aGVyZSBpcyBzZXQuCi0gICAgcmV0dXJuIHNldHRpbmdzKCkuc2hvdWxk
UmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSAmJiBpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50
KCkpID8gUmVzcGVjdEltYWdlT3JpZW50YXRpb24gOiBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uOworICAgIGlmIChzZXR0aW5ncygpLnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkg
JiYgaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKSkKKyAgICAgICAgcmV0dXJuIEltYWdl
T3JpZW50YXRpb246OkZyb21JbWFnZTsKKyAgICByZXR1cm4gc3R5bGUoKS5pbWFnZU9yaWVudGF0
aW9uKCk7CiB9CiAKIHZvaWQgUmVuZGVyRWxlbWVudDo6YWRqdXN0RnJhZ21lbnRlZEZsb3dTdGF0
ZU9uQ29udGFpbmluZ0Jsb2NrQ2hhbmdlSWZOZWVkZWQoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCShyZXZpc2lvbiAyNDg1OTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNyAr
MjA0LDcgQEAgcHVibGljOgogICAgIFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2tGb3JGaXhl
ZFBvc2l0aW9uKCkgY29uc3Q7CiAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9ja0ZvckFi
c29sdXRlUG9zaXRpb24oKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlT3JpZW50YXRpb24gaW1hZ2VPcmllbnRhdGlvbigpIGNv
bnN0OwogCiAgICAgdm9pZCByZW1vdmVGcm9tUmVuZGVyRnJhZ21lbnRlZEZsb3coKTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVzZXRFbmNsb3NpbmdGcmFnbWVudGVkRmxvd0FuZENoaWxkSW5mb0luY2x1
ZGluZ0Rlc2NlbmRhbnRzKFJlbmRlckZyYWdtZW50ZWRGbG93Kik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAJKHJldmlzaW9u
IDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNCw4ICsyMjQsNyBAQCB2b2lkIFJlbmRlckVtYmVk
ZGVkT2JqZWN0OjpwYWludFNuYXBzaG90CiAgICAgICAgIHJldHVybjsKIAogICAgIEludGVycG9s
YXRpb25RdWFsaXR5IGludGVycG9sYXRpb24gPSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShj
b250ZXh0LCBpbWFnZSwgJmltYWdlLCBhbGlnbmVkUmVjdC5zaXplKCkpOwotICAgIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKHNob3VsZFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uKCksIHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKLSAgICBjb250
ZXh0LmRyYXdJbWFnZShpbWFnZSwgYWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9y
aWVudGF0aW9uRGVzY3JpcHRpb24sIGludGVycG9sYXRpb24pKTsKKyAgICBjb250ZXh0LmRyYXdJ
bWFnZShpbWFnZSwgYWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKGltYWdlT3JpZW50
YXRpb24oKSwgaW50ZXJwb2xhdGlvbikpOwogfQogCiB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0
OjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAJKHJldmlzaW9uIDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2OSwxMSArNDY5LDcgQEAgdm9pZCBSZW5kZXJJ
bWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZgogICAgICAgICAgICAgICAgICAgICBjZW50ZXJZ
ID0gMDsKICAgICAgICAgICAgICAgICBpbWFnZU9mZnNldCA9IExheW91dFNpemUobGVmdEJvcmRl
ciArIGxlZnRQYWQgKyBjZW50ZXJYICsgbWlzc2luZ0ltYWdlQm9yZGVyV2lkdGgsIHRvcEJvcmRl
ciArIHRvcFBhZCArIGNlbnRlclkgKyBtaXNzaW5nSW1hZ2VCb3JkZXJXaWR0aCk7CiAKLSAgICAg
ICAgICAgICAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlw
dGlvbihzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKLSNpZiBFTkFCTEUoQ1NTX0lN
QUdFX09SSUVOVEFUSU9OKQotICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24u
c2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwotI2Vu
ZGlmCi0gICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBzbmFwUmVjdFRv
RGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VT
aXplKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKKyAgICAg
ICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHNuYXBSZWN0VG9EZXZpY2VQaXhl
bHMoTGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBpbWFnZVNpemUpLCBkZXZp
Y2VTY2FsZUZhY3RvciksIGltYWdlT3JpZW50YXRpb24oKSk7CiAgICAgICAgICAgICAgICAgZXJy
b3JQaWN0dXJlRHJhd24gPSB0cnVlOwogICAgICAgICAgICAgfQogCkBAIC02MzUsOSArNjMxLDgg
QEAgSW1hZ2VEcmF3UmVzdWx0IFJlbmRlckltYWdlOjpwYWludEludG9SZQogICAgIGlmIChpczxC
aXRtYXBJbWFnZT4oaW1hZ2UpKQogICAgICAgICBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdl
KS51cGRhdGVGcm9tU2V0dGluZ3Moc2V0dGluZ3MoKSk7CiAKLSAgICBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihzaG91bGRSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbigpLCBzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CiAgICAgYXV0byBkZWNvZGlu
Z01vZGUgPSBkZWNvZGluZ01vZGVGb3JJbWFnZURyYXcoKmltYWdlLCBwYWludEluZm8pOwotICAg
IGF1dG8gZHJhd1Jlc3VsdCA9IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWcsIHJl
Y3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5v
cm1hbCwgZGVjb2RpbmdNb2RlLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCBpbnRlcnBvbGF0aW9u
KSk7CisgICAgYXV0byBkcmF3UmVzdWx0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2Uo
KmltZywgcmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xh
dGlvbikpOwogICAgIGlmIChkcmF3UmVzdWx0ID09IEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVxdWVz
dERlY29kaW5nKQogICAgICAgICBpbWFnZVJlc291cmNlKCkuY2FjaGVkSW1hZ2UoKS0+YWRkQ2xp
ZW50V2FpdGluZ0ZvckFzeW5jRGVjb2RpbmcoKnRoaXMpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2aXNpb24gMjQ4NTk5
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0NzYsNyArMjQ3Niw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5n
Ojppc0RpcmVjdGx5Q29tcG8KICAgICAgICAgaWYgKCFpczxCaXRtYXBJbWFnZT4oaW1hZ2UpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmIChkb3duY2FzdDxCaXRtYXBJ
bWFnZT4oKmltYWdlKS5vcmllbnRhdGlvbkZvckN1cnJlbnRGcmFtZSgpICE9IERlZmF1bHRJbWFn
ZU9yaWVudGF0aW9uKQorICAgICAgICBpZiAoZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSku
b3JpZW50YXRpb25Gb3JDdXJyZW50RnJhbWUoKSAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgKFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oV1BFKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNuYXBzaG90dGVkUGx1Z0luLmNwcAkocmV2aXNpb24gMjQ4NTk5KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ1LDggKzE0NSw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25h
cHMKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xh
dGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsICppbWFnZSwgaW1hZ2Us
IGFsaWduZWRSZWN0LnNpemUoKSk7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9y
aWVudGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSwgc3R5
bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwg
YWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRpb24s
IGludGVycG9sYXRpb24pKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGFsaWduZWRS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhpbWFnZU9yaWVudGF0aW9uKCksIGludGVycG9sYXRp
b24pKTsKIH0KIAogQ3Vyc29yRGlyZWN0aXZlIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpnZXRD
dXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBDdXJzb3ImIG92ZXJyaWRlQ3Vyc29yKSBj
b25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgJKHJldmlzaW9uIDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NTIsNyArNzUyLDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIFdlYkNv
cmU6OmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUod3JpdGluZ01vZGUoKSk7IH0KICAgICBib29s
IGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6aXNG
bGlwcGVkV3JpdGluZ01vZGUod3JpdGluZ01vZGUoKSk7IH0KIAotICAgIEltYWdlT3JpZW50YXRp
b25FbnVtIGltYWdlT3JpZW50YXRpb24oKSBjb25zdDsKKyAgICBJbWFnZU9yaWVudGF0aW9uIGlt
YWdlT3JpZW50YXRpb24oKSBjb25zdDsKIAogICAgIEltYWdlUmVuZGVyaW5nIGltYWdlUmVuZGVy
aW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SW1hZ2VSZW5kZXJpbmc+KG1fcmFyZUlu
aGVyaXRlZERhdGEtPmltYWdlUmVuZGVyaW5nKTsgfQogCkBAIC05NTEsNyArOTUxLDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgIHZv
aWQgc2V0SW1hZ2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uRW51bSB2KSB7IFNFVF9WQVIo
bV9yYXJlSW5oZXJpdGVkRGF0YSwgaW1hZ2VPcmllbnRhdGlvbiwgc3RhdGljX2Nhc3Q8aW50Pih2
KSk7IH0KKyAgICB2b2lkIHNldEltYWdlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbiB2KSB7
IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaW1hZ2VPcmllbnRhdGlvbiwgc3RhdGljX2Nh
c3Q8aW50Pih2KSk7IH0KICNlbmRpZgogCiAgICAgdm9pZCBzZXRJbWFnZVJlbmRlcmluZyhJbWFn
ZVJlbmRlcmluZyB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaW1hZ2VSZW5kZXJp
bmcsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KSk7IH0KQEAgLTE1ODIsNyArMTU4Miw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgT3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bvc2l0aW9uPiBpbml0aWFs
VGV4dEVtcGhhc2lzUG9zaXRpb24oKSB7IHJldHVybiB7IFRleHRFbXBoYXNpc1Bvc2l0aW9uOjpP
dmVyLCBUZXh0RW1waGFzaXNQb3NpdGlvbjo6UmlnaHQgfTsgfQogICAgIHN0YXRpYyBSdWJ5UG9z
aXRpb24gaW5pdGlhbFJ1YnlQb3NpdGlvbigpIHsgcmV0dXJuIFJ1YnlQb3NpdGlvbjo6QmVmb3Jl
OyB9CiAgICAgc3RhdGljIExpbmVCb3hDb250YWluIGluaXRpYWxMaW5lQm94Q29udGFpbigpIHsg
cmV0dXJuIExpbmVCb3hDb250YWluQmxvY2sgfCBMaW5lQm94Q29udGFpbklubGluZSB8IExpbmVC
b3hDb250YWluUmVwbGFjZWQ7IH0KLSAgICBzdGF0aWMgSW1hZ2VPcmllbnRhdGlvbkVudW0gaW5p
dGlhbEltYWdlT3JpZW50YXRpb24oKSB7IHJldHVybiBPcmlnaW5Ub3BMZWZ0OyB9CisgICAgc3Rh
dGljIEltYWdlT3JpZW50YXRpb24gaW5pdGlhbEltYWdlT3JpZW50YXRpb24oKSB7IHJldHVybiBJ
bWFnZU9yaWVudGF0aW9uOjpOb25lOyB9CiAgICAgc3RhdGljIEltYWdlUmVuZGVyaW5nIGluaXRp
YWxJbWFnZVJlbmRlcmluZygpIHsgcmV0dXJuIEltYWdlUmVuZGVyaW5nOjpBdXRvOyB9CiAgICAg
c3RhdGljIEltYWdlUmVzb2x1dGlvblNvdXJjZSBpbml0aWFsSW1hZ2VSZXNvbHV0aW9uU291cmNl
KCkgeyByZXR1cm4gSW1hZ2VSZXNvbHV0aW9uU291cmNlOjpTcGVjaWZpZWQ7IH0KICAgICBzdGF0
aWMgSW1hZ2VSZXNvbHV0aW9uU25hcCBpbml0aWFsSW1hZ2VSZXNvbHV0aW9uU25hcCgpIHsgcmV0
dXJuIEltYWdlUmVzb2x1dGlvblNuYXA6Ok5vbmU7IH0KQEAgLTIwOTEsMTIgKzIwOTEsMTIgQEAg
aW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6Omhhc0lubGluZUNvbHVtbgogICAgIHJldHVybiBheGlz
ID09IENvbHVtbkF4aXM6OkF1dG8gfHwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA9PSAoYXhp
cyA9PSBDb2x1bW5BeGlzOjpIb3Jpem9udGFsKTsKIH0KIAotaW5saW5lIEltYWdlT3JpZW50YXRp
b25FbnVtIFJlbmRlclN0eWxlOjppbWFnZU9yaWVudGF0aW9uKCkgY29uc3QKK2lubGluZSBJbWFn
ZU9yaWVudGF0aW9uIFJlbmRlclN0eWxlOjppbWFnZU9yaWVudGF0aW9uKCkgY29uc3QKIHsKICNp
ZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxJ
bWFnZU9yaWVudGF0aW9uRW51bT4obV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1hZ2VPcmllbnRhdGlv
bik7CisgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb24obV9yYXJlSW5oZXJpdGVkRGF0YS0+aW1h
Z2VPcmllbnRhdGlvbik7CiAjZWxzZQotICAgIHJldHVybiBEZWZhdWx0SW1hZ2VPcmllbnRhdGlv
bjsKKyAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZTsKICNlbmRpZgogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJ
bmhlcml0ZWREYXRhLmgJKHJldmlzaW9uIDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
MSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbGluZUJveENvbnRhaW46IDc7IC8v
IExpbmVCb3hDb250YWluCiAgICAgLy8gQ1NTIEltYWdlIFZhbHVlcyBMZXZlbCAzCiAjaWYgRU5B
QkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKLSAgICB1bnNpZ25lZCBpbWFnZU9yaWVudGF0aW9u
IDogNDsgLy8gSW1hZ2VPcmllbnRhdGlvbkVudW0KKyAgICB1bnNpZ25lZCBpbWFnZU9yaWVudGF0
aW9uIDogNDsgLy8gSW1hZ2VPcmllbnRhdGlvbgogI2VuZGlmCiAgICAgdW5zaWduZWQgaW1hZ2VS
ZW5kZXJpbmcgOiAzOyAvLyBJbWFnZVJlbmRlcmluZwogICAgIHVuc2lnbmVkIGxpbmVTbmFwIDog
MjsgLy8gTGluZVNuYXAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcAkocmV2aXNpb24gMjQ4NTk5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDcgKzIwMiw3IEBAIEltYWdlRHJhd1Jl
c3VsdCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW4KIAogICAgIGZyYW1lVmlldygpLT5zY3JvbGxU
b0ZyYWdtZW50KGluaXRpYWxGcmFnbWVudFVSTCk7CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgcmVz
dWx0ID0gZHJhdyhjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmMsIGNvbXBvc2l0ZU9wLCBibGVu
ZE1vZGUsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbigpKTsKKyAgICBJbWFnZURyYXdSZXN1bHQgcmVzdWx0ID0gZHJhdyhjb250ZXh0LCBkc3RS
ZWN0LCBzY2FsZWRTcmMsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIERlY29kaW5nTW9kZTo6U3lu
Y2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOwogCiAgICAgc2V0SW1hZ2VPYnNlcnZl
cihvYnNlcnZlcik7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIyMSw3ICsyMjEsNyBAQCBOYXRp
dmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDCiAgICAgaWYgKCFidWZmZXIpIC8v
IGZhaWxlZCB0byBhbGxvY2F0ZSBpbWFnZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3VyY2VP
dmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJl
Y3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CiAKICAgICAv
LyBGSVhNRTogV0soQnVnIDExMzY1Nyk6IFdlIHNob3VsZCB1c2UgRG9udENvcHlCYWNraW5nU3Rv
cmUgaGVyZS4KICAgICByZXR1cm4gYnVmZmVyLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSkt
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CkBAIC0yNDcsNyArMjQ3LDcgQEAgTmF0aXZl
SW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbgogICAgIFBsYXRmb3JtQ29udGV4dERp
cmVjdDJEIHBsYXRmb3JtQ29udGV4dChuYXRpdmVJbWFnZVRhcmdldC5nZXQoKSk7CiAgICAgR3Jh
cGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dCgmcGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0NvbnRl
eHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOwogCi0gICAgZHJhdyhs
b2NhbENvbnRleHQsIHJlY3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1v
ZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKCkpOworICAgIGRyYXcobG9jYWxDb250ZXh0LCByZWN0KCksIHJlY3QoKSwgQ29t
cG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOwogCiAgICAgcmV0dXJuIG5hdGl2ZUltYWdl
OwogfQpAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29u
dGFpbmVyKEcKICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc2NhbGVk
U3JjUmVjdCwgdW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29tcG9z
aXRlT3AsIGJsZW5kTW9kZSk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24p
CitJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5n
TW9kZSwgSW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0
dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5oCShyZXZpc2lvbiAyNDg1OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc3RhcnRBbmltYXRpb25UaW1lckZpcmVkKCk7CiAKICAgICBleHBs
aWNpdCBTVkdJbWFnZShJbWFnZU9ic2VydmVyJik7Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXco
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0b1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBmaW5hbDsKKyAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHRvUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdN
b2RlLCBJbWFnZU9yaWVudGF0aW9uKSBmaW5hbDsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0Zv
ckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6
ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFpbmVy
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQg
Y29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywKICAgICAgICAgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYsIEJsZW5kTW9kZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAJKHJldmlzaW9u
IDI0ODU5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgRmxvYXRTaXplIFNWR0lt
YWdlRm9yQ29udGFpbmVyOjpzaXplKCkgYwogfQogCiBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2VG
b3JDb250YWluZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsCi0gICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCisgICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2Rp
bmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIHJldHVybiBtX2ltYWdlLT5kcmF3Rm9y
Q29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV9jb250YWluZXJab29tLCBtX2lu
aXRpYWxGcmFnbWVudFVSTCwgZHN0UmVjdCwgc3JjUmVjdCwgY29tcG9zaXRlT3AsIGJsZW5kTW9k
ZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VGb3JDb250YWluZXIuaAkocmV2aXNpb24gMjQ4NTk5KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcg
KzUzLDcgQEAgcHVibGljOgogICAgICAgICBtX2ltYWdlLT5jb21wdXRlSW50cmluc2ljRGltZW5z
aW9ucyhpbnRyaW5zaWNXaWR0aCwgaW50cmluc2ljSGVpZ2h0LCBpbnRyaW5zaWNSYXRpbyk7CiAg
ICAgfQogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIGZpbmFsOworICAg
IEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5n
TW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7CiAKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBmaW5hbDsKIApJbmRleDogU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI0ODU5OSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTktMDgtMTMgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxs
YXdhQGFwcGxlLmNvbT4KKworICAgICAgICBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiBz
aG91bGQgYmUgYSB2YWx1ZSBpbiBJbWFnZU9yaWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1NTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6aW1hZ2VQb3NpdGlvbkluZm9ybWF0aW9uKToK
KwogMjAxOS0wOC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IENyYXNoIHVuZGVyIElQQzo6Q29ubmVjdGlvbjo6bWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNz
YWdlQXNJbnZhbGlkKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCShyZXZpc2lvbiAyNDg1OTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjYzOSw4ICsyNjM5LDcgQEAgc3RhdGljIHZvaWQgaW1hZ2VQb3NpdGlvbkluZm9ybWF0aW9u
KFdlYgogICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQogICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID0gcmVuZGVySW1hZ2Uuc2hvdWxkUmVz
cGVjdEltYWdlT3JpZW50YXRpb24oKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZSgq
aW1hZ2UsIEZsb2F0UmVjdCgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJpdG1hcFNpemUuaGVp
Z2h0KCkpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24pKTsKKyAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0
UmVjdCgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpLCByZW5k
ZXJJbWFnZS5pbWFnZU9yaWVudGF0aW9uKCkpOwogICAgIGluZm8uaW1hZ2UgPSBzaGFyZWRCaXRt
YXA7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376224</attachid>
            <date>2019-08-13 16:43:47 -0700</date>
            <delta_ts>2019-08-13 18:59:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200553-20190813164346.patch</filename>
            <type>text/plain</type>
            <size>106767</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4MCBAQAorMjAxOS0wOC0xMyAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIHNob3VsZFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uIHNob3VsZCBiZSBhIHZhbHVlIGluIEltYWdlT3JpZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDU1
MworCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBUaGlzIHBh
dGNoIGlzIGEgc3RlcCB0b3dhcmRzIGltcGxlbWVudGluZyB0aGUgY3NzIGltYWdlLW9yaWVudGF0
aW9uLgorCisgICAgICAgIEluc3RlYWQgb2YgaGF2aW5nIEltYWdlT3JpZW50YXRpb25FbnVtLCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24sCisgICAgICAgIEltYWdlT3JpZW50YXRpb24gYW5k
IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSB3ZSBhcmUgZ29pbmcgdG8gaGF2ZSBhCisgICAg
ICAgIHNpbmdsZSBzdHJ1Y3R1cmUgbmFtZWQgJ0ltYWdlT3JpZW50YXRpb24nIHdoaWNoIGlzIGEg
d3JhcHBlciBmb3IgdGhlIGVudW0KKyAgICAgICAgdHlwZSAiT3JpZW50YXRpb24iLgorCisgICAg
ICAgIFRoaXMgc3RydWN0dXJlIHdpbGwgaGF2ZSBhIGNvbnN0cnVjdG9yIGFuZCBjYXN0aW5nIG9w
ZXJhdG9yIHN1Y2ggdGhhdAorICAgICAgICBhc3NpZ25pbmcgYW4gZW51bSB2YWx1ZSBhbmQgY29t
cGFyaW5nIHdpdGggYW4gZW51bSB2YWx1ZSB3aWxsIGJlIGRvbmUKKyAgICAgICAgaW1wbGljaXRs
eS4KKworICAgICAgICBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiBpcyByZXByZXNlbnRlZCBhcyBh
IG5ldyBlbnVtIHZhbHVlICdGcm9tSW1hZ2UnLgorCisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNz
cy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIEltYWdlT3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEltYWdlT3JpZW50YXRpb25FbnVt
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRHJhZ0ltYWdlIGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
YW52YXNFbGVtZW50OjpwYWludCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjppbWFnZVNpemVGb3JSZW5kZXJl
ciBjb25zdCk6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZG9JbWFnZURyYWcpOgorICAgICAgICAqIHBsYXRmb3Jt
L0RyYWdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tU25h
cHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9EcmFnSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdl
OjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYWRpZW50SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVBhaW50aW5nT3B0aW9uczo6SW1hZ2VQYWludGluZ09wdGlvbnMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd0ltYWdlSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpk
cmF3VGlsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3Jp
ZW50YXRpb246OkltYWdlT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmll
bnRhdGlvbjo6ZnJvbUVYSUZWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0
aW9uOjpvcGVyYXRvciBPcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZU9yaWVudGF0aW9uOjp1c2VzV2lkdGhBc0hlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZU9yaWVudGF0aW9uOjp0cmFuc2Zvcm1Gcm9tRGVmYXVsdCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uOjppc1ZhbGlkT3JpZW50YXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbjo6aXNWYWxpZEVYSUZPcmllbnRhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb246OkltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb246OnNldFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbjo6cmVzcGVjdElt
YWdlT3JpZW50YXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uOjpzZXRJbWFnZU9yaWVudGF0aW9uRW51bSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb246OmltYWdlT3JpZW50YXRp
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbjo6b3BlcmF0
b3IgSW1hZ2VPcmllbnRhdGlvbkVudW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VPcmllbnRhdGlvbjo6b3BlcmF0b3I9PSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uOjpvcGVyYXRvciE9IGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZHVtcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFt
ZWRJbWFnZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0
aXZlSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
QVZGT2JqQzo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWlybzo6ZHJhd1NoYWRvd0xheWVyQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJv
OjpkcmF3U2hhZG93SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRyYXdOYXRpdmVJ
bWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcmllbnRhdGlvbkZyb21Qcm9wZXJ0
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpmcmFtZU9yaWVudGF0aW9u
QXRJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1h
Z2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UERGRG9jdW1lbnRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjpzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmVNYXBwZXJGbGFncyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VGV4dHVyZUNvcGllckdTdHJlYW1lcjo6dXBkYXRlVGV4dHVyZVNwYWNlTWF0cml4KToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6Y29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXJl
Y3QyRDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1B
UE9mU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hp
bmdTb3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWly
b1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3Vy
Y2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGly
ZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmZyYW1l
T3JpZW50YXRpb25BdEluZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJh
d0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZl
SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lLmg6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlYWRJbWFnZU9yaWVudGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvRHJhZ0ltYWdlSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJv
bUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0lt
YWdlRnJvbUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmltYWdlT3JpZW50
YXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c2hvdWxkUmVz
cGVjdEltYWdlT3JpZW50YXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNu
YXBzaG90SW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tp
bmc6OmlzRGlyZWN0bHlDb21wb3NpdGVkSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0SW1h
Z2VPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbElt
YWdlT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmltYWdlT3Jp
ZW50YXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhl
cml0ZWREYXRhLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6
OmRyYXcpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhdyk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlRm9yQ29udGFpbmVyLmg6CisKIDIwMTktMDgtMTMgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbQ29udGVudENoYW5nZU9ic2VydmVyXSBhZGp1c3RTdGF0ZUFu
ZE5vdGlmeUNvbnRlbnRDaGFuZ2VJZk5lZWRlZCBzaG91bGQgY2hlY2sgaXNPYnNlcnZhdGlvblRp
bWVXaW5kb3dBY3RpdmUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI0ODY0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xODIwLDcgKzE4
MjAsNiBAQCBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50
YXRpb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0ludFBvaW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTE3OTEsNyArMTE3OTEsNiBAQAogCQlB
ODcxREZFMTBBMTUzNzZCMDBCMTJBNjggLyogUmVuZGVyV2lkZ2V0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJXaWRnZXQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBODc0OEJERjEyQ0JGMkRDMDAxRkJBNDEgLyogSGFzaFRvb2xzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhc2hUb29scy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBODc0OEQ2NjEyQ0MzNzYzMDAxRkJBNDEgLyogSW1hZ2VPcmll
bnRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZU9yaWVudGF0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4NzQ4RDc0MTJDQzNGODkwMDFG
QkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEltYWdlT3JpZW50YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBODgwNUFGMTE2Qzk2QUVBMDAwRTlEOTggLyogSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTg4MkRBMUYxNTkzODQ2QTAwMDExNUVEIC8qIENTU1RvU3R5bGVN
YXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTVG9TdHlsZU1h
cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4ODJEQTIyMTU5Mzg0OEQwMDAx
MTVFRCAvKiBDU1NUb1N0eWxlTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENTU1RvU3R5bGVNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0NTUxLDcg
KzI0NTUwLDYgQEAKIAkJCQk1NTc2QTU2MjFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5j
cHAgKi8sCiAJCQkJNTU3NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCAqLywK
IAkJCQlCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZlci5oICovLAotCQkJ
CUE4NzQ4RDc0MTJDQzNGODkwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmNwcCAqLywKIAkJ
CQlBODc0OEQ2NjEyQ0MzNzYzMDAxRkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5oICovLAogCQkJ
CTQ5MjkxRTRBMTM0MTcyQzgwMEU3NTNERSAvKiBJbWFnZVJlbmRlcmluZ01vZGUuaCAqLywKIAkJ
CQk1NTQ2NzU3NzFGRDFGQzFBMDAzQjEwQjAgLyogSW1hZ2VTb3VyY2UuY3BwICovLApJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCShyZXZp
c2lvbiAyNDg2NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBw
aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC00ODc0LDQ5ICs0ODc0LDUwIEBAIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKIAogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJ
RU5UQVRJT04pCiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmlt
aXRpdmVWYWx1ZShJbWFnZU9yaWVudGF0aW9uRW51bSBlKQordGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEltYWdlT3JpZW50YXRpb24gZSkKICAg
ICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUg
PSBDU1NfREVHOwogICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2UgT3JpZ2luVG9wTGVmdDoKKyAg
ICBjYXNlIEltYWdlT3JpZW50YXRpb246Ok9yaWdpblRvcExlZnQ6CiAgICAgICAgIG1fdmFsdWUu
bnVtID0gMDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcmlnaW5SaWdodFRvcDoKKyAgICBj
YXNlIEltYWdlT3JpZW50YXRpb246Ok9yaWdpblJpZ2h0VG9wOgogICAgICAgICBtX3ZhbHVlLm51
bSA9IDkwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE9yaWdpbkJvdHRvbVJpZ2h0OgorICAg
IGNhc2UgSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luQm90dG9tUmlnaHQ6CiAgICAgICAgIG1fdmFs
dWUubnVtID0gMTgwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE9yaWdpbkxlZnRCb3R0b206
CisgICAgY2FzZSBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5MZWZ0Qm90dG9tOgogICAgICAgICBt
X3ZhbHVlLm51bSA9IDI3MDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcmlnaW5Ub3BSaWdo
dDoKLSAgICBjYXNlIE9yaWdpbkxlZnRUb3A6Ci0gICAgY2FzZSBPcmlnaW5Cb3R0b21MZWZ0Ogot
ICAgIGNhc2UgT3JpZ2luUmlnaHRCb3R0b206CisgICAgY2FzZSBJbWFnZU9yaWVudGF0aW9uOjpG
cm9tSW1hZ2U6CisgICAgY2FzZSBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5Ub3BSaWdodDoKKyAg
ICBjYXNlIEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkxlZnRUb3A6CisgICAgY2FzZSBJbWFnZU9y
aWVudGF0aW9uOjpPcmlnaW5Cb3R0b21MZWZ0OgorICAgIGNhc2UgSW1hZ2VPcmllbnRhdGlvbjo6
T3JpZ2luUmlnaHRCb3R0b206CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0K
IH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEltYWdl
T3JpZW50YXRpb25FbnVtKCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpvcGVyYXRvciBJbWFnZU9yaWVudGF0aW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNB
bmdsZSgpKTsKICAgICBkb3VibGUgcXVhcnRlcnMgPSA0ICogZG91YmxlVmFsdWUoQ1NTX1RVUk4p
OwogICAgIGludCBvcmllbnRhdGlvbiA9IDMgJiBzdGF0aWNfY2FzdDxpbnQ+KHF1YXJ0ZXJzIDwg
MCA/IGZsb29yKHF1YXJ0ZXJzKSA6IGNlaWwocXVhcnRlcnMpKTsKICAgICBzd2l0Y2ggKG9yaWVu
dGF0aW9uKSB7CiAgICAgY2FzZSAwOgotICAgICAgICByZXR1cm4gT3JpZ2luVG9wTGVmdDsKKyAg
ICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok9yaWdpblRvcExlZnQ7CiAgICAgY2FzZSAx
OgotICAgICAgICByZXR1cm4gT3JpZ2luUmlnaHRUb3A7CisgICAgICAgIHJldHVybiBJbWFnZU9y
aWVudGF0aW9uOjpPcmlnaW5SaWdodFRvcDsKICAgICBjYXNlIDI6Ci0gICAgICAgIHJldHVybiBP
cmlnaW5Cb3R0b21SaWdodDsKKyAgICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok9yaWdp
bkJvdHRvbVJpZ2h0OwogICAgIGNhc2UgMzoKLSAgICAgICAgcmV0dXJuIE9yaWdpbkxlZnRCb3R0
b207CisgICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5MZWZ0Qm90dG9tOwog
ICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBPcmlnaW5Ub3BM
ZWZ0OworICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpOb25lOwogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXIuY3BwCShyZXZpc2lvbiAyNDg2NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ0LDcgKzU0NCw3IEBAIERyYWdJbWFnZVJl
ZiBEYXRhVHJhbnNmZXI6OmNyZWF0ZURyYWdJbWEKICAgICBsb2NhdGlvbiA9IG1fZHJhZ0xvY2F0
aW9uOwogCiAgICAgaWYgKG1fZHJhZ0ltYWdlKQotICAgICAgICByZXR1cm4gY3JlYXRlRHJhZ0lt
YWdlRnJvbUltYWdlKG1fZHJhZ0ltYWdlLT5pbWFnZSgpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24oKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UobV9kcmFn
SW1hZ2UtPmltYWdlKCksIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOwogCiAgICAgaWYgKG1fZHJh
Z0ltYWdlRWxlbWVudCkgewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbV9kcmFnSW1hZ2VF
bGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcAkocmV2aXNpb24gMjQ4NjQxKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxMCwxNyArNjEw
LDEwIEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNzQ28KIAogICAgICAg
ICBpZiAoc2hvdWxkUGFpbnQpIHsKICAgICAgICAgICAgIGlmIChoYXNDcmVhdGVkSW1hZ2VCdWZm
ZXIoKSkgewotICAgICAgICAgICAgICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGJ1ZmZl
cigpOwotICAgICAgICAgICAgICAgIGlmIChpbWFnZUJ1ZmZlcikgewotICAgICAgICAgICAgICAg
ICAgICBpZiAobV9wcmVzZW50ZWRJbWFnZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb247Ci0jaWYgRU5B
QkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKLSAgICAgICAgICAgICAgICAgICAgICAgIG9yaWVu
dGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0ocmVuZGVyZXIoKS0+c3R5
bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LmRyYXdJbWFnZSgqbV9wcmVzZW50ZWRJbWFnZSwgc25hcHBlZEludFJlY3Qociks
IEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRpb24pKTsKLSAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJ
bWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIHNuYXBwZWRJbnRSZWN0KHIpKTsKLSAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1fcHJlc2VudGVkSW1hZ2UpCisgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCptX3ByZXNlbnRlZEltYWdlLCBzbmFwcGVkSW50
UmVjdChyKSwgcmVuZGVyZXIoKS0+aW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICAgICAgICAgICAg
ICBlbHNlIGlmIChJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBidWZmZXIoKSkKKyAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBzbmFwcGVk
SW50UmVjdChyKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChpc0dQVUJhc2Vk
KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJ
KHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MCw3ICsyODAsNyBAQCBGbG9hdFNpemUgQ2Fj
aGVkSW1hZ2U6OmltYWdlU2l6ZUZvclJlbmRlCiAgICAgaWYgKCFtX2ltYWdlKQogICAgICAgICBy
ZXR1cm4geyB9OwogCi0gICAgaWYgKGlzPEJpdG1hcEltYWdlPigqbV9pbWFnZSkgJiYgcmVuZGVy
ZXIgJiYgcmVuZGVyZXItPnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVj
dEltYWdlT3JpZW50YXRpb24pCisgICAgaWYgKGlzPEJpdG1hcEltYWdlPigqbV9pbWFnZSkgJiYg
cmVuZGVyZXIgJiYgcmVuZGVyZXItPmltYWdlT3JpZW50YXRpb24oKSA9PSBJbWFnZU9yaWVudGF0
aW9uOjpGcm9tSW1hZ2UpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKm1f
aW1hZ2UpLnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKTsKIAogICAgIGlmIChpczxTVkdJbWFn
ZT4oKm1faW1hZ2UpICYmIHNpemVUeXBlID09IFVzZWRTaXplKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTk3LDEwICsx
MTk3LDEwIEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRvSW1hZ2VEcmFnKEVsZW1lbnQKICAgICBp
ZiAoIWVsZW1lbnQucmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24oZWxlbWVudC5yZW5kZXJl
cigpLT5zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpLCBlbGVtZW50LnJlbmRlcmVyKCkt
PnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uID0gZWxlbWVudC5yZW5kZXJlcigpLT5pbWFnZU9yaWVudGF0aW9uKCk7CiAKICAgICBJ
bWFnZSogaW1hZ2UgPSBnZXRJbWFnZShlbGVtZW50KTsKLSAgICBpZiAoaW1hZ2UgJiYgIWxheW91
dFJlY3QuaXNFbXB0eSgpICYmIHNob3VsZFVzZUNhY2hlZEltYWdlRm9yRHJhZ0ltYWdlKCppbWFn
ZSkgJiYgKGRyYWdJbWFnZSA9IERyYWdJbWFnZSB7IGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShp
bWFnZSwgZWxlbWVudC5yZW5kZXJlcigpID8gb3JpZW50YXRpb25EZXNjcmlwdGlvbiA6IEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpKSB9KSkgeworICAgIGlmIChpbWFnZSAmJiAhbGF5b3V0
UmVjdC5pc0VtcHR5KCkgJiYgc2hvdWxkVXNlQ2FjaGVkSW1hZ2VGb3JEcmFnSW1hZ2UoKmltYWdl
KSAmJiAoZHJhZ0ltYWdlID0gRHJhZ0ltYWdlIHsgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGlt
YWdlLCBvcmllbnRhdGlvbikgfSkpIHsKICAgICAgICAgZHJhZ0ltYWdlID0gRHJhZ0ltYWdlIHsg
Zml0RHJhZ0ltYWdlVG9NYXhTaXplKGRyYWdJbWFnZS5nZXQoKSwgbGF5b3V0UmVjdC5zaXplKCks
IG1heERyYWdJbWFnZVNpemUoKSkgfTsKICAgICAgICAgSW50U2l6ZSBmaXR0ZWRTaXplID0gZHJh
Z0ltYWdlU2l6ZShkcmFnSW1hZ2UuZ2V0KCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EcmFnSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RyYWdJbWFnZS5jcHAJKHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiwyMCArMTAyLDE1IEBAIHN0
YXRpYyBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbVMKICAgICBpZiAoIXNuYXBzaG90
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbiBvcmllbnRhdGlvbjsKLSNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQorICAg
IEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb247CiAgICAgaWYgKG5vZGUpIHsKICAgICAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgICAgIGlmICgh
cmVuZGVyZXIgfHwgIWlzPFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKSkKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgICAgIGF1dG8mIHJlbmRlckVsZW1lbnQgPSBkb3duY2FzdDxS
ZW5kZXJFbGVtZW50PigqcmVuZGVyZXIpOwotICAgICAgICBvcmllbnRhdGlvbi5zZXRSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbihyZW5kZXJFbGVtZW50LnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKCkpOwotICAgICAgICBvcmllbnRhdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShyZW5k
ZXJFbGVtZW50LnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICAgICAgb3JpZW50YXRp
b24gPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqcmVuZGVyZXIpLmltYWdlT3JpZW50YXRpb24o
KTsKICAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShub2RlKTsKLSNlbmRpZgorCiAgICAg
UmVmUHRyPEltYWdlPiBpbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKFdURk1vdmUo
c25hcHNob3QpLCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CiAgICAgaWYgKCFpbWFnZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMDUsNyArMzAwLDcgQEAgRHJhZ0ltYWdlUmVmIGRp
c3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1EcmFn
SW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKQorRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFn
ZSosIEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCShyZXZpc2lv
biAyNDg2NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBEcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJh
Z0ltYWdlUmVmCiBEcmFnSW1hZ2VSZWYgcGxhdGZvcm1BZGp1c3REcmFnSW1hZ2VGb3JEZXZpY2VT
Y2FsZUZhY3RvcihEcmFnSW1hZ2VSZWYsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKTsKIERyYWdJ
bWFnZVJlZiBkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oRHJhZ0ltYWdlUmVmLCBmbG9hdCBk
ZWx0YSk7CiAKLURyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqLCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pOworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFn
ZUZyb21JbWFnZShJbWFnZSosIEltYWdlT3JpZW50YXRpb24pOwogRHJhZ0ltYWdlUmVmIGNyZWF0
ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOwogCiBX
RUJDT1JFX0VYUE9SVCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTm9kZShGcmFtZSYs
IE5vZGUmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAJKHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDcgKzE4
Myw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6Om5vdFNvbGlkQ29sb3IoKQogfQogI2VuZGlmCiAKLUlt
YWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdN
b2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pCitJbWFnZURyYXdS
ZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBCbGVuZE1vZGUgbW9kZSwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBpZiAoZGVzdFJlY3QuaXNFbXB0eSgp
IHx8IHNyY1JlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpE
aWROb3RoaW5nOwpAQCAtMjY4LDggKzI2OCw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFn
ZTo6ZHJhdyhHcmFwaGkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBJbWFn
ZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKGRlc2NyaXB0aW9uLmltYWdlT3JpZW50YXRpb24oKSk7
Ci0gICAgaWYgKGRlc2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVj
dEltYWdlT3JpZW50YXRpb24pCisgICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdlT3JpZW50YXRp
b246OkZyb21JbWFnZSkKICAgICAgICAgb3JpZW50YXRpb24gPSBmcmFtZU9yaWVudGF0aW9uQXRJ
bmRleChtX2N1cnJlbnRGcmFtZSk7CiAKICAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNvbnRl
eHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUoKSksIG9wLCBtb2RlLCBvcmllbnRh
dGlvbik7CkBAIC0zMDYsNyArMzA1LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDbwogICAgICAgICAvLyBUZW1wb3JhcmlseSByZXNldCBpbWFnZSBvYnNlcnZlciwg
d2UgZG9uJ3Qgd2FudCB0byByZWNlaXZlIGFueSBjaGFuZ2VJblJlY3QoKSBjYWxscyBkdWUgdG8g
dGhpcyByZWxheW91dC4KICAgICAgICAgc2V0SW1hZ2VPYnNlcnZlcihudWxscHRyKTsKIAotICAg
ICAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCB0aWxlUmVjdCwgdGlsZVJlY3QsIG9wLCBibGVu
ZE1vZGUsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbigpKTsKKyAgICAgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgdGlsZVJlY3QsIHRpbGVS
ZWN0LCBvcCwgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVu
dGF0aW9uOjpOb25lKTsKIAogICAgICAgICBzZXRJbWFnZU9ic2VydmVyKG9ic2VydmVyKTsKICAg
ICAgICAgYnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgJKHJldmlzaW9uIDI0ODY0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gfGRlc3Ry
b3lBbGx8IGFsb25nLgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkoYm9v
bCBkZXN0cm95QWxsID0gdHJ1ZSk7CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUs
IEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgb3ZlcnJpZGU7CiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHZvaWQgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwg
Q29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNw
cAkocmV2aXNpb24gMjQ4NjQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3
IEBAIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2YKICAgICBjb250ZXh0
LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24pCitJbWFnZURyYXdSZXN1bHQgQ3Jvc3NmYWRlR2VuZXJhdGVk
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bikKIHsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7
CiAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9k
ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgJKHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIEZsb2F0U2l6ZSBzaXpl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jcm9zc2ZhZGVTaXplOyB9CiAKIHByb3RlY3Rl
ZDoKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24p
IG92ZXJyaWRlOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIG92
ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgb3ZlcnJp
ZGU7CiAKICAgICBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZShJbWFnZSYgZnJvbUltYWdlLCBJbWFn
ZSYgdG9JbWFnZSwgZmxvYXQgcGVyY2VudGFnZSwgY29uc3QgRmxvYXRTaXplJiBjcm9zc2ZhZGVT
aXplLCBjb25zdCBGbG9hdFNpemUmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCShyZXZpc2lvbiAyNDg2NDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDcgKzE3MCw3IEBAIEltYWdlRHJhd1Jlc3VsdCBDdXN0
b21QYWludEltYWdlOjpkb0N1c3QKICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWREcmF3
OwogfQogCi1JbWFnZURyYXdSZXN1bHQgQ3VzdG9tUGFpbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK0lt
YWdlRHJhd1Jlc3VsdCBDdXN0b21QYWludEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVz
dENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUs
IERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZGVzdENvbnRleHQpOwogICAgIGRlc3RDb250ZXh0LnNldENv
bXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgJKHJl
dmlzaW9uIDI0ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3Rv
bVBhaW50SW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgog
CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRvQ3VzdG9tUGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRTaXplJik7CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24pIGZpbmFsOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3Jp
ZW50YXRpb24pIGZpbmFsOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUpIGZpbmFsOwogCiAgICAgV2Vha1B0cjxQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6UGFpbnRE
ZWZpbml0aW9uPiBtX3BhaW50RGVmaW5pdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24gMjQ4NjQxKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXN0cm95RGVj
b2RlZERhdGEoYm9vbCAvKmRlc3Ryb3lBbGwqLyA9IHRydWUpIG92ZXJyaWRlIHsgfQogCiBwcm90
ZWN0ZWQ6Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKSBvdmVycmlkZSA9IDA7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbikgb3ZlcnJpZGUgPSAwOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUpIG92ZXJyaWRlID0gMDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAJKHJldmlzaW9uIDI0ODY0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIEdyYWRpZW50SW1hZ2U6OkdyYWRpZW50
SW1hZ2UoR3JhZGllbnQmIGcKIAogR3JhZGllbnRJbWFnZTo6fkdyYWRpZW50SW1hZ2UoKSA9IGRl
ZmF1bHQ7CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFkaWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBi
bGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorSW1h
Z2VEcmF3UmVzdWx0IEdyYWRpZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVj
b2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcihkZXN0Q29udGV4dCk7CiAgICAgZGVzdENvbnRleHQuc2V0Q29tcG9z
aXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAkocmV2aXNpb24gMjQ4
NjQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
R3JhZGllbnRJbWFnZShHcmFkaWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCi0gICAgSW1hZ2VE
cmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUs
IERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBmaW5hbDsKKyAgICBJ
bWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBmaW5hbDsKICAgICB2b2lkIGRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBmaW5hbDsKICAgICBib29sIGlzR3JhZGll
bnRJbWFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGR1bXAoV1RG
OjpUZXh0U3RyZWFtJikgY29uc3QgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDI0ODY0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTczMyw3ICs3MzMsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3SW1hCiAgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdJbWFnZShp
bWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogCiAgICAg
SW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhp
c1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5
KTsKLSAgICByZXR1cm4gaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fZGVjb2RpbmdNb2RlLCBpbWFn
ZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24pOworICAgIHJldHVybiBp
bWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9u
cy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwg
aW1hZ2VQYWludGluZ09wdGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fb3JpZW50YXRpb24pOwogfQogCiBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQ
YWludGluZ09wdGlvbnMpCkBAIC03NDUsNyArNzQ1LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1RpbAogICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFn
ZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFp
bnRpbmdPcHRpb25zKTsKIAogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMu
bV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZCgqdGhp
cywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRpbmdP
cHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRN
b2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSk7CisgICAgcmV0dXJuIGlt
YWdlLmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNp
bmcsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9k
ZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbik7CiB9CiAKIEltYWdlRHJhd1Jl
c3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZs
b2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDI0ODY0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTEsMjkgKzIxMSwyOSBAQCBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUgewogfTsKIAogc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zIHsKLSAgICBJbWFnZVBhaW50
aW5nT3B0aW9ucyhDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0
ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVj
b2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uID0gSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKCksIEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25R
dWFsaXR5ID0gSW50ZXJwb2xhdGlvbkRlZmF1bHQpCisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMo
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVy
LCBCbGVuZE1vZGUgYmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZSBk
ZWNvZGluZ01vZGUgPSBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9u
IG9yaWVudGF0aW9uID0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSwgSW50ZXJwb2xhdGlvblF1YWxp
dHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBJbnRlcnBvbGF0aW9uRGVmYXVsdCkKICAgICAgICAg
OiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQogICAgICAgICAsIG1fYmxl
bmRNb2RlKGJsZW5kTW9kZSkKICAgICAgICAgLCBtX2RlY29kaW5nTW9kZShkZWNvZGluZ01vZGUp
Ci0gICAgICAgICwgbV9vcmllbnRhdGlvbkRlc2NyaXB0aW9uKG9yaWVudGF0aW9uRGVzY3JpcHRp
b24pCisgICAgICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKICAgICAgICAgLCBtX2lu
dGVycG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQogICAgIHsKICAgICB9CiAK
LSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3Jp
ZW50YXRpb25EZXNjcmlwdGlvbiwgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1
YWxpdHkgPSBJbnRlcnBvbGF0aW9uRGVmYXVsdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgYmxlbmRNb2RlID0gQmxl
bmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUgPSBEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKQorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEltYWdlT3JpZW50YXRpb24g
b3JpZW50YXRpb24sIEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5ID0g
SW50ZXJwb2xhdGlvbkRlZmF1bHQsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9y
ID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6
Tm9ybWFsLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJv
bm91cykKICAgICAgICAgOiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQog
ICAgICAgICAsIG1fYmxlbmRNb2RlKGJsZW5kTW9kZSkKICAgICAgICAgLCBtX2RlY29kaW5nTW9k
ZShkZWNvZGluZ01vZGUpCi0gICAgICAgICwgbV9vcmllbnRhdGlvbkRlc2NyaXB0aW9uKG9yaWVu
dGF0aW9uRGVzY3JpcHRpb24pCisgICAgICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikK
ICAgICAgICAgLCBtX2ludGVycG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQog
ICAgIHsKICAgICB9CiAKLSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhJbnRlcnBvbGF0aW9uUXVh
bGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9y
aWVudGF0aW9uRGVzY3JpcHRpb24gPSBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgQ29t
cG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBC
bGVuZE1vZGUgYmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZSBkZWNv
ZGluZ01vZGUgPSBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKQorICAgIEltYWdlUGFpbnRpbmdP
cHRpb25zKEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5LCBJbWFnZU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uID0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZSBkZWNvZGluZ01v
ZGUgPSBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKQogICAgICAgICA6IG1fY29tcG9zaXRlT3Bl
cmF0b3IoY29tcG9zaXRlT3BlcmF0b3IpCiAgICAgICAgICwgbV9ibGVuZE1vZGUoYmxlbmRNb2Rl
KQogICAgICAgICAsIG1fZGVjb2RpbmdNb2RlKGRlY29kaW5nTW9kZSkKLSAgICAgICAgLCBtX29y
aWVudGF0aW9uRGVzY3JpcHRpb24ob3JpZW50YXRpb25EZXNjcmlwdGlvbikKKyAgICAgICAgLCBt
X29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQogICAgICAgICAsIG1faW50ZXJwb2xhdGlvblF1YWxp
dHkoaW50ZXJwb2xhdGlvblF1YWxpdHkpCiAgICAgewogICAgIH0KQEAgLTI0Myw3ICsyNDMsNyBA
QCBzdHJ1Y3QgSW1hZ2VQYWludGluZ09wdGlvbnMgewogICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1f
Y29tcG9zaXRlT3BlcmF0b3I7CiAgICAgQmxlbmRNb2RlIG1fYmxlbmRNb2RlOwogICAgIERlY29k
aW5nTW9kZSBtX2RlY29kaW5nTW9kZTsKLSAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24g
bV9vcmllbnRhdGlvbkRlc2NyaXB0aW9uOworICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRh
dGlvbjsKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBtX2ludGVycG9sYXRpb25RdWFsaXR5Owog
fTsKIApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAKICNpZiBVU0UoQ0cp
IHx8IFVTRShESVJFQ1QyRCkgfHwgVVNFKENBSVJPKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBz
ZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9
IEJsZW5kTW9kZTo6Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uID0gSW1hZ2VPcmllbnRhdGlvbigp
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21w
b3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgSW1hZ2VPcmll
bnRhdGlvbiA9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpOwogI2VuZGlmCiAKICNpZiBVU0UoQ0cp
IHx8IFVTRShESVJFQ1QyRCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCShyZXZpc2lvbiAyNDg2NDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTMgKzQwLDEzIEBAIEdyYXBoaWNzQ29udGV4dElt
cGw6On5HcmFwaGljc0NvbnRleHRJbXAKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJ
bXBsOjpkcmF3SW1hZ2VJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewogICAg
IEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRo
aXNTY29wZShjb250ZXh0LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFs
aXR5KTsKLSAgICByZXR1cm4gaW1hZ2UuZHJhdyhjb250ZXh0LCBkZXN0aW5hdGlvbiwgc291cmNl
LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9kZWNvZGluZ01vZGUs
IGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CisgICAgcmV0
dXJuIGltYWdlLmRyYXcoY29udGV4dCwgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVu
ZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fZGVjb2RpbmdNb2RlLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX29yaWVudGF0aW9uKTsKIH0KIAogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29u
dGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2lu
dCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
IHsKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxp
dHlGb3JUaGlzU2NvcGUoY29udGV4dCwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0
aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZChjb250ZXh0LCBkZXN0aW5h
dGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9j
b21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdl
UGFpbnRpbmdPcHRpb25zLm1fZGVjb2RpbmdNb2RlKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhd1Rp
bGVkKGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBpbWFn
ZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9u
cy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdl
UGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb24pOwogfQogCiBJbWFnZURyYXdSZXN1bHQgR3Jh
cGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdl
OjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCShyZXZpc2lvbiAyNDg2NDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
OSw3ICsxNDksNyBAQCB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmCiAg
ICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdygqdGhpcyk7CiB9CiAKLUltYWdlRHJhd1Jl
c3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6
ZSYgc2NhbGVkVGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUp
CitJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBj
b25zdCBGbG9hdFNpemUmIHNjYWxlZFRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUg
ZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIENvbG9y
IGNvbG9yID0gc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiAgICAgaWYgKGNvbG9yLmlzVmFsaWQo
KSkgewpAQCAtMTg0LDcgKzE4NCw3IEBAIEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVk
KEdyYXBoaWMKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0gb25l
VGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Qu
c2V0V2lkdGgoZGVzdFJlY3Qud2lkdGgoKSAvIHNjYWxlLndpZHRoKCkpOwogICAgICAgICB2aXNp
YmxlU3JjUmVjdC5zZXRIZWlnaHQoZGVzdFJlY3QuaGVpZ2h0KCkgLyBzY2FsZS5oZWlnaHQoKSk7
Ci0gICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3As
IGJsZW5kTW9kZSwgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7
CisgICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3As
IGJsZW5kTW9kZSwgZGVjb2RpbmdNb2RlLCBvcmllbnRhdGlvbik7CiAgICAgfQogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTE5Niw3ICsxOTYsNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1h
Z2U6OmRyYXdUaWxlZChHcmFwaGljCiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRZKChk
ZXN0UmVjdC55KCkgLSBvbmVUaWxlUmVjdC55KCkpIC8gc2NhbGUuaGVpZ2h0KCkpOwogICAgICAg
ICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0V2lkdGgoMSk7CiAgICAgICAgICAgICB2aXNpYmxlU3Jj
UmVjdC5zZXRIZWlnaHQoZGVzdFJlY3QuaGVpZ2h0KCkgLyBzY2FsZS5oZWlnaHQoKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIG9wLCBC
bGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24oKSk7CisgICAgICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNy
Y1JlY3QsIG9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdNb2RlLCBvcmllbnRhdGlvbik7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKHNpemUoKS5oZWlnaHQoKSA9PSAxICYmIGludGVyc2Vj
dGlvbihvbmVUaWxlUmVjdCwgZGVzdFJlY3QpLndpZHRoKCkgPT0gZGVzdFJlY3Qud2lkdGgoKSkg
ewogICAgICAgICAgICAgRmxvYXRSZWN0IHZpc2libGVTcmNSZWN0OwpAQCAtMjA0LDcgKzIwNCw3
IEBAIEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWMKICAgICAgICAgICAg
IHZpc2libGVTcmNSZWN0LnNldFkoMCk7CiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRX
aWR0aChkZXN0UmVjdC53aWR0aCgpIC8gc2NhbGUud2lkdGgoKSk7CiAgICAgICAgICAgICB2aXNp
YmxlU3JjUmVjdC5zZXRIZWlnaHQoMSk7Ci0gICAgICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBk
ZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIG9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdN
b2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICByZXR1cm4g
ZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIG9wLCBCbGVuZE1vZGU6Ok5vcm1h
bCwgZGVjb2RpbmdNb2RlLCBvcmllbnRhdGlvbik7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYK
QEAgLTIzNiw3ICsyMzYsNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFw
aGljCiAgICAgICAgICAgICAgICAgRmxvYXRSZWN0IGZyb21SZWN0KHRvRmxvYXRQb2ludChjdXJy
ZW50VGlsZVJlY3QubG9jYXRpb24oKSAtIG9uZVRpbGVSZWN0LmxvY2F0aW9uKCkpLCBjdXJyZW50
VGlsZVJlY3Quc2l6ZSgpKTsKICAgICAgICAgICAgICAgICBmcm9tUmVjdC5zY2FsZSgxIC8gc2Nh
bGUud2lkdGgoKSwgMSAvIHNjYWxlLmhlaWdodCgpKTsKIAotICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IGRyYXcoY3R4dCwgdG9SZWN0LCBmcm9tUmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBk
ZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAg
ICAgICByZXN1bHQgPSBkcmF3KGN0eHQsIHRvUmVjdCwgZnJvbVJlY3QsIG9wLCBCbGVuZE1vZGU6
Ok5vcm1hbCwgZGVjb2RpbmdNb2RlLCBvcmllbnRhdGlvbik7CiAgICAgICAgICAgICAgICAgaWYg
KHJlc3VsdCA9PSBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlcXVlc3REZWNvZGluZykKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICB0b1ggKz0gY3VycmVu
dFRpbGVSZWN0LndpZHRoKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmgJKHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw4ICsxOTAsOCBAQCBwcm90ZWN0
ZWQ6CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZpcnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGlu
Z1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CiAjZW5kaWYKLSAg
ICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
bikgPSAwOwotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29u
c3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUpOworICAgIHZpcnR1YWwgSW1hZ2VE
cmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUs
IERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgPSAwOworICAgIEltYWdlRHJhd1Jlc3Vs
dCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNv
ZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGls
ZWQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxlUnVs
ZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9yKTsKIAogICAgIC8vIFN1
cHBvcnRpbmcgdGlsZWQgZHJhd2luZwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRnJhbWUuaAkocmV2aXNpb24gMjQ4NjQxKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3
ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgU3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2
ZWwgeyBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0IH07CiAgICAgRGVjb2RpbmdPcHRpb25zIG1f
ZGVjb2RpbmdPcHRpb25zOwogCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uIHsg
RGVmYXVsdEltYWdlT3JpZW50YXRpb24gfTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50
YXRpb24geyBJbWFnZU9yaWVudGF0aW9uOjpOb25lIH07CiAgICAgU2Vjb25kcyBtX2R1cmF0aW9u
OwogICAgIGJvb2wgbV9oYXNBbHBoYSB7IHRydWUgfTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmNwcAkocmV2
aXNpb24gMjQ4NjQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VP
cmllbnRhdGlvbi5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw2MyArMCwwIEBACi0KLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgotCi0jaW5j
bHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiRmxvYXRTaXplLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotQWZmaW5lVHJhbnNmb3JtIEltYWdlT3JpZW50YXRpb246OnRyYW5z
Zm9ybUZyb21EZWZhdWx0KGNvbnN0IEZsb2F0U2l6ZSYgZHJhd25TaXplKSBjb25zdAotewotICAg
IGZsb2F0IHcgPSBkcmF3blNpemUud2lkdGgoKTsKLSAgICBmbG9hdCBoID0gZHJhd25TaXplLmhl
aWdodCgpOwotCi0gICAgc3dpdGNoIChtX29yaWVudGF0aW9uKSB7Ci0gICAgY2FzZSBPcmlnaW5U
b3BMZWZ0OgotICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7Ci0gICAgY2FzZSBPcmln
aW5Ub3BSaWdodDoKLSAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgtMSwgIDAsICAwLCAg
MSwgIHcsIDApOwotICAgIGNhc2UgT3JpZ2luQm90dG9tUmlnaHQ6Ci0gICAgICAgIHJldHVybiBB
ZmZpbmVUcmFuc2Zvcm0oLTEsICAwLCAgMCwgLTEsICB3LCBoKTsKLSAgICBjYXNlIE9yaWdpbkJv
dHRvbUxlZnQ6Ci0gICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oIDEsICAwLCAgMCwgLTEs
ICAwLCBoKTsKLSAgICBjYXNlIE9yaWdpbkxlZnRUb3A6Ci0gICAgICAgIHJldHVybiBBZmZpbmVU
cmFuc2Zvcm0oIDAsICAxLCAgMSwgIDAsICAwLCAwKTsKLSAgICBjYXNlIE9yaWdpblJpZ2h0VG9w
OgotICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCAwLCAgMSwgLTEsICAwLCAgdywgMCk7
Ci0gICAgY2FzZSBPcmlnaW5SaWdodEJvdHRvbToKLSAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5z
Zm9ybSggMCwgLTEsIC0xLCAgMCwgIHcsIGgpOwotICAgIGNhc2UgT3JpZ2luTGVmdEJvdHRvbToK
LSAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSggMCwgLTEsICAxLCAgMCwgIDAsIGgpOwot
ICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBZmZpbmVUcmFu
c2Zvcm0oKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uaAkocmV2aXNp
b24gMjQ4NjQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmll
bnRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMDcgKzI0LDEwMCBAQAogICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi0jaWZuZGVmIEltYWdlT3JpZW50YXRpb25faAotI2RlZmluZSBJbWFnZU9yaWVudGF0
aW9uX2gKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5j
bHVkZSAiRmxvYXRTaXplLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQWZmaW5l
VHJhbnNmb3JtOwotY2xhc3MgRmxvYXRTaXplOworc3RydWN0IEltYWdlT3JpZW50YXRpb24gewor
ICAgIGVudW0gT3JpZW50YXRpb24geworICAgICAgICBGcm9tSW1hZ2UgICAgICAgICA9IDAsIC8v
IE9yaWVudGF0aW9uIGZyb20gdGhlIGltYWdlIHNob3VsZCBiZSByZXNwZWN0ZWQuCisKKyAgICAg
ICAgLy8gVGhpcyByYW5nZSBpbnRlbnRpb25hbGx5IG1hdGNoZXMgdGhlIG9yaWVudGF0aW9uIHZh
bHVlcyBmcm9tIHRoZSBFWElGIHNwZWMuCisgICAgICAgIC8vIFNlZSBKRUlUQSBDUC0zNDUxLCBw
YWdlIDE4LiBodHRwOi8vd3d3LmV4aWYub3JnL0V4aWYyLTIuUERGCisgICAgICAgIE9yaWdpblRv
cExlZnQgICAgID0gMSwgLy8gZGVmYXVsdAorICAgICAgICBPcmlnaW5Ub3BSaWdodCAgICA9IDIs
IC8vIG1pcnJvciBhbG9uZyB5LWF4aXMKKyAgICAgICAgT3JpZ2luQm90dG9tUmlnaHQgPSAzLCAv
LyAxODAgZGVncmVlIHJvdGF0aW9uCisgICAgICAgIE9yaWdpbkJvdHRvbUxlZnQgID0gNCwgLy8g
bWlycm9yIGFsb25nIHRoZSB4LWF4aXMKKyAgICAgICAgT3JpZ2luTGVmdFRvcCAgICAgPSA1LCAv
LyBtaXJyb3IgYWxvbmcgeC1heGlzICsgMjcwIGRlZ3JlZSBDVyByb3RhdGlvbgorICAgICAgICBP
cmlnaW5SaWdodFRvcCAgICA9IDYsIC8vIDkwIGRlZ3JlZSBDVyByb3RhdGlvbgorICAgICAgICBP
cmlnaW5SaWdodEJvdHRvbSA9IDcsIC8vIG1pcnJvciBhbG9uZyB4LWF4aXMgKyA5MCBkZWdyZWUg
Q1cgcm90YXRpb24KKyAgICAgICAgT3JpZ2luTGVmdEJvdHRvbSAgPSA4LCAvLyAyNzAgZGVncmVl
IENXIHJvdGF0aW9uCiAKLS8vIFRoaXMgZW51bSBpbnRlbnRpb25hbGx5IG1hdGNoZXMgdGhlIG9y
aWVudGF0aW9uIHZhbHVlcyBmcm9tIHRoZSBFWElGIHNwZWMuCi0vLyBTZWUgSkVJVEEgQ1AtMzQ1
MSwgcGFnZSAxOC4gaHR0cDovL3d3dy5leGlmLm9yZy9FeGlmMi0yLlBERgotZW51bSBJbWFnZU9y
aWVudGF0aW9uRW51bSB7Ci0gICAgLy8gIlRvcExlZnQiIG1lYW5zIHRoYXQgdGhlIDAgcm93IHN0
YXJ0cyBhdCB0aGUgVG9wLCB0aGUgMCBjb2x1bW4gc3RhcnRzIGF0IHRoZSBMZWZ0LgotICAgIE9y
aWdpblRvcExlZnQgPSAxLCAvLyBkZWZhdWx0Ci0gICAgT3JpZ2luVG9wUmlnaHQgPSAyLCAvLyBt
aXJyb3IgYWxvbmcgeS1heGlzCi0gICAgT3JpZ2luQm90dG9tUmlnaHQgPSAzLCAvLyAxODAgZGVn
cmVlIHJvdGF0aW9uCi0gICAgT3JpZ2luQm90dG9tTGVmdCA9IDQsIC8vIG1pcnJvciBhbG9uZyB0
aGUgeC1heGlzCi0gICAgT3JpZ2luTGVmdFRvcCA9IDUsIC8vIG1pcnJvciBhbG9uZyB4LWF4aXMg
KyAyNzAgZGVncmVlIENXIHJvdGF0aW9uCi0gICAgT3JpZ2luUmlnaHRUb3AgPSA2LCAvLyA5MCBk
ZWdyZWUgQ1cgcm90YXRpb24KLSAgICBPcmlnaW5SaWdodEJvdHRvbSA9IDcsIC8vIG1pcnJvciBh
bG9uZyB4LWF4aXMgKyA5MCBkZWdyZWUgQ1cgcm90YXRpb24KLSAgICBPcmlnaW5MZWZ0Qm90dG9t
ID0gOCwgLy8gMjcwIGRlZ3JlZSBDVyByb3RhdGlvbgotICAgIC8vIEFsbCBvdGhlciB2YWx1ZXMg
YXJlICJyZXNlcnZlZCIgYXMgb2YgRVhJRiAyLjIKLSAgICBEZWZhdWx0SW1hZ2VPcmllbnRhdGlv
biA9IE9yaWdpblRvcExlZnQsCi19OworICAgICAgICBOb25lICAgICAgICAgICAgICA9IE9yaWdp
blRvcExlZnQKKyAgICB9OwogCi1lbnVtIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSB7Ci0g
ICAgRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9IDAsCi0gICAgUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24gPSAxCi19OworICAgIEltYWdlT3JpZW50YXRpb24oKSA9IGRlZmF1bHQ7CiAKLXN0
cnVjdCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gewotICAgIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbihSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdl
T3JpZW50YXRpb24sCi0gICAgICAgIEltYWdlT3JpZW50YXRpb25FbnVtIG9yaWVudGF0aW9uKQot
ICAgICAgICA6IG1fcmVzcGVjdE9yaWVudGF0aW9uKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKQotICAgICAgICAsIG1fb3JpZW50YXRpb24ob3JpZW50YXRpb24pCisgICAgSW1hZ2VPcmll
bnRhdGlvbihPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKKyAgICAgICAgOiBtX29yaWVudGF0aW9u
KG9yaWVudGF0aW9uKQogICAgIHsKICAgICB9CiAKLSAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24oKQotICAgICAgICA6IG1fcmVzcGVjdE9yaWVudGF0aW9uKERvTm90UmVzcGVjdEltYWdl
T3JpZW50YXRpb24pCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihEZWZhdWx0SW1hZ2VPcmllbnRh
dGlvbikKKyAgICBzdGF0aWMgT3JpZW50YXRpb24gZnJvbUVYSUZWYWx1ZShpbnQgZXhpZlZhbHVl
KQogICAgIHsKKyAgICAgICAgcmV0dXJuIGlzVmFsaWRFWElGT3JpZW50YXRpb24oZXhpZlZhbHVl
KSA/IHN0YXRpY19jYXN0PE9yaWVudGF0aW9uPihleGlmVmFsdWUpIDogTm9uZTsKICAgICB9CiAK
LSAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oUmVzcGVjdEltYWdlT3JpZW50YXRpb25F
bnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAgICAgICA6IG1fcmVzcGVjdE9y
aWVudGF0aW9uKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAgICAgICAsIG1fb3Jp
ZW50YXRpb24oRGVmYXVsdEltYWdlT3JpZW50YXRpb24pCisgICAgb3BlcmF0b3IgT3JpZW50YXRp
b24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CisKKyAgICBib29sIHVzZXNXaWR0
aEFzSGVpZ2h0KCkgY29uc3QKICAgICB7CisgICAgICAgIEFTU0VSVChpc1ZhbGlkRVhJRk9yaWVu
dGF0aW9uKG1fb3JpZW50YXRpb24pKTsKKyAgICAgICAgLy8gVmFsdWVzIDUgdGhyb3VnaCA4IGFs
bCBmbGlwIHRoZSB3aWR0aC9oZWlnaHQuCisgICAgICAgIHJldHVybiBtX29yaWVudGF0aW9uID49
IE9yaWdpbkxlZnRUb3AgJiYgbV9vcmllbnRhdGlvbiA8PSBPcmlnaW5MZWZ0Qm90dG9tOwogICAg
IH0KIAotICAgIHZvaWQgc2V0UmVzcGVjdEltYWdlT3JpZW50YXRpb24oUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSB7IG1fcmVzcGVjdE9y
aWVudGF0aW9uID0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb247IH0KLSAgICBSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbkVudW0gcmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSB7IHJldHVybiBt
X3Jlc3BlY3RPcmllbnRhdGlvbjsgfQorICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1Gcm9t
RGVmYXVsdChjb25zdCBGbG9hdFNpemUmIGRyYXduU2l6ZSkgY29uc3QKKyAgICB7CisgICAgICAg
IGZsb2F0IHcgPSBkcmF3blNpemUud2lkdGgoKTsKKyAgICAgICAgZmxvYXQgaCA9IGRyYXduU2l6
ZS5oZWlnaHQoKTsKIAotICAgIHZvaWQgc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oSW1hZ2VPcmll
bnRhdGlvbkVudW0gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9
Ci0gICAgSW1hZ2VPcmllbnRhdGlvbkVudW0gaW1hZ2VPcmllbnRhdGlvbigpIHsgcmV0dXJuIG1f
b3JpZW50YXRpb247IH0KKyAgICAgICAgc3dpdGNoIChtX29yaWVudGF0aW9uKSB7CisgICAgICAg
IGNhc2UgRnJvbUltYWdlOgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CisgICAgICAgIGNhc2UgT3JpZ2luVG9w
TGVmdDoKKyAgICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKKyAgICAgICAgY2Fz
ZSBPcmlnaW5Ub3BSaWdodDoKKyAgICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oLTEs
ICAwLCAgMCwgIDEsICB3LCAwKTsKKyAgICAgICAgY2FzZSBPcmlnaW5Cb3R0b21SaWdodDoKKyAg
ICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oLTEsICAwLCAgMCwgLTEsICB3LCBoKTsK
KyAgICAgICAgY2FzZSBPcmlnaW5Cb3R0b21MZWZ0OgorICAgICAgICAgICAgcmV0dXJuIEFmZmlu
ZVRyYW5zZm9ybSggMSwgIDAsICAwLCAtMSwgIDAsIGgpOworICAgICAgICBjYXNlIE9yaWdpbkxl
ZnRUb3A6CisgICAgICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCAwLCAgMSwgIDEsICAw
LCAgMCwgMCk7CisgICAgICAgIGNhc2UgT3JpZ2luUmlnaHRUb3A6CisgICAgICAgICAgICByZXR1
cm4gQWZmaW5lVHJhbnNmb3JtKCAwLCAgMSwgLTEsICAwLCAgdywgMCk7CisgICAgICAgIGNhc2Ug
T3JpZ2luUmlnaHRCb3R0b206CisgICAgICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCAw
LCAtMSwgLTEsICAwLCAgdywgaCk7CisgICAgICAgIGNhc2UgT3JpZ2luTGVmdEJvdHRvbToKKyAg
ICAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oIDAsIC0xLCAgMSwgIDAsICAwLCBoKTsK
KyAgICAgICAgfQogCi0gICAgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIG1fcmVzcGVjdE9y
aWVudGF0aW9uOwotICAgIEltYWdlT3JpZW50YXRpb25FbnVtIG1fb3JpZW50YXRpb247Ci19Owot
Ci1jbGFzcyBJbWFnZU9yaWVudGF0aW9uIHsKLXB1YmxpYzoKLSAgICBJbWFnZU9yaWVudGF0aW9u
KCkKLSAgICAgICAgOiBtX29yaWVudGF0aW9uKERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKQotICAg
IHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBBZmZpbmVU
cmFuc2Zvcm0oKTsKICAgICB9CiAKLSAgICBleHBsaWNpdCBJbWFnZU9yaWVudGF0aW9uKEltYWdl
T3JpZW50YXRpb25FbnVtIG9yaWVudGF0aW9uKQotICAgICAgICA6IG1fb3JpZW50YXRpb24ob3Jp
ZW50YXRpb24pCi0gICAgewotICAgIH0KK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IE9yaWVu
dGF0aW9uIEVYSUZGaXJzdCA9IE9yaWdpblRvcExlZnQ7CisgICAgc3RhdGljIGNvbnN0IE9yaWVu
dGF0aW9uIEVYSUZMYXN0ID0gT3JpZ2luTGVmdEJvdHRvbTsKKyAgICBzdGF0aWMgY29uc3QgT3Jp
ZW50YXRpb24gRmlyc3QgPSBGcm9tSW1hZ2U7CisgICAgc3RhdGljIGNvbnN0IE9yaWVudGF0aW9u
IExhc3QgPSBFWElGTGFzdDsKIAotICAgIGJvb2wgdXNlc1dpZHRoQXNIZWlnaHQoKSBjb25zdAor
ICAgIHN0YXRpYyBib29sIGlzVmFsaWRPcmllbnRhdGlvbihpbnQgb3JpZW50YXRpb24pCiAgICAg
ewotICAgICAgICAvLyBWYWx1ZXMgNSB0aHJvdWdoIDggYWxsIGZsaXAgdGhlIHdpZHRoL2hlaWdo
dC4KLSAgICAgICAgcmV0dXJuIG1fb3JpZW50YXRpb24gPj0gT3JpZ2luTGVmdFRvcDsKKyAgICAg
ICAgcmV0dXJuIG9yaWVudGF0aW9uID49IHN0YXRpY19jYXN0PGludD4oRmlyc3QpICYmIG9yaWVu
dGF0aW9uIDw9IHN0YXRpY19jYXN0PGludD4oTGFzdCk7CiAgICAgfQogCi0gICAgLy8gSW1hZ2VP
cmllbnRhdGlvbkVudW0gY3VycmVudGx5IG1hdGNoZXMgRVhJRiB2YWx1ZXMsIGhvd2V2ZXIgY29k
ZSBvdXRzaWRlCi0gICAgLy8gdGhpcyBmdW5jdGlvbiBzaG91bGQgbmV2ZXIgYXNzdW1lIHRoYXQu
Ci0gICAgc3RhdGljIEltYWdlT3JpZW50YXRpb24gZnJvbUVYSUZWYWx1ZShpbnQgZXhpZlZhbHVl
KQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRFWElGT3JpZW50YXRpb24oaW50IG9yaWVudGF0aW9u
KQogICAgIHsKLSAgICAgICAgLy8gVmFsdWVzIGRpcmVjdCBmcm9tIGltYWdlcyBtYXkgYmUgaW52
YWxpZCwgaW4gd2hpY2ggY2FzZSB3ZSB1c2UgdGhlIGRlZmF1bHQuCi0gICAgICAgIGlmIChleGlm
VmFsdWUgPCBPcmlnaW5Ub3BMZWZ0IHx8IGV4aWZWYWx1ZSA+IE9yaWdpbkxlZnRCb3R0b20pCi0g
ICAgICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbigpOwotICAgICAgICByZXR1cm4gSW1h
Z2VPcmllbnRhdGlvbihzdGF0aWNfY2FzdDxJbWFnZU9yaWVudGF0aW9uRW51bT4oZXhpZlZhbHVl
KSk7CisgICAgICAgIHJldHVybiBvcmllbnRhdGlvbiA+PSBzdGF0aWNfY2FzdDxpbnQ+KEVYSUZG
aXJzdCkgJiYgb3JpZW50YXRpb24gPD0gc3RhdGljX2Nhc3Q8aW50PihFWElGTGFzdCk7CiAgICAg
fQogCi0gICAgLy8gVGhpcyB0cmFuc2Zvcm0gY2FuIGJlIHVzZWQgZm9yIGRyYXdpbmcgYW4gaW1h
Z2UgYWNjb3JkaW5nIHRvIHRoZSBvcmllbnRhdGlvbi4KLSAgICAvLyBJdCBzaG91bGQgYmUgdXNl
ZCBpbiBhIHJpZ2h0LWhhbmRlZCBjb29yZGluYXRlIHN5c3RlbS4KLSAgICBBZmZpbmVUcmFuc2Zv
cm0gdHJhbnNmb3JtRnJvbURlZmF1bHQoY29uc3QgRmxvYXRTaXplJiBkcmF3blNpemUpIGNvbnN0
OwotCi0gICAgaW5saW5lIG9wZXJhdG9yIEltYWdlT3JpZW50YXRpb25FbnVtKCkgY29uc3QgeyBy
ZXR1cm4gbV9vcmllbnRhdGlvbjsgfQotICAgIAotICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgSW1hZ2VPcmllbnRhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLm1fb3Jp
ZW50YXRpb24gPT0gbV9vcmllbnRhdGlvbjsgfQotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0o
Y29uc3QgSW1hZ2VPcmllbnRhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRklYTUU6IFRoaXMgb25seSBuZWVkcyB0byBi
ZSBvbmUgYnl0ZS4KLSAgICBJbWFnZU9yaWVudGF0aW9uRW51bSBtX29yaWVudGF0aW9uOworICAg
IE9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24geyBOb25lIH07CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBJbWFnZU9yaWVudGF0aW9uX2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAJKHJldmlzaW9u
IDI0ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjg5LDcgKzY4OSw3IEBAIHZvaWQgSW1hZ2VTb3VyY2U6
OmR1bXAoVGV4dFN0cmVhbSYgdHMpCiAgICAgdHMuZHVtcFByb3BlcnR5KCJzb2xpZC1jb2xvciIs
IHNpbmdsZVBpeGVsU29saWRDb2xvcigpKTsKIAogICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb24gPSBmcmFtZU9yaWVudGF0aW9uQXRJbmRleCgwKTsKLSAgICBpZiAob3JpZW50YXRpb24g
IT0gT3JpZ2luVG9wTGVmdCkKKyAgICBpZiAob3JpZW50YXRpb24gIT0gSW1hZ2VPcmllbnRhdGlv
bjo6Tm9uZSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJvcmllbnRhdGlvbiIsIG9yaWVudGF0
aW9uKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAyNDg2
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIE5hbWVkSW1hZ2VH
ZW5lcmF0ZWRJbWFnZTo6TmFtZWRJbWFnZUdlbmUKICAgICBzZXRDb250YWluZXJTaXplKHNpemUp
OwogfQogCi1JbWFnZURyYXdSZXN1bHQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikK
K0ltYWdlRHJhd1Jlc3VsdCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVu
ZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikKIHsKICNpZiBVU0UoTkVXX1RI
RU1FKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oCShyZXZp
c2lvbiAyNDg2NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZElt
YWdlR2VuZXJhdGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJh
dyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUpIG92ZXJyaWRlOwogCiAgICAgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdl
KFN0cmluZyBuYW1lLCBjb25zdCBGbG9hdFNpemUmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAkocmV2aXNpb24gMjQ4NjQxKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNjYsNyArNjYsNyBAQCBJbnRTaXplIG5hdGl2ZUltYWdlU2l6ZShjb25zdCBOYXRp
dmVJbWFnCiBib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsK
IENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJik7CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
SW50U2l6ZSYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIGNvbnN0IEltYWdlT3JpZW50
YXRpb24mKTsKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
SW50U2l6ZSYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24p
Owogdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7
CiAgICAgCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMubW0JKHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTUzMSw3ICs1MzEsNyBAQCBib29sIEltYWdlRGVjb2RlckFWRk9iakM6OmZyYW1l
SXNDb21wbGV0CiAKIEltYWdlT3JpZW50YXRpb24gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6ZnJhbWVP
cmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdAogewotICAgIHJldHVybiBJbWFnZU9yaWVu
dGF0aW9uKCk7CisgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok5vbmU7CiB9CiAKIFNlY29u
ZHMgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4
KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fp
cm9PcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNDg2NDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzksNyArMTc5LDcgQEAgc3RhdGljIHZvaWQgZHJhd1NoYWRv
d0xheWVyQnVmZmVyKFBsYXRmbwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBzdXJm
YWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpIHsKLSAgICAgICAgZHJh
d05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgRmxvYXRSZWN0KHJv
dW5kZWRJbnRQb2ludChsYXllck9yaWdpbiksIGxheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGxheWVyU2l6ZSksIHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGU6Ok5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbigpLAorICAgICAgICBkcmF3TmF0aXZl
SW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBGbG9hdFJlY3Qocm91bmRlZElu
dFBvaW50KGxheWVyT3JpZ2luKSwgbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
bGF5ZXJTaXplKSwgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZTo6Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lLAogICAgICAgICAgICAgSW50ZXJwb2xh
dGlvbkRlZmF1bHQsIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKICAg
ICB9CiB9CkBAIC0xOTIsNyArMTkyLDcgQEAgc3RhdGljIHZvaWQgZHJhd1NoYWRvd0ltYWdlKFBs
YXRmb3JtQ29udAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1h
Z2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpIHsKLSAgICAgICAgZHJhd05hdGl2ZUlt
YWdlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHNo
YWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCwgSW1h
Z2VPcmllbnRhdGlvbigpLAorICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0
LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgc2hhZG93U3RhdGUuZ2xvYmFsQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uOjpOb25l
LAogICAgICAgICAgICAgSW50ZXJwb2xhdGlvbkRlZmF1bHQsIHNoYWRvd1N0YXRlLmdsb2JhbEFs
cGhhLCBTaGFkb3dTdGF0ZSgpKTsKICAgICB9CiB9CkBAIC04ODksNyArODg5LDcgQEAgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2FpcgogICAgICAgICBDYWlybzo6U3RhdGU6
OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQsIGNvbXBvc2l0ZU9wZXJhdG9y
LCBibGVuZE1vZGUpOwogCiAgICAgRmxvYXRSZWN0IGRzdCA9IGRlc3RSZWN0OwotICAgIGlmIChv
cmllbnRhdGlvbiAhPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikgeworICAgIGlmIChvcmllbnRh
dGlvbiAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKSB7CiAgICAgICAgIC8vIEltYWdlT3JpZW50
YXRpb24gZXhwZWN0cyB0aGUgb3JpZ2luIHRvIGJlIGF0ICgwLCAwKS4KICAgICAgICAgQ2Fpcm86
OnRyYW5zbGF0ZShwbGF0Zm9ybUNvbnRleHQsIGRzdC54KCksIGRzdC55KCkpOwogICAgICAgICBk
c3Quc2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3Bw
CShyZXZpc2lvbiAyNDg2NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU0LDcgKzM1NCw3
IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiAKIHsKICAgICBCYWNr
aW5nU3RvcmVDb3B5IGNvcHlNb2RlID0gJmRlc3RpbmF0aW9uQ29udGV4dCA9PSAmY29udGV4dCgp
ID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlOwogICAgIFJlZlB0cjxJ
bWFnZT4gaW1hZ2UgPSBjb3B5SW1hZ2UoY29weU1vZGUpOwotICAgIGRlc3RpbmF0aW9uQ29udGV4
dC5kcmF3SW1hZ2UoKmltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlv
bnMob3AsIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKCkpKTsKKyAgICBkZXN0aW5hdGlvbkNvbnRleHQuZHJhd0ltYWdlKCpp
bWFnZSwgZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1v
ZGUsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpKTsK
IH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUlt
YWdlQ2Fpcm8uY3BwCShyZXZpc2lvbiAyNDg2NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTcsNyArNTcsNyBAQCBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjCiAg
ICAgcmV0dXJuIGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdCKCpwaXhlbCk7CiB9CiAKLXZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGNvbnN0IEltYWdlT3JpZW50YXRp
b24mIG9yaWVudGF0aW9uKQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXpl
LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBjb250ZXh0LmRyYXdOYXRp
dmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgY29tcG9zaXRlT3Bl
cmF0b3IsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNw
cAkocmV2aXNpb24gMjQ4NjQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjQsNyArMzY0LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjbwogICAgIENHQ29udGV4
dFRyYW5zbGF0ZUNUTShjb250ZXh0LCBhZGp1c3RlZERlc3RSZWN0LngoKSwgYWRqdXN0ZWREZXN0
UmVjdC55KCkpOwogICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0TG9jYXRpb24oRmxvYXRQb2ludCgp
KTsKIAotICAgIGlmIChvcmllbnRhdGlvbiAhPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikgewor
ICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKSB7CiAgICAgICAg
IENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBvcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVm
YXVsdChhZGp1c3RlZERlc3RSZWN0LnNpemUoKSkpOwogICAgICAgICBpZiAob3JpZW50YXRpb24u
dXNlc1dpZHRoQXNIZWlnaHQoKSkgewogICAgICAgICAgICAgLy8gVGhlIGRlc3RpbmF0aW9uIHJl
Y3Qgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5kIGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0
aGUgb3JpZW50YXRpb24gb2YKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAJKHJldmlzaW9uIDI0ODY0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyBJbWFnZU9yaWVudGF0aW9u
IG9yaWVudGF0aW9uRnJvbVAKICAgICBBU1NFUlQoaW1hZ2VQcm9wZXJ0aWVzKTsKICAgICBDRk51
bWJlclJlZiBvcmllbnRhdGlvblByb3BlcnR5ID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdl
dFZhbHVlKGltYWdlUHJvcGVydGllcywga0NHSW1hZ2VQcm9wZXJ0eU9yaWVudGF0aW9uKTsKICAg
ICBpZiAoIW9yaWVudGF0aW9uUHJvcGVydHkpCi0gICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0
aW9uKCk7CisgICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpOb25lOwogICAgIAogICAg
IGludCBleGlmVmFsdWU7CiAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShvcmllbnRhdGlvblByb3BlcnR5
LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmZXhpZlZhbHVlKTsKQEAgLTM1MCw3ICszNTAsNyBAQCBJbWFn
ZU9yaWVudGF0aW9uIEltYWdlRGVjb2RlckNHOjpmcmFtZU9yCiB7CiAgICAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gcHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9w
ZXJ0aWVzQXRJbmRleChtX25hdGl2ZURlY29kZXIuZ2V0KCksIGluZGV4LCBpbWFnZVNvdXJjZU9w
dGlvbnMoKS5nZXQoKSkpOwogICAgIGlmICghcHJvcGVydGllcykKLSAgICAgICAgcmV0dXJuIElt
YWdlT3JpZW50YXRpb24oKTsKKyAgICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok5vbmU7
CiAgICAgCiAgICAgcmV0dXJuIG9yaWVudGF0aW9uRnJvbVByb3BlcnRpZXMocHJvcGVydGllcy5n
ZXQoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRp
dmVJbWFnZUNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAkocmV2aXNpb24gMjQ4NjQxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY5LDcgKzY5LDcgQEAgQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29s
b3IoYwogICAgIHJldHVybiBDb2xvcihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsx
XSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7
CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBCbGVuZE1vZGUgbW9kZSwgY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYgb3JpZW50
YXRpb24pCit2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24p
CiB7CiAgICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUgZ2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBp
cyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgogICAgIEludFNpemUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9
IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAkocmV2aXNpb24g
MjQ4NjQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIFBERkRv
Y3VtZW50SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlCiAgICAgZGVjb2RlZFNpemVDaGFuZ2VkKGlu
dGVybmFsU2l6ZS51bmNsYW1wZWRBcmVhKCkgKiA0KTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IFBE
RkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24pCitJbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIElt
YWdlT3JpZW50YXRpb24pCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50IHx8ICFtX2hhc1BhZ2UpCiAg
ICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5oCShyZXZpc2lvbiAyNDg2NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QREZEb2N1bWVudEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50
cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNp
Y1JhdGlvKSBvdmVycmlkZTsKICAgICBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwog
Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBv
dmVycmlkZTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVy
cmlkZTsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZh
dGl2ZS4KICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAkocmV2aXNpb24gMjQ4NjQxKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MTEsMTEgKzE0MTEsMTEgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZQogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV90
YWcobWVzc2FnZSwgJnRhZ3MpOwogICAgICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmco
dGFncywgR1NUX1RBR19JTUFHRV9PUklFTlRBVElPTiwgJnRhZy5vdXRQdHIoKSkpIHsKICAgICAg
ICAgICAgIGlmICghZ19zdHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS05MCIpKQotICAgICAgICAg
ICAgICAgIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbihPcmlnaW5S
aWdodFRvcCkpOworICAgICAgICAgICAgICAgIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oSW1h
Z2VPcmllbnRhdGlvbjo6T3JpZ2luUmlnaHRUb3ApOwogICAgICAgICAgICAgZWxzZSBpZiAoIWdf
c3RyY21wMCh0YWcuZ2V0KCksICJyb3RhdGUtMTgwIikpCi0gICAgICAgICAgICAgICAgc2V0Vmlk
ZW9Tb3VyY2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uKE9yaWdpbkJvdHRvbVJpZ2h0KSk7
CisgICAgICAgICAgICAgICAgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0
aW9uOjpPcmlnaW5Cb3R0b21SaWdodCk7CiAgICAgICAgICAgICBlbHNlIGlmICghZ19zdHJjbXAw
KHRhZy5nZXQoKSwgInJvdGF0ZS0yNzAiKSkKLSAgICAgICAgICAgICAgICBzZXRWaWRlb1NvdXJj
ZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24oT3JpZ2luTGVmdEJvdHRvbSkpOworICAgICAg
ICAgICAgICAgIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbjo6T3Jp
Z2luTGVmdEJvdHRvbSk7CiAgICAgICAgIH0KICAgICAgICAgZ3N0X3RhZ19saXN0X3VucmVmKHRh
Z3MpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAJKHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODg3LDcgKzg4Nyw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGEKIAogICAgIEltYWdlUGFpbnRpbmdP
cHRpb25zIHBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVDb3B5KTsKICAgICBpZiAobV9yZW5kZXJp
bmdDYW5CZUFjY2VsZXJhdGVkKQotICAgICAgICBwYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlv
bkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKG1fdmlkZW9Tb3VyY2VPcmllbnRh
dGlvbik7CisgICAgICAgIHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uID0gbV92aWRlb1Nv
dXJjZU9yaWVudGF0aW9uOwogCiAgICAgYXV0byBnc3RJbWFnZSA9IEltYWdlR1N0cmVhbWVyOjpj
cmVhdGVJbWFnZShtX3NhbXBsZS5nZXQoKSk7CiAgICAgaWYgKCFnc3RJbWFnZSkKQEAgLTk2NSw3
ICs5NjUsNyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtCiB9CiAj
ZW5kaWYgLy8gVVNFKEdTVFJFQU1FUl9HTCkKIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKGNvbnN0IEltYWdlT3JpZW50YXRp
b24mIG9yaWVudGF0aW9uKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpz
ZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7
CiAgICAgaWYgKG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbiA9PSBvcmllbnRhdGlvbikKICAgICAg
ICAgcmV0dXJuOwpAQCAtOTgwLDE2ICs5ODAsMTYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpzZQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp1
cGRhdGVUZXh0dXJlTWFwcGVyRmxhZ3MoKQogewogICAgIHN3aXRjaCAobV92aWRlb1NvdXJjZU9y
aWVudGF0aW9uKSB7Ci0gICAgY2FzZSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjoKKyAgICBjYXNl
IEltYWdlT3JpZW50YXRpb246Ok9yaWdpblRvcExlZnQ6CiAgICAgICAgIG1fdGV4dHVyZU1hcHBl
ckZsYWdzID0gMDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcmlnaW5SaWdodFRvcDoKKyAg
ICBjYXNlIEltYWdlT3JpZW50YXRpb246Ok9yaWdpblJpZ2h0VG9wOgogICAgICAgICBtX3RleHR1
cmVNYXBwZXJGbGFncyA9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkUm90YXRlVGV4dHVyZTkwOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIE9yaWdpbkJvdHRvbVJpZ2h0OgorICAgIGNhc2UgSW1h
Z2VPcmllbnRhdGlvbjo6T3JpZ2luQm90dG9tUmlnaHQ6CiAgICAgICAgIG1fdGV4dHVyZU1hcHBl
ckZsYWdzID0gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRSb3RhdGVUZXh0dXJlMTgwOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIE9yaWdpbkxlZnRCb3R0b206CisgICAgY2FzZSBJbWFnZU9yaWVu
dGF0aW9uOjpPcmlnaW5MZWZ0Qm90dG9tOgogICAgICAgICBtX3RleHR1cmVNYXBwZXJGbGFncyA9
IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkUm90YXRlVGV4dHVyZTI3MDsKICAgICAgICAgYnJlYWs7
CiAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuaAkocmV2aXNpb24gMjQ4NjQxKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICBOYXRp
dmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAjZW5kaWYK
IAotICAgIHZvaWQgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihjb25zdCBJbWFnZU9yaWVudGF0
aW9uJik7CisgICAgdm9pZCBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRp
b24pOwogICAgIEdzdEVsZW1lbnQqIHBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9waXBlbGlu
ZS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCBib29sIGhhbmRsZVN5bmNNZXNzYWdlKEdzdE1lc3Nh
Z2UqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9W
aWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFt
ZXIuY3BwCShyZXZpc2lvbiAyNDg2NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTcsMTcgKzk3LDE3IEBAIHZvaWQgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVy
Ojp1cGRhdGUKICAgICBtX3RleHR1cmVTcGFjZU1hdHJpeC5tYWtlSWRlbnRpdHkoKTsKIAogICAg
IHN3aXRjaCAobV9vcmllbnRhdGlvbikgewotICAgIGNhc2UgRGVmYXVsdEltYWdlT3JpZW50YXRp
b246CisgICAgY2FzZSBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5Ub3BMZWZ0OgogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE9yaWdpblJpZ2h0VG9wOgorICAgIGNhc2UgSW1hZ2VPcmllbnRhdGlv
bjo6T3JpZ2luUmlnaHRUb3A6CiAgICAgICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4LnJvdGF0ZSgt
OTApOwogICAgICAgICBtX3RleHR1cmVTcGFjZU1hdHJpeC50cmFuc2xhdGUoLTEsIDApOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIE9yaWdpbkJvdHRvbVJpZ2h0OgorICAgIGNhc2UgSW1hZ2VP
cmllbnRhdGlvbjo6T3JpZ2luQm90dG9tUmlnaHQ6CiAgICAgICAgIG1fdGV4dHVyZVNwYWNlTWF0
cml4LnJvdGF0ZSgxODApOwogICAgICAgICBtX3RleHR1cmVTcGFjZU1hdHJpeC50cmFuc2xhdGUo
LTEsIC0xKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcmlnaW5MZWZ0Qm90dG9tOgorICAg
IGNhc2UgSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luTGVmdEJvdHRvbToKICAgICAgICAgbV90ZXh0
dXJlU3BhY2VNYXRyaXgucm90YXRlKC0yNzApOwogICAgICAgICBtX3RleHR1cmVTcGFjZU1hdHJp
eC50cmFuc2xhdGUoMCwgLTEpOwogICAgICAgICBicmVhazsKQEAgLTEzNyw3ICsxMzcsNyBAQCB2
b2lkIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6dXBkYXRlCiAgICAgICAgIC0xLCAxLCAt
KGZhclZhbHVlICsgbmVhclZhbHVlKSAvIChmYXJWYWx1ZSAtIG5lYXJWYWx1ZSksIDEpOwogfQog
Ci1ib29sIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKEdMdWludCBpbnB1dFRleHR1cmUsIEludFNpemUmIGZyYW1lU2l6ZSwgR0x1
aW50IG91dHB1dFRleHR1cmUsIEdMZW51bSBvdXRwdXRUYXJnZXQsIEdMaW50IGxldmVsLCBHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBib29sIGZsaXBZ
LCBJbWFnZU9yaWVudGF0aW9uJiBzb3VyY2VPcmllbnRhdGlvbikKK2Jvb2wgVmlkZW9UZXh0dXJl
Q29waWVyR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR0x1aW50
IGlucHV0VGV4dHVyZSwgSW50U2l6ZSYgZnJhbWVTaXplLCBHTHVpbnQgb3V0cHV0VGV4dHVyZSwg
R0xlbnVtIG91dHB1dFRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwg
R0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGJvb2wgZmxpcFksIEltYWdlT3JpZW50YXRpb24g
c291cmNlT3JpZW50YXRpb24pCiB7CiAgICAgaWYgKCFtX3NoYWRlclByb2dyYW0gfHwgIW1fZnJh
bWVidWZmZXIgfHwgIW1fdmJvIHx8IGZyYW1lU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVh
bWVyLmgJKHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVh
bWVyKENvbG9yQ29udmVyc2lvbik7CiAgICAgflZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcigp
OwogCi0gICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR0x1aW50IGlu
cHV0VGV4dHVyZSwgSW50U2l6ZSYgZnJhbWVTaXplLCBHTHVpbnQgb3V0cHV0VGV4dHVyZSwgR0xl
bnVtIG91dHB1dFRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGJvb2wgZmxpcFksIEltYWdlT3JpZW50YXRpb24mIHNv
dXJjZU9yaWVudGF0aW9uKTsKKyAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4
dHVyZShHTHVpbnQgaW5wdXRUZXh0dXJlLCBJbnRTaXplJiBmcmFtZVNpemUsIEdMdWludCBvdXRw
dXRUZXh0dXJlLCBHTGVudW0gb3V0cHV0VGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVy
bmFsRm9ybWF0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgYm9vbCBmbGlwWSwgSW1hZ2VP
cmllbnRhdGlvbiBzb3VyY2VPcmllbnRhdGlvbik7CiAgICAgdm9pZCB1cGRhdGVDb2xvckNvbnZl
cnNpb25NYXRyaXgoQ29sb3JDb252ZXJzaW9uKTsKICAgICB2b2lkIHVwZGF0ZVRleHR1cmVTcGFj
ZU1hdHJpeCgpOwogICAgIHZvaWQgdXBkYXRlVHJhbnNmb3JtYXRpb25NYXRyaXgoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9E
aXJlY3QyRE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNDg2NDEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODEzLDcgKzgxMyw3IEBAIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29u
dGV4dERpcmUKICAgICBjb250ZXh0LT5TZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKICAgICBhZGp1
c3RlZERlc3RSZWN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoKSk7CiAKLSAgICBpZiAob3JpZW50
YXRpb24gIT0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pIHsKKyAgICBpZiAob3JpZW50YXRpb24g
IT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkgewogICAgICAgICBjb25jYXRDVE0ocGxhdGZvcm1D
b250ZXh0LCBvcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3RlZERlc3RSZWN0
LnNpemUoKSkpOwogICAgICAgICBpZiAob3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSkg
ewogICAgICAgICAgICAgLy8gVGhlIGRlc3RpbmF0aW9uIHJlY3Qgd2lsbCBoYXZlIGl0J3Mgd2lk
dGggYW5kIGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VD
R1dpbi5jcHAJKHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBA
QCBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNCiAgICAgaWYgKHNpemUp
CiAgICAgICAgIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShnYywgRmxvYXRSZWN0KDAuMGYs
IDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksICpzaXplLCBDb21wb3Np
dGVDb3B5KTsKICAgICBlbHNlCi0gICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBm
LCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4w
ZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbXBvc2l0ZUNvcHks
IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgwLjBmLCAw
LjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwg
MC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbXBvc2l0ZUNv
cHksIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9y
aWVudGF0aW9uOjpOb25lKTsKIAogICAgIC8vIERvIGNsZWFudXAKICAgICBDR0NvbnRleHRSZWxl
YXNlKGNnQ29udGV4dCk7CkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdG
cmFtZU1hdGNoaW5nU291cmMKICAgICAgICAgaWYgKGltYWdlICYmIENHSW1hZ2VHZXRIZWlnaHQo
aW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgQ0dJbWFn
ZUdldFdpZHRoKGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgoKSkp
IHsKICAgICAgICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAg
ICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsKLSAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0
UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWln
aHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAgZHJh
dyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBz
cmNTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKICAgICAgICAgICAg
IG1fY3VycmVudEZyYW1lID0gY3VycmVudEZyYW1lOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0
Y2hpbmdTb3VyYwogCiAgICAgLy8gTm8gaW1hZ2Ugb2YgdGhlIGNvcnJlY3Qgc2l6ZSB3YXMgZm91
bmQsIGZhbGxiYWNrIHRvIGRyYXdpbmcgdGhlIGN1cnJlbnQgZnJhbWUKICAgICBGbG9hdFNpemUg
aW1hZ2VTaXplID0gQml0bWFwSW1hZ2U6OnNpemUoKTsKLSAgICBkcmF3KGN0eHQsIGRzdFJlY3Qs
IEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdo
dCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNo
cm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgZHJhdyhjdHh0LCBk
c3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6
ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUNhaXJvV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAJKHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZT
aXplKEhCSVRNCiAgICAgaWYgKHNpemUpCiAgICAgICAgIGRyYXdGcmFtZU1hdGNoaW5nU291cmNl
U2l6ZShnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5i
bUhlaWdodCksICpzaXplLCBDb21wb3NpdGVDb3B5KTsKICAgICBlbHNlCi0gICAgICAgIGRyYXco
Z2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWln
aHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5o
ZWlnaHQoKSksIENvbXBvc2l0ZUNvcHksIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgIGRy
YXcoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1I
ZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6
ZS5oZWlnaHQoKSksIENvbXBvc2l0ZUNvcHksIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKIAogICAgIC8vIERvIGNs
ZWFudXAKICAgICBjYWlyb19kZXN0cm95KHRhcmdldFJlZik7CkBAIC0xMDAsNyArMTAwLDcgQEAg
dm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyYwogICAgICAgICBpZiAoY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UuZ2V0KCkpID09IHN0YXRpY19jYXN0
PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lk
dGgoc3VyZmFjZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLndpZHRoKCkp
KSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CiAg
ICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7Ci0gICAgICAgICAgICBkcmF3KGN0eHQsIGRz
dFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVp
Z2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3lu
Y2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAgIGRy
YXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwg
c3JjU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2Rp
bmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CiAgICAgICAgICAg
ICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1h
dGNoaW5nU291cmMKIAogICAgIC8vIE5vIGltYWdlIG9mIHRoZSBjb3JyZWN0IHNpemUgd2FzIGZv
dW5kLCBmYWxsYmFjayB0byBkcmF3aW5nIHRoZSBjdXJyZW50IGZyYW1lCiAgICAgRmxvYXRTaXpl
IGltYWdlU2l6ZSA9IEJpdG1hcEltYWdlOjpzaXplKCk7Ci0gICAgZHJhdyhjdHh0LCBkc3RSZWN0
LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWln
aHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgIGRyYXcoY3R4dCwg
ZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNp
emUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI0
ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29k
ZXJEaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSwyMCArMTU5LDIwIEBAIGJvb2wg
SW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmZyYW1lSXNDb21wbGUKIEltYWdlT3JpZW50YXRpb24gSW1h
Z2VEZWNvZGVyRGlyZWN0MkQ6OmZyYW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fbmF0aXZlRGVjb2RlcikKLSAgICAgICAgcmV0dXJuIEltYWdl
T3JpZW50YXRpb24oKTsKKyAgICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok5vbmU7CiAK
ICAgICBDT01QdHI8SVdJQ0JpdG1hcEZyYW1lRGVjb2RlPiBmcmFtZTsKICAgICBIUkVTVUxUIGhy
ID0gbV9uYXRpdmVEZWNvZGVyLT5HZXRGcmFtZShpbmRleCwgJmZyYW1lKTsKICAgICBpZiAoIVNV
Q0NFRURFRChocikpCi0gICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7CisgICAgICAg
IHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpOb25lOwogCiAgICAgQ09NUHRyPElXSUNNZXRhZGF0
YVF1ZXJ5UmVhZGVyPiBtZXRhZGF0YTsKICAgICBociA9IGZyYW1lLT5HZXRNZXRhZGF0YVF1ZXJ5
UmVhZGVyKCZtZXRhZGF0YSk7CiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQotICAgICAgICByZXR1
cm4gSW1hZ2VPcmllbnRhdGlvbigpOworICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6
Tm9uZTsKIAogICAgIC8vIEZJWE1FOiBJZGVudGlmeSBpbWFnZSB0eXBlLCBhbmQgYXNrIHByb3Bl
ciBvcmllbnRhdGlvbi4KLSAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbigpOworICAgIHJldHVy
biBJbWFnZU9yaWVudGF0aW9uOjpOb25lOwogfQogCiBTZWNvbmRzIEltYWdlRGVjb2RlckRpcmVj
dDJEOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEaXJlY3QyRC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGlyZWN0
MkQuY3BwCShyZXZpc2lvbiAyNDg2NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VEaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcg
QEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyYwogICAgICAgICBpZiAo
aW1hZ2UgJiYgY2xhbXBUbzxpbnQ+KGltYWdlU2l6ZS5oZWlnaHQoKSkgPT0gc3RhdGljX2Nhc3Q8
aW50PihzcmNTaXplLmhlaWdodCgpKSAmJiBjbGFtcFRvPGludD4oaW1hZ2VTaXplLndpZHRoKCkp
ID09IHN0YXRpY19jYXN0PGludD4oc3JjU2l6ZS53aWR0aCgpKSkgewogICAgICAgICAgICAgc2l6
ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAgICAgbV9jdXJyZW50
RnJhbWUgPSBpOwotICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4w
ZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3As
IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZs
b2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCBj
b21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMs
IEltYWdlT3JpZW50YXRpb246Ok5vbmUpOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBj
dXJyZW50RnJhbWU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTg5LDcgKzg5
LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyYwogCiAgICAgLy8g
Tm8gaW1hZ2Ugb2YgdGhlIGNvcnJlY3Qgc2l6ZSB3YXMgZm91bmQsIGZhbGxiYWNrIHRvIGRyYXdp
bmcgdGhlIGN1cnJlbnQgZnJhbWUKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gQml0bWFwSW1h
Z2U6OnNpemUoKTsKLSAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBm
LCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJs
ZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24oKSk7CisgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4w
ZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0
ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VP
cmllbnRhdGlvbjo6Tm9uZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0
aXZlSW1hZ2VEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xp
ZENvbG9yKGMKICAgICByZXR1cm4gQ29sb3IoKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9k
ZSBibGVuZE1vZGUsIGNvbnN0IEltYWdlT3JpZW50YXRpb24mIG9yaWVudGF0aW9uKQordm9pZCBk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24p
CiB7CiAgICAgYXV0byBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNw
cAkocmV2aXNpb24gMjQ4NjQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJ
bWFnZUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgRHJhZ0ltYWdlUmVm
IGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbgogICAgIHJldHVybiBpbWFnZTsKIH0KIAotRHJh
Z0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1hZ2UsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbikKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1h
Z2UoSW1hZ2UqIGltYWdlLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIHJldHVybiBpbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUlt
YWdlRGVjb2RlckZyYW1lLmgJKHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJhY2tpbmdTdG9yZT4gbV9iYWNraW5nU3RvcmU7CiAgICAgRGlzcG9zYWxNZXRob2QgbV9k
aXNwb3NhbE1ldGhvZCB7IERpc3Bvc2FsTWV0aG9kOjpVbnNwZWNpZmllZCB9OwogCi0gICAgSW1h
Z2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uIHsgRGVmYXVsdEltYWdlT3JpZW50YXRpb24gfTsK
KyAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24geyBJbWFnZU9yaWVudGF0aW9uOjpO
b25lIH07CiAgICAgU2Vjb25kcyBtX2R1cmF0aW9uOwogICAgIGJvb2wgbV9oYXNBbHBoYSB7IHRy
dWUgfTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9u
IDI0ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Myw3ICsxOTMsNyBAQCBz
dGF0aWMgSW1hZ2VPcmllbnRhdGlvbiByZWFkSW1hZ2VPcmllbnRhCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbigpOworICAgIHJldHVybiBJbWFnZU9yaWVu
dGF0aW9uOjpOb25lOwogfQogCiBjbGFzcyBKUEVHSW1hZ2VSZWFkZXIgewpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCShyZXZpc2lvbiAyNDg2NDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIERyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFn
SW1hZ2VSZWYKIAogc3RhdGljIGZsb2F0IG1heGltdW1BbGxvd2VkRHJhZ0ltYWdlQXJlYSA9IDYw
MCAqIDEwMjQ7CiAKLURyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2Uq
IGltYWdlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb24pCitEcmFnSW1h
Z2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWFnZSwgSW1hZ2VPcmllbnRh
dGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+d2lkdGgoKSB8
fCAhaW1hZ2UtPmhlaWdodCgpKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtOTYsOSArOTYsNyBA
QCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltCiAgICAgICAgIEdyYXBo
aWNzQ29udGV4dCBjb250ZXh0KHJlbmRlcmVyQ29udGV4dC5DR0NvbnRleHQpOwogICAgICAgICBj
b250ZXh0LnRyYW5zbGF0ZSgwLCBpbWFnZVNpemUuaGVpZ2h0KTsKICAgICAgICAgY29udGV4dC5z
Y2FsZSh7IGFkanVzdGVkSW1hZ2VTY2FsZSwgLWFkanVzdGVkSW1hZ2VTY2FsZSB9KTsKLSAgICAg
ICAgSW1hZ2VQYWludGluZ09wdGlvbnMgcGFpbnRpbmdPcHRpb25zOwotICAgICAgICBwYWludGlu
Z09wdGlvbnMubV9vcmllbnRhdGlvbkRlc2NyaXB0aW9uID0gb3JpZW50YXRpb247Ci0gICAgICAg
IGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgpLCBwYWludGluZ09wdGlvbnMp
OworICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoKSwgSW1hZ2VQ
YWludGluZ09wdGlvbnMob3JpZW50YXRpb24pKTsKICAgICB9XTsKICAgICByZXR1cm4gaW1hZ2VD
b3B5LkNHSW1hZ2U7CiB9CkBAIC0yNzQsNyArMjcyLDcgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IHNjYWxlRHJhZ0ltYWdlKFJldAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKQorUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZURyYWdJbWFnZUZy
b21JbWFnZShJbWFnZSosIEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0J
KHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1h
Z2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTkyLDE5ICs5MiwxOCBAQCBSZXRhaW5QdHI8TlNJ
bWFnZT4gZGlzc29sdmVEcmFnSW1hZ2VUb0ZyCiAgICAgcmV0dXJuIGRpc3NvbHZlZEltYWdlOwog
fQogICAgICAgICAKLVJldGFpblB0cjxOU0ltYWdlPiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2Uo
SW1hZ2UqIGltYWdlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pCitS
ZXRhaW5QdHI8TlNJbWFnZT4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWFnZSwg
SW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBGbG9hdFNpemUgc2l6ZSA9IGlt
YWdlLT5zaXplKCk7CiAKICAgICBpZiAoaXM8Qml0bWFwSW1hZ2U+KCppbWFnZSkpIHsKLSAgICAg
ICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbjsKICAgICAgICAgQml0bWFwSW1hZ2UmIGJp
dG1hcEltYWdlID0gZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSk7CiAgICAgICAgIEludFNp
emUgc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbiA9IGJpdG1hcEltYWdlLnNpemVSZXNwZWN0aW5n
T3JpZW50YXRpb24oKTsKIAotICAgICAgICBpZiAoZGVzY3JpcHRpb24ucmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKKyAgICAgICAgaWYgKG9yaWVu
dGF0aW9uID09IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkKICAgICAgICAgICAgIG9yaWVu
dGF0aW9uID0gYml0bWFwSW1hZ2Uub3JpZW50YXRpb25Gb3JDdXJyZW50RnJhbWUoKTsKIAotICAg
ICAgICBpZiAob3JpZW50YXRpb24gIT0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pIHsKKyAgICAg
ICAgaWYgKG9yaWVudGF0aW9uICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsKICAgICAgICAg
ICAgIC8vIENvbnN0cnVjdCBhIGNvcnJlY3RseS1yb3RhdGVkIGNvcHkgb2YgdGhlIGltYWdlIHRv
IHVzZSBhcyB0aGUgZHJhZyBpbWFnZS4KICAgICAgICAgICAgIEZsb2F0UmVjdCBkZXN0UmVjdChG
bG9hdFBvaW50KCksIHNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24pOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAJKHJldmlzaW9uIDI0
ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBleGl0OgogICAgIHJldHVybiBoYm1w
LmxlYWsoKTsKIH0KICAgICAKLURyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2Uo
SW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorRHJhZ0ltYWdlUmVmIGNy
ZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFnZU9yaWVudGF0aW9uKQogewog
ICAgIEhXbmREQyBkYygwKTsKICAgICBhdXRvIHdvcmtpbmdEQyA9IGFkb3B0R0RJT2JqZWN0KDo6
Q3JlYXRlQ29tcGF0aWJsZURDKGRjKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAJKHJldmlzaW9uIDI0ODY0MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0Niw3ICsxNDYsNyBAQCBleGl0OgogICAgIHJldHVybiBoYm1wLmxlYWsoKTsK
IH0KICAgICAKLURyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGlt
ZywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQorRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJ
bWFnZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIEhXbmRE
QyBkYygwKTsKICAgICBhdXRvIHdvcmtpbmdEQyA9IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRlQ29t
cGF0aWJsZURDKGRjKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0lt
YWdlRGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9EcmFnSW1hZ2VEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VEaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg5LDcgKzg5LDcgQEAgRHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZgog
ICAgIHJldHVybiBoYm1wLmxlYWsoKTsKIH0KIAotRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFn
ZUZyb21JbWFnZShJbWFnZSogaW1nLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCitEcmFn
SW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50
YXRpb24pCiB7CiAgICAgSFduZERDIGRjKG51bGxwdHIpOwogICAgIGF1dG8gd29ya2luZ0RDID0g
YWRvcHRHRElPYmplY3QoOjpDcmVhdGVDb21wYXRpYmxlREMoZGMpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkocmV2aXNp
b24gMjQ4NjQxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWUKIAogICAgICAgICAgICAgYXV0byBpbnRlcnBvbGF0
aW9uID0gY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgKmltYWdlLCAmYmdMYXll
ciwgZ2VvbWV0cnkudGlsZVNpemUoKSk7CiAgICAgICAgICAgICBhdXRvIGRlY29kaW5nTW9kZSA9
IGRlY29kaW5nTW9kZUZvckltYWdlRHJhdygqaW1hZ2UsIHBhaW50SW5mbyk7Ci0gICAgICAgICAg
ICBhdXRvIGRyYXdSZXN1bHQgPSBjb250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgZ2VvbWV0
cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBn
ZW9tZXRyeS50aWxlU2l6ZSgpLCBnZW9tZXRyeS5zcGFjZVNpemUoKSwgSW1hZ2VQYWludGluZ09w
dGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXIuYmxlbmRNb2RlKCksIGRlY29kaW5nTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIGludGVycG9sYXRpb24pKTsKKyAgICAgICAgICAg
IGF1dG8gZHJhd1Jlc3VsdCA9IGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBnZW9tZXRy
eS5kZXN0UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdl
b21ldHJ5LnRpbGVTaXplKCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0
aW9ucyhjb21wb3NpdGVPcCwgYmdMYXllci5ibGVuZE1vZGUoKSwgZGVjb2RpbmdNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uOjpOb25lLCBpbnRlcnBvbGF0aW9uKSk7CiAgICAgICAgICAgICBpZiAoZHJh
d1Jlc3VsdCA9PSBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlcXVlc3REZWNvZGluZykgewogICAgICAg
ICAgICAgICAgIEFTU0VSVChiZ0ltYWdlLT5pc0NhY2hlZEltYWdlKCkpOwogICAgICAgICAgICAg
ICAgIGJnSW1hZ2UtPmNhY2hlZEltYWdlKCktPmFkZENsaWVudFdhaXRpbmdGb3JBc3luY0RlY29k
aW5nKCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAzMCwxNiArMjAzMCwxOCBAQCBib29s
IFJlbmRlckVsZW1lbnQ6OmNoZWNrRm9yUmVwYWludER1cmluCiAgICAgcmV0dXJuICFzZXR0aW5n
cygpLnJlcGFpbnRPdXRzaWRlTGF5b3V0RW5hYmxlZCgpOwogfQogCi1SZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbkVudW0gUmVuZGVyRWxlbWVudDo6c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24o
KSBjb25zdAorSW1hZ2VPcmllbnRhdGlvbiBSZW5kZXJFbGVtZW50OjppbWFnZU9yaWVudGF0aW9u
KCkgY29uc3QKIHsKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQog
ICAgIC8vIFRoaXMgY2FuIG9ubHkgYmUgZW5hYmxlZCBmb3IgcG9ydHMgd2hpY2ggaG9ub3IgdGhl
IG9yaWVudGF0aW9uIGZsYWcgaW4gdGhlaXIgZHJhd2luZyBjb2RlLgogICAgIGlmIChkb2N1bWVu
dCgpLmlzSW1hZ2VEb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gUmVzcGVjdEltYWdlT3JpZW50
YXRpb247CisgICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2U7CiAjZW5k
aWYKICAgICAvLyBSZXNwZWN0IHRoZSBpbWFnZSdzIG9yaWVudGF0aW9uIGlmIGl0J3MgYmVpbmcg
dXNlZCBhcyBhIGZ1bGwtcGFnZSBpbWFnZSBvciBpdCdzCiAgICAgLy8gYW4gPGltZz4gYW5kIHRo
ZSBzZXR0aW5nIHRvIHJlc3BlY3QgaXQgZXZlcnl3aGVyZSBpcyBzZXQuCi0gICAgcmV0dXJuIHNl
dHRpbmdzKCkuc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSAmJiBpczxIVE1MSW1hZ2VF
bGVtZW50PihlbGVtZW50KCkpID8gUmVzcGVjdEltYWdlT3JpZW50YXRpb24gOiBEb05vdFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uOworICAgIGlmIChzZXR0aW5ncygpLnNob3VsZFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uKCkgJiYgaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKSkKKyAgICAg
ICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZTsKKyAgICByZXR1cm4gc3R5bGUo
KS5pbWFnZU9yaWVudGF0aW9uKCk7CiB9CiAKIHZvaWQgUmVuZGVyRWxlbWVudDo6YWRqdXN0RnJh
Z21lbnRlZEZsb3dTdGF0ZU9uQ29udGFpbmluZ0Jsb2NrQ2hhbmdlSWZOZWVkZWQoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCShyZXZpc2lvbiAyNDg2NDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDQsNyArMjA0LDcgQEAgcHVibGljOgogICAgIFJlbmRlckJsb2NrKiBjb250YWlu
aW5nQmxvY2tGb3JGaXhlZFBvc2l0aW9uKCkgY29uc3Q7CiAgICAgUmVuZGVyQmxvY2sqIGNvbnRh
aW5pbmdCbG9ja0ZvckFic29sdXRlUG9zaXRpb24oKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQ
T1JUIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlT3JpZW50YXRpb24gaW1hZ2VP
cmllbnRhdGlvbigpIGNvbnN0OwogCiAgICAgdm9pZCByZW1vdmVGcm9tUmVuZGVyRnJhZ21lbnRl
ZEZsb3coKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRFbmNsb3NpbmdGcmFnbWVudGVkRmxvd0Fu
ZENoaWxkSW5mb0luY2x1ZGluZ0Rlc2NlbmRhbnRzKFJlbmRlckZyYWdtZW50ZWRGbG93Kik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVj
dC5jcHAJKHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbWJlZGRlZE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNCw4ICsyMjQsNyBAQCB2
b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNuYXBzaG90CiAgICAgICAgIHJldHVybjsK
IAogICAgIEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb24gPSBjaG9vc2VJbnRlcnBv
bGF0aW9uUXVhbGl0eShjb250ZXh0LCBpbWFnZSwgJmltYWdlLCBhbGlnbmVkUmVjdC5zaXplKCkp
OwotICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9u
KHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCksIHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlv
bigpKTsKLSAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgYWxpZ25lZFJlY3QsIEltYWdlUGFp
bnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIGludGVycG9sYXRpb24pKTsKKyAg
ICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgYWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRp
b25zKGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlvbikpOwogfQogCiB2b2lkIFJlbmRl
ckVtYmVkZGVkT2JqZWN0OjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAJKHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2OSwxMSArNDY5LDcg
QEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZgogICAgICAgICAgICAg
ICAgICAgICBjZW50ZXJZID0gMDsKICAgICAgICAgICAgICAgICBpbWFnZU9mZnNldCA9IExheW91
dFNpemUobGVmdEJvcmRlciArIGxlZnRQYWQgKyBjZW50ZXJYICsgbWlzc2luZ0ltYWdlQm9yZGVy
V2lkdGgsIHRvcEJvcmRlciArIHRvcFBhZCArIGNlbnRlclkgKyBtaXNzaW5nSW1hZ2VCb3JkZXJX
aWR0aCk7CiAKLSAgICAgICAgICAgICAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3Jp
ZW50YXRpb25EZXNjcmlwdGlvbihzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKLSNp
ZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgICAgICAgICAgICAgIG9yaWVudGF0
aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5bGUoKS5pbWFnZU9yaWVu
dGF0aW9uKCkpOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmlt
YWdlLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFn
ZU9mZnNldCwgaW1hZ2VTaXplKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBvcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHNuYXBS
ZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBp
bWFnZVNpemUpLCBkZXZpY2VTY2FsZUZhY3RvciksIGltYWdlT3JpZW50YXRpb24oKSk7CiAgICAg
ICAgICAgICAgICAgZXJyb3JQaWN0dXJlRHJhd24gPSB0cnVlOwogICAgICAgICAgICAgfQogCkBA
IC02MzUsOSArNjMxLDggQEAgSW1hZ2VEcmF3UmVzdWx0IFJlbmRlckltYWdlOjpwYWludEludG9S
ZQogICAgIGlmIChpczxCaXRtYXBJbWFnZT4oaW1hZ2UpKQogICAgICAgICBkb3duY2FzdDxCaXRt
YXBJbWFnZT4oKmltYWdlKS51cGRhdGVGcm9tU2V0dGluZ3Moc2V0dGluZ3MoKSk7CiAKLSAgICBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihzaG91bGRS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpLCBzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CiAg
ICAgYXV0byBkZWNvZGluZ01vZGUgPSBkZWNvZGluZ01vZGVGb3JJbWFnZURyYXcoKmltYWdlLCBw
YWludEluZm8pOwotICAgIGF1dG8gZHJhd1Jlc3VsdCA9IHBhaW50SW5mby5jb250ZXh0KCkuZHJh
d0ltYWdlKCppbWcsIHJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdNb2RlLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9u
LCBpbnRlcnBvbGF0aW9uKSk7CisgICAgYXV0byBkcmF3UmVzdWx0ID0gcGFpbnRJbmZvLmNvbnRl
eHQoKS5kcmF3SW1hZ2UoKmltZywgcmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIGltYWdlT3JpZW50YXRp
b24oKSwgaW50ZXJwb2xhdGlvbikpOwogICAgIGlmIChkcmF3UmVzdWx0ID09IEltYWdlRHJhd1Jl
c3VsdDo6RGlkUmVxdWVzdERlY29kaW5nKQogICAgICAgICBpbWFnZVJlc291cmNlKCkuY2FjaGVk
SW1hZ2UoKS0+YWRkQ2xpZW50V2FpdGluZ0ZvckFzeW5jRGVjb2RpbmcoKnRoaXMpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAko
cmV2aXNpb24gMjQ4NjQxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NzYsNyArMjQ3Niw3IEBAIGJvb2wgUmVu
ZGVyTGF5ZXJCYWNraW5nOjppc0RpcmVjdGx5Q29tcG8KICAgICAgICAgaWYgKCFpczxCaXRtYXBJ
bWFnZT4oaW1hZ2UpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmIChk
b3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKS5vcmllbnRhdGlvbkZvckN1cnJlbnRGcmFtZSgp
ICE9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKQorICAgICAgICBpZiAoZG93bmNhc3Q8Qml0bWFw
SW1hZ2U+KCppbWFnZSkub3JpZW50YXRpb25Gb3JDdXJyZW50RnJhbWUoKSAhPSBJbWFnZU9yaWVu
dGF0aW9uOjpOb25lKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgKFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oV1BFKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAkocmV2aXNpb24gMjQ4NjQxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQ1LDggKzE0NSw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW46OnBhaW50U25hcHMKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50ZXJwb2xhdGlvblF1
YWxpdHkgaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQs
ICppbWFnZSwgaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7Ci0gICAgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24oKSwgc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAgIGNvbnRleHQuZHJh
d0ltYWdlKCppbWFnZSwgYWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0
aW9uRGVzY3JpcHRpb24sIGludGVycG9sYXRpb24pKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgq
aW1hZ2UsIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhpbWFnZU9yaWVudGF0aW9u
KCksIGludGVycG9sYXRpb24pKTsKIH0KIAogQ3Vyc29yRGlyZWN0aXZlIFJlbmRlclNuYXBzaG90
dGVkUGx1Z0luOjpnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBDdXJzb3ImIG92
ZXJyaWRlQ3Vyc29yKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NTIsNyArNzUy
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIFdlYkNvcmU6OmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUod3JpdGluZ01vZGUo
KSk7IH0KICAgICBib29sIGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1
cm4gV2ViQ29yZTo6aXNGbGlwcGVkV3JpdGluZ01vZGUod3JpdGluZ01vZGUoKSk7IH0KIAotICAg
IEltYWdlT3JpZW50YXRpb25FbnVtIGltYWdlT3JpZW50YXRpb24oKSBjb25zdDsKKyAgICBJbWFn
ZU9yaWVudGF0aW9uIGltYWdlT3JpZW50YXRpb24oKSBjb25zdDsKIAogICAgIEltYWdlUmVuZGVy
aW5nIGltYWdlUmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SW1hZ2VSZW5k
ZXJpbmc+KG1fcmFyZUluaGVyaXRlZERhdGEtPmltYWdlUmVuZGVyaW5nKTsgfQogCkBAIC05NTEs
NyArOTUxLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVO
VEFUSU9OKQotICAgIHZvaWQgc2V0SW1hZ2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uRW51
bSB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaW1hZ2VPcmllbnRhdGlvbiwgc3Rh
dGljX2Nhc3Q8aW50Pih2KSk7IH0KKyAgICB2b2lkIHNldEltYWdlT3JpZW50YXRpb24oSW1hZ2VP
cmllbnRhdGlvbiB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaW1hZ2VPcmllbnRh
dGlvbiwgc3RhdGljX2Nhc3Q8aW50Pih2KSk7IH0KICNlbmRpZgogCiAgICAgdm9pZCBzZXRJbWFn
ZVJlbmRlcmluZyhJbWFnZVJlbmRlcmluZyB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0
YSwgaW1hZ2VSZW5kZXJpbmcsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KSk7IH0KQEAgLTE1ODIs
NyArMTU4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgT3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bv
c2l0aW9uPiBpbml0aWFsVGV4dEVtcGhhc2lzUG9zaXRpb24oKSB7IHJldHVybiB7IFRleHRFbXBo
YXNpc1Bvc2l0aW9uOjpPdmVyLCBUZXh0RW1waGFzaXNQb3NpdGlvbjo6UmlnaHQgfTsgfQogICAg
IHN0YXRpYyBSdWJ5UG9zaXRpb24gaW5pdGlhbFJ1YnlQb3NpdGlvbigpIHsgcmV0dXJuIFJ1YnlQ
b3NpdGlvbjo6QmVmb3JlOyB9CiAgICAgc3RhdGljIExpbmVCb3hDb250YWluIGluaXRpYWxMaW5l
Qm94Q29udGFpbigpIHsgcmV0dXJuIExpbmVCb3hDb250YWluQmxvY2sgfCBMaW5lQm94Q29udGFp
bklubGluZSB8IExpbmVCb3hDb250YWluUmVwbGFjZWQ7IH0KLSAgICBzdGF0aWMgSW1hZ2VPcmll
bnRhdGlvbkVudW0gaW5pdGlhbEltYWdlT3JpZW50YXRpb24oKSB7IHJldHVybiBPcmlnaW5Ub3BM
ZWZ0OyB9CisgICAgc3RhdGljIEltYWdlT3JpZW50YXRpb24gaW5pdGlhbEltYWdlT3JpZW50YXRp
b24oKSB7IHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpOb25lOyB9CiAgICAgc3RhdGljIEltYWdl
UmVuZGVyaW5nIGluaXRpYWxJbWFnZVJlbmRlcmluZygpIHsgcmV0dXJuIEltYWdlUmVuZGVyaW5n
OjpBdXRvOyB9CiAgICAgc3RhdGljIEltYWdlUmVzb2x1dGlvblNvdXJjZSBpbml0aWFsSW1hZ2VS
ZXNvbHV0aW9uU291cmNlKCkgeyByZXR1cm4gSW1hZ2VSZXNvbHV0aW9uU291cmNlOjpTcGVjaWZp
ZWQ7IH0KICAgICBzdGF0aWMgSW1hZ2VSZXNvbHV0aW9uU25hcCBpbml0aWFsSW1hZ2VSZXNvbHV0
aW9uU25hcCgpIHsgcmV0dXJuIEltYWdlUmVzb2x1dGlvblNuYXA6Ok5vbmU7IH0KQEAgLTIwOTEs
MTIgKzIwOTEsMTIgQEAgaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6Omhhc0lubGluZUNvbHVtbgog
ICAgIHJldHVybiBheGlzID09IENvbHVtbkF4aXM6OkF1dG8gfHwgaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSA9PSAoYXhpcyA9PSBDb2x1bW5BeGlzOjpIb3Jpem9udGFsKTsKIH0KIAotaW5saW5l
IEltYWdlT3JpZW50YXRpb25FbnVtIFJlbmRlclN0eWxlOjppbWFnZU9yaWVudGF0aW9uKCkgY29u
c3QKK2lubGluZSBJbWFnZU9yaWVudGF0aW9uIFJlbmRlclN0eWxlOjppbWFnZU9yaWVudGF0aW9u
KCkgY29uc3QKIHsKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxJbWFnZU9yaWVudGF0aW9uRW51bT4obV9yYXJlSW5oZXJpdGVkRGF0YS0+
aW1hZ2VPcmllbnRhdGlvbik7CisgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb24obV9yYXJlSW5o
ZXJpdGVkRGF0YS0+aW1hZ2VPcmllbnRhdGlvbik7CiAjZWxzZQotICAgIHJldHVybiBEZWZhdWx0
SW1hZ2VPcmllbnRhdGlvbjsKKyAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZTsKICNl
bmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgJKHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbGluZUJv
eENvbnRhaW46IDc7IC8vIExpbmVCb3hDb250YWluCiAgICAgLy8gQ1NTIEltYWdlIFZhbHVlcyBM
ZXZlbCAzCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKLSAgICB1bnNpZ25lZCBp
bWFnZU9yaWVudGF0aW9uIDogNDsgLy8gSW1hZ2VPcmllbnRhdGlvbkVudW0KKyAgICB1bnNpZ25l
ZCBpbWFnZU9yaWVudGF0aW9uIDogNDsgLy8gSW1hZ2VPcmllbnRhdGlvbgogI2VuZGlmCiAgICAg
dW5zaWduZWQgaW1hZ2VSZW5kZXJpbmcgOiAzOyAvLyBJbWFnZVJlbmRlcmluZwogICAgIHVuc2ln
bmVkIGxpbmVTbmFwIDogMjsgLy8gTGluZVNuYXAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2aXNpb24gMjQ4NjQxKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDcgKzIwMiw3
IEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW4KIAogICAgIGZyYW1l
VmlldygpLT5zY3JvbGxUb0ZyYWdtZW50KGluaXRpYWxGcmFnbWVudFVSTCk7CiAKLSAgICBJbWFn
ZURyYXdSZXN1bHQgcmVzdWx0ID0gZHJhdyhjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmMsIGNv
bXBvc2l0ZU9wLCBibGVuZE1vZGUsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICBJbWFnZURyYXdSZXN1bHQgcmVzdWx0ID0gZHJh
dyhjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmMsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIERl
Y29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOwogCiAgICAg
c2V0SW1hZ2VPYnNlcnZlcihvYnNlcnZlcik7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIyMSw3
ICsyMjEsNyBAQCBOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDCiAgICAg
aWYgKCFidWZmZXIpIC8vIGZhaWxlZCB0byBhbGxvY2F0ZSBpbWFnZQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBD
b21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgIGRyYXcoYnVmZmVy
LT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1v
ZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6
Tm9uZSk7CiAKICAgICAvLyBGSVhNRTogV0soQnVnIDExMzY1Nyk6IFdlIHNob3VsZCB1c2UgRG9u
dENvcHlCYWNraW5nU3RvcmUgaGVyZS4KICAgICByZXR1cm4gYnVmZmVyLT5jb3B5SW1hZ2UoQ29w
eUJhY2tpbmdTdG9yZSktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CkBAIC0yNDcsNyAr
MjQ3LDcgQEAgTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbgogICAgIFBs
YXRmb3JtQ29udGV4dERpcmVjdDJEIHBsYXRmb3JtQ29udGV4dChuYXRpdmVJbWFnZVRhcmdldC5n
ZXQoKSk7CiAgICAgR3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dCgmcGxhdGZvcm1Db250ZXh0
LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkp
OwogCi0gICAgZHJhdyhsb2NhbENvbnRleHQsIHJlY3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3Vy
Y2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgIGRyYXcobG9jYWxDb250ZXh0LCByZWN0
KCksIHJlY3QoKSwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29k
aW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOwogCiAgICAgcmV0
dXJuIG5hdGl2ZUltYWdlOwogfQpAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRy
YXdQYXR0ZXJuRm9yQ29udGFpbmVyKEcKICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwg
ZHN0UmVjdCwgc2NhbGVkU3JjUmVjdCwgdW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwg
c3BhY2luZywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBT
VkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24pCitJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVu
ZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICBpZiAoIW1fcGFn
ZSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCShyZXZpc2lvbiAyNDg2NDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
OTQsNyArOTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRBbmltYXRpb25UaW1lckZpcmVk
KCk7CiAKICAgICBleHBsaWNpdCBTVkdJbWFnZShJbWFnZU9ic2VydmVyJik7Ci0gICAgSW1hZ2VE
cmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBmcm9tUmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0b1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUs
IERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBmaW5hbDsKKyAgICBJ
bWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGZy
b21SZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBmaW5hbDsKICAgICBJbWFnZURy
YXdSZXN1bHQgZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNp
emUgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFs
RnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKICAgICB2b2lkIGRyYXdQYXR0
ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFp
bmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRV
UkwsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywKICAgICAgICAg
Q29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYsIEJsZW5kTW9kZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5l
ci5jcHAJKHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAg
RmxvYXRTaXplIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpzaXplKCkgYwogfQogCiBJbWFnZURyYXdS
ZXN1bHQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCi0gICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVj
b2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCisgICAgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJs
ZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQogewogICAgIHJldHVybiBt
X2ltYWdlLT5kcmF3Rm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV9jb250
YWluZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwgZHN0UmVjdCwgc3JjUmVjdCwgY29tcG9z
aXRlT3AsIGJsZW5kTW9kZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAkocmV2aXNpb24gMjQ4NjQxKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgICAgICBtX2ltYWdlLT5jb21wdXRl
SW50cmluc2ljRGltZW5zaW9ucyhpbnRyaW5zaWNXaWR0aCwgaW50cmluc2ljSGVpZ2h0LCBpbnRy
aW5zaWNSYXRpbyk7CiAgICAgfQogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24pIGZpbmFsOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7CiAKICAgICB2b2lk
IGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25z
dCBGbG9hdFNpemUmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBmaW5hbDsKIApJbmRl
eDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI0ODY0MSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDgtMTMgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBzaG91bGRSZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbiBzaG91bGQgYmUgYSB2YWx1ZSBpbiBJbWFnZU9yaWVudGF0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1NTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OmltYWdlUG9zaXRpb25J
bmZvcm1hdGlvbik6CisKIDIwMTktMDgtMTMgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBTd2l0Y2ggTlNVUkxT
ZXNzaW9uIG9uIHRvcCBuYXZpZ2F0aW9uIHRvIHByZXZhbGVudCByZXNvdXJjZSB3aXRoIHVzZXIg
aW50ZXJhY3Rpb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCShyZXZpc2lvbiAyNDg2NDEpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjYzOSw4ICsyNjM5LDcgQEAgc3RhdGljIHZvaWQgaW1hZ2VQb3NpdGlvbkluZm9ybWF0aW9uKFdl
YgogICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRv
IHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID0gcmVuZGVySW1hZ2Uuc2hvdWxkUmVzcGVj
dEltYWdlT3JpZW50YXRpb24oKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZSgqaW1h
Z2UsIEZsb2F0UmVjdCgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0
KCkpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50
YXRpb24pKTsKKyAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UmVj
dCgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpLCByZW5kZXJJ
bWFnZS5pbWFnZU9yaWVudGF0aW9uKCkpOwogICAgIGluZm8uaW1hZ2UgPSBzaGFyZWRCaXRtYXA7
CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>